微计算机原理部分习题答案16章.docx
《微计算机原理部分习题答案16章.docx》由会员分享,可在线阅读,更多相关《微计算机原理部分习题答案16章.docx(43页珍藏版)》请在冰点文库上搜索。
微计算机原理部分习题答案16章
习题答案
1-1解释和区别下列名词术语。
(1).微处理器μP,微计算机μC,微处理器系统μPS。
(5).位、字节、字和双字。
(7).RAM和ROM
(8).I/O接口和I/O设备。
(9).芯片总线、片总线、内总线和外总线。
答:
(1).把CPU的复杂电路,包括运算器和控制器作在一片或几片大规模集成电路的半导体芯片上,这种集成电路叫微处理器μP。
微处理器为核心,配上RAM、ROM,I/O接口及有关辅助电路组成的微型化的主计算机装置称为微计算机μC。
微处理器为核心构成的专用系统称为微处理器系统μPS。
(5)一个二进制的位称作位、8个相邻二进制位称作字节、2个字节称作字,2个字(4个字节)称作双字。
(7)能进行随即读写操作的存储器称作RAM。
只读存储器叫ROM。
(8)输入/输出接口电路称作I/O接口,通过I/O接口接入的外部设备如监视器,键盘、鼠标称作I/O设备。
(9)位于CPU芯片内部,用来实现CPU内部各功能单元电路之间的相互连接和信号的传递的总线叫芯片总线。
片总线是微计算机主板或单板微计算机上以CPU芯片为核心,芯片与芯片间连接的总线。
内总线指微计算机系统中实现插件板之间的连接的总线。
如IBMPC的PC总线,PC-XT总线,PCI、ISA总线等等。
外总线用于系统之间的连接,完成系统与系统之间通信的总线。
如RS-232,IEE488、USB等等。
1-6将下列十进制数转换为二进制数、十六进制数和BCD数
(1)124.625
(6)268.875
解:
(1)124=01111100B=7CH,0.625×16=10,所以0.625=0.AH=0.1010B
∴124.625=7C.AH=01111100.1010B=000100100100.011000100101BCD
(2)268=256+12=100001100B=10CH,0.875×16=14,∴0.875=0.EH=0.1110B.
∴268.875=10C.EH=100001100.111B=001001101000.100001110101BCD
1-7用16位二进制数表示出下列十进制数的原码、反码和补码。
(1)+128
(4)-5
解:
(1)+128的原码和补码反码均为0000000100000000B
(4)-5的原码为1000000000000101B,反码为1111111111111010B,补码为1111111111111011B。
1-9写出系列字母、符号的ASCII码
(1)B
(2)H(3)SP(空格)(4)5(5)$(6)CR(回车符)(7)LF(换行)
解:
(1)42H、
(2)48H、(3)20H、(4)35H、(5)24H、(6)0DH、(7)0AH
1-10试绘出以下十六进制数在内存中存放的示意图。
设存放地址均为00H。
解:
(1)F7H
(2)03BAH(3)C804326BH(4)1122334455667788H
2-1请将左边的术语和右边的含义联系起来,在括号中填入你选择的代号字母:
1.字长(i)a.指由8个二进制位组成的通用基本单元。
2.字节(a)b.是CPU执行指令的时间刻度。
3.指令(h)c.μPS所能访问的存储单元数,与CPU地址总线条数有关。
4.基本指令执行周期(g)d.唯一能代表存储空间每个字节单元的地址,用5位十六进制数表示。
5.指令执行时间(j)e.CPU访问1次存储器或I/O操作所花的时间。
6.时钟周期(b)f.由段基址和偏移地址两部分组成,均用4位十六进制数表示。
7.总线周期(e)g..指寄存器加法指令执行所花时间。
8.Cache(k)h.完成操作的命令。
9.虚拟存储器(l)i.指μP在交换,加工,存放信息时信息的基本长度。
10.访存空间(c)j.各条指令执行所花的时间不同,不同指令,该值不一。
11.实际地址(d)k.为缓解CPU与主存储器间交换数据的速度瓶颈而建立的高速存储器。
12.逻辑地址(f)l.CPU执行程序时看到的一个速度接近内存却具有外存容量的假想存储器。
2-2下面列出计算机中常用的一些单位,试指出其用途和含义。
(1)MIPS
(2)KB(3)MB(4)GB(5)TB
解:
(1)MIPS用来表示计算机运行的速度。
1MIPS=1百万条指令/秒。
(2)KB用来表示计算机访存空间大小。
1KB=1024(210)B(字节)
(3)MB用来表示计算机访存空间大小。
1MB=1048576(220)B(字节)
(4)GB用来表示计算机访存空间大小。
1GB=1024M(230)B(字节)
(5)TB用来表示计算机访存空间大小。
1TB=1024G(240)B(字节)
2-4试将左边的标志和右边的功能联系起来。
要求:
(1)在括号中填入右边功能的代号;
(2)填写其类型(属状态标志者填S:
属控制标志者填C)。
(3)写出各标志为0时表示的状态。
标志
类型
为0时表示的状态
1.SF(b)a.陷阱标志
2.CF(d)b.符号标志
3.AF(h)C.溢出标志
4.DF(i)d.进位标志
5.TF(a)e.零标志
6.OF(c)f.奇偶标志
7.PF(f)g.中断标志
8.IF(g)h.辅助进位标志
9.ZF(e)i.方向标志
S
S
S
C
C
S
S
C
S
带符号数为正数
结果最高位无进位(借位)
低4位无进位(借位)
串操作步进方向为地址递增
8086正常执行程序
带符号数运算未产生溢出
运算结构由奇数个1
CPU关闭中断
运算结果不为0
2-6试画出8086/8088的寄存器结构,并说出它们的主要用途。
解:
AX、BX、CX、DX用作数据寄存器,用作存放操作数、中间结果。
SP堆栈指针、BP基址指针、SI源变趾、DI目的变趾。
IP指令指针,FH控制标志、FL状态标志。
CS存储代码段首趾、DS存储数据段首趾、SS存储堆栈段首趾、ES附加数据段首趾。
AH
AL
AX
BH
BL
BX
CH
CL
CX
DH
DL
DX
SP
BP
SI
DI
IP
FH
FL
CS
DS
SS
ES
2-8若一个程序段开始执行之前,(CS)=97F0H,(IP)=1B40H,试问该程序段启动执行指令的实际地址是什么?
解:
启动执行指令的实际地址PA=97F0H×10H+1B40H=99A40H
2-9若堆栈段寄存器(SS)=3A50H,堆栈指针(SP)=1500H,试问这时堆栈顶的实际地址是什么?
解:
栈顶的实际地址=(SS)×10H+(SP)=3A50H×10H+1500H=3BA00H
2-11将8086下列工作方式的特点填于表中。
解:
特点
方式
MN/MX
处理器个数
总线控制信号的产生
最小方式
接+5V
1个
全部由8086产生
最大方式
接地
可达3个
总线控制器8288产生
2-13有一32位的地址指针67ABH:
2D34H存放在00230开始的存储器中,试画出它们的存放示意图。
解:
示意图如下
地址
内容
类型
00230
34H
偏移量
00231
2DH
00232
ABH
段基址
00233
67H
2-21列表填写8086/8088的存储器和I/O的保留空间及其用途:
解:
8086/8088
保留空间
用途
存储器
00000H~0007FH
FFFF0H~FFFFFH
中断向量表
系统复位启动
I/O
F8H~FFH
Intel保留使用
3-1指令由操作码字段和操作数字段组成。
8086的指令长度在1~6个字节范围。
3-2分别指出下列指令中源操作数和目的操作数的寻址方式。
若是存储器寻址,试用表达式表示出EA=?
PA=?
(1)MOVSI,2100H(4)ADCAX,[BX][SI](7)MOVAX,ES:
[BX]
解
(1)源操作数是立即数寻址,目的操作数是寄存器寻址。
(4)源操作数是基址变趾寻址,EA=(BX)+(SI),PA=16×(DS)+(BX)+(SI),
目的操作数是寄存器寻址。
(7)源操作数是寄存器间接寻址,其中EA=(BX),PA=16×(ES)+(BX),
目的操作数是寄存器寻址。
3-3已知8086中一些寄存器的内容和一些存储单元的内容如图3-20所示,试指出下列指令执行后,AX中的内容(即(AX)=?
)。
(1)MOVAX,2010H
(2)MOVAX,BX
(3)MOVAX,[1200H]
(4)MOVAX,[BX]
(5)MOVAX,1100H[BX]
(6)MOVAX,[BX][SI]
(7)MOVAX,1100H[BX+SI]
(8)LEAAX,[SI]
解:
(1)(AX)=2010H
(2)(AX)=0100H(3)(AX)=4C2AH(4)(AX)=3412H
(5)(AX)=4C2AH(6)(AX)=7856H(7)(AX)=65B7H(8)(AX)=0002H
3-4
已知(AX)=2040H,(DX)=380H,端口(PORT)=(80H)=1FH,(PORT+1)=45H,
执行下列指令后,指出结果等于?
解:
(1)OUTDX,AL;端口(DX)=40H
(2)OUTDX,AX;端口(DX)=40H,(DX+1)=20H
(3)INAL,PORT;(AL)=1FH
(4)INAX,80H;(AX)=451FH
(5)OUTPORT1,AL;端口(PORT1)=40H
(6)OUTPORT1,AX;端口(PORT1)=40H
端口(PORT1+1)=20H
3-5已知:
(SS)=0A2F0H,(SP)=00C0H,(AX)=8B31H,(CX)=0F213H,试画出下列指令执行到位置1和位置2时堆栈区和SP指针内容的变化示意图。
图中应标出存储单元的实际地址PA。
PUSHAX
PUSHCX;位置1
POPF;位置2
3-7已知存储器数据段中的数据如图3-21所示。
阅读下列两个程序段后,回答:
1.每个程序段的运行结果是什么?
2.两个程序段各占多少字节的内存,执行时间是多少?
解:
(1)LEASI,NUM1;4-2T+6T
MOVAX,[SI];2-10T
ADDAX,4[SI];3-9T+9T
MOV8[SI],AX;3-10T
ADDSI,2;3-4T
MOVAX,[SI];2-10T
ADCAX,4[SI];3-9T+9T
MOV8[SI],AX;3-10T
总计23个字节,84个时钟周期运行结果如图中SUM所示。
(2)
MOVAX,NUM1;3-10T
ADDAX,NUM2;4-9T=6T
MOVSUM,AX;3-10T
MOVAX,NUM1+2;3-10T
ADCAX,NUM2+2;4-9T+6T
MOVSUM+2,AX;3-10T
总计20个字节,70个时钟周期。
可见
1.两个程序运行结果相同。
2.第二个程序占20个字节,比前者少3个字节,运行时间比前者少14个时钟周期。
3-11已知数据如图3-21所示,低位在前,按下列要求编写程序段:
1.NUM1和NUM2两个字数据相乘(均为无符号数),乘积放在SUM开始的单元。
解:
MOVAX,NUM1
MULWORDPTRNUM2
MOVSUM,AX
MOVSUM+2,DX
2.NUM1和NUM2两个字数据相乘(均为带符号数),乘积放在SUM开始的单元。
解:
MOVAX,NUM1
IMULWORDPTRNUM2
MOVSUM,AX
MOVSUM+2,DX
3.NUM1单元的字节数据除以13(均为无符号数),商和余数依次放入SUM开始的两个字单元。
解:
MOVAL,NUM1
MOVAH,0
MOVCL,13
DIVCL
MOVSUM,AX
4.NUM1字单元的字数据除以NUM2字单元的字,商和余数依次放入SUM开始的两个字单元。
MOVAX,NUM1
MOVDX,0
MOVCX,NUM2
DIVCX
MOVSUM,AX
MOVSUM+2,DX
3-13已知(AL)=0C4H,DATA单元中内容为5AH,写出下列每条指令单独执行后的结果。
1ANDAL,DATA;(AL)=40H
2ORAL,DATA;(AL)=0DEH
3XORAL,DATA;(AL)=9EH
4NOTDATA;(DATA)=0A5H
5ANDAL,0FH;(AL)=04H
6ORAL,01H;(AL)=0C5H
7XORAL,0FFH;(AL)=3BH
8TESTAL,80H;(AL)=0C4H
所有指令执行后都对标志寄存器有影响。
3-19写出下面指令序列完成的数学计算是什么?
解:
MOVCL,3;(CL)←3
SHLAX,CL;(AX)←(AX)×8
SHLBL,CL;(BL)←(BL)×8
SHLCX,CL;(CX)←(CX)×8,此时(CL)=18H
SHLDH,CL;DH算术左移24位后(DH)=0,CF=0
3-20写出能替代下列重复操作指令完成同样功能的的指令序列
1.REPMOVSW2.REPCMPSB
3.REPSCASB4.REPLODSW
解:
1AGAIN:
MOVSW3AGAIN:
SCASB
DECCXDECCX
JNZAGAINNJNZAGAIN
2AGAIN:
CMPSB4AGAIN:
LODSW
DECCXDECCX
JNZAGAINJNZAGAIN
3-23下面两条短转移指令的转移地址ADDR1和ADDR2分别是多少(用十六进制表示)?
1.0220EB0AJMPADDR1
2.0230EBF7JMPADDR2
解:
JMPADDR1的下一条指令的地址偏移为0222H,0222H+0AH=022CH。
∴ADDR1地址偏移量为022CH。
JMPADDR2下一条指令的地址偏移量为0232H,0232H+0FFF7H=0229H。
∴ADDR2地址偏移量为0229H。
3-27试编写一个程序段,能完成下列数学表达式的功能。
-1(X≤-1)
X=0(-11(X≥1)
解:
设带符号数(WORD)在AX中,程序段如下
GETX:
TESTAX,AX
JNSTZERO
MOVAX,0FFFFH
JMPTEND
TZERO:
JZTEND
MOVAX,1
TEND:
RET
3-288086的中断机构中共允许256级中断,其专用中断有5个,分别为类型0中断(除数为0的中断)、类型1中断(单步中断)、类型2中断(非屏蔽中断NMI)、类型3中断(断点中断)和类型4中断(溢出中断)。
3-30用DOS功能调用编写一个程序,能将3-17题中的结果在屏幕上显示出来。
解:
MOVCL,4
MOVAL,87H
MOVBL,AL
SHRBL,CL
ANDAL,0FH
ORAL,30H
MOVDL,AL
MOVAH,2
INT21H
ANDBL,0FH
ORBL,30H
MOVDL,BL
INT21H
4-2计算下列表达式的值(设A1=50,B1=20,G1=2)
解:
1.A1*100+B1=50*100+20=5020
2.A1MODG1+B1=50MOD2+20=20
3.(A1+2)*B1-2=(50+2)*20-2=1038
4.B1/3MOD5=20/3MOD5=1
5.(A1+3)*(B1MODG1)=(50+3)*(20MOD2)=0
6.A1GEG1=50GE2=11111111B
7.B1AND7=20AND7=4
8.B1SHL2+G1SHR1=20SHL2+2SHR1=81
4-3已知数据段定义如下,设该段从03000H开始:
DSEGSEGMENT
ARRAY1DB2DUP(0,1,?
)
ARRAY2DW100DUP(?
)
FHZEQU20H
ARRAY3DB10DUP(0,1,4DUP
(2),5)
DSEGENDS
试用分析算符OFFSET,LENGTH,SIZE,SEG,TYPE求出ARRAY1,ARRAY2,ARRAY3的段、偏移量和类型,以及它们的LENGTH和SIZE。
解:
求段:
SEGARRAY1=0300H
SEGARRAY2=0300H
SEGARRAY3=0300H
求偏移量:
OFFSETARRAY1=0000H
OFFSETARRAY2=0006H
OFFSETARRAY3=00EEH
求类型:
TYPEARRAY1=1
TYPEARRAY2=2
TYPEARRAY3=1
求LENGTH:
LENGTHARRAY1=6
LENGTHARRAY2=100
LENGTHARRAY3=70
求SIZE:
SIZEARRAY1=6
SIZEARRAY2=200
SIZEARRAY3=70
4-7下述程序段执行后,寄存器CX,SI的内容是多少?
ARRYDW20DUP(5)
┆
XORAX,AX
MOVCX,LENGTHARRY
MOVSI,SIZEARRY-TYPEARRY
解:
(CX)=20
(SI)=40-2=38
4-8试定义一个结构,它应包括一个学生的下列信息:
姓名、学号及三门课程的成绩。
然后给出3条结构预置语句,将3个学生的情况送入3个结构变量中。
解:
DATASEGMENT
STUDENTSTRUC
NAMEDB4DUP(?
)
NODB?
ENGDB?
MATDB?
PHYDB?
STUDENTENDS
S1STUDENT<‘ZHAN’,20H,78H,95H,80H>
S2STUDENT<‘WANG’,21H,88H,91H,90H>
S3STUDENT<‘LILI’,22H,79H,75H,70H>
DATAENDS
4-9试定义一条宏指令,它可以实现任一数据块的传送(假设无地址重叠),源地址、目的地址和块长度作为参数处理。
MOVDATAMACROSN,DN,CN,PN
MOVAL,PN
CLD
TESTAL,#80H
JZCONT
STD
CONT:
MOVSI,OFFSETSN
MOVDI,OFFSETDN
MOVCX,CN
REPMOVSDN,SN
ENDM
4-10设VAR1和VAR2为字变量,LAB为标号,试指出下列指令的错误,并改正之。
(1)ADDVAR1,VAR2
(2)SUBAL,VAR1(3)JMPLAB[SI]
(4)JNZVAR1(5)JMPNEARLAB(6)MOVAL,VAR2
解:
(1)MOVAX,VAR1
(2)MOVAH,0(3)JMPOFFSETLAB[SI]
ADDAX,VAR2SUBAX,VAR1
(4)MOVSI,VAR1(5)JMPNEARPTRLAB(6)MOVAX,VAR2
JNZTARGET
……
TARGET:
JMP[SI]
4-11已知数据定义如下,问L1和L2等于多少?
B1DB1,2,3,’123’
B2DB0
L1EQU$-B1
L2EQUB2-B1
解:
$=7,∴$-B1=7-0=7
即L1等于7
L2=B2的偏移地址6-B1的偏移地址0=6
4-15用查表法将存放于数据段中的一个有序的十六进制数串(范围:
0~FH)翻译成ASCII码表仍放于数据段中。
解:
DATASEGMENT
XDHEXDB0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
TBASCIIDB‘0123456789ABCDEF’
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
MAINPROCFAR
START:
PUSHDS
MOVAX,0
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVCX,16
MOVSI,OFFSETXDHEX
MOVBX,OFFSETTBASCII
MOVAH,0
AGAIN:
MOVAL,[SI]
MOVDI,AX
MOVAL,[BX+DI]
MOV[SI],AL
INCSI
LOOPAGAIN
RET
STARTENDP
CODEENDS
ENDSTART
4-16试编写一程序,把X和Y中的大者存于BIG单元,若X=Y,则把其中之一存入BIG单元。
解:
DATASEGMENT
XDW?
YDW?
BIGDW?
DATAENDS
;------------------------------
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
MAINPROCFAR
START:
PUSHDS
MOVAX,0
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVAX,X
CMPAX,Y
JNCSTOBIG;无符号数判断,有符号数用JGE
MOVAX,Y
STOBIG:
MOVBIG,AX
RET
STARTENDP
CODEENDS
ENDSTART
4-17试编写一程序,比较两个字符串STRING1和S