微型计算机原理第二版课后答案.docx
《微型计算机原理第二版课后答案.docx》由会员分享,可在线阅读,更多相关《微型计算机原理第二版课后答案.docx(13页珍藏版)》请在冰豆网上搜索。
微型计算机原理第二版课后答案
第二章
2.将下列二进制数分别转换为十进制数和十六进制数。
(1)111010B
00111010B=3AH=3×16+10=58
(2)10111100.111B
10111100.1110B=BC.EH=11×16+12+14×16-1=188.875
(3)0.11011B
0.11011000B=0.D8H=13×16-1+8×16-2=0.84375
(4)11110.01B
00011110.0100B=1E.4H=16+14+4×16-1=30.25
6.选取字长n为8位(和16位两种情况),求下列十进制数的补码。
(1)X=-33
X=-33=-21H=-0100001B
[X]补=11011111
(2)Y=+33
Y=+33=21H=00100001B
[Y]补=00100001
(3)Z=-128=-10000000B
[Z]补=10000000(可直接写出)
或根据补码的定义[x]补=2n+x(mod2n)求解:
[Z]补=28-128=100000000B-10000000B=10000000B
[Z]补=28-128=256-128=128=10000000B
若字长n=16
则Z=-128=-000000010000000B
[Z]补=1111111110000000
(4)N=+127
[N]补=01111111
(5)A=-65
A=-65=-41H=-1000001B
[A]补=10111111
(6)B=+65
B=+65=+41H=+1000001B
[B]补=01000001
(7)C=-96
C=-96=-60H=-1100000B
[C]补=10100000
(8)D=+96
D=+96=+60H=+1100000B
[D]=01100000
8.设机器字长为8位,最高位为符号位,试对下列各式进行二进制补码运算,并判
断结果是否溢出。
(1)43+8
43=2BH=0101011B8=0001000B
[43]补=00101011B[8]补=00001000B
C7=0、C6=0OF=C7
C6=0无溢出
[43+8]补=00110011B
43+8=0110011B=33H=51结果正确
(3)60+90
60=3CH=0111100B90=5AH=1011010B
[60]补=00111100B[90]补=01011010B
C7=0、C6=1OF=C7
C6=1有溢出,结果错误。
(5)-33+(-37)
-33=-21H=-0100001B-37=-25H=-0100101B
[-33]补=11011111B[-37]补=11011011B
C7=1、C6=1OF=C7
C6=0无溢出
[-33+(-37)]补=10111010B
-33+(-37)=-1000110B=-46H=-70结果正确
(6)-90+(-70)
-90=-5AH=-1011010B-70=-46H=-1000110B
[-90]补=10100110B[-70]补=10111010B
C7=1、C6=0OF=C7
C6=1有溢出,结果错误。
12.试计算下列二进制数为无符号数、原码、反码、补码、8421BCD码时分别代表的数值大小。
若为非8421BCD码数时请指出。
二进制数码无符号数原码反码补码8421BCD码
(1)10001000B136-8-119-12088
(2)00101001B41+41+41+4129
(3)11001001B201-73-54-55非8421BCD码
(4)10010011B147-19-108-10993
14.设机器字长为32位,定点表示时,符号位1位,数值位31位;浮点表示时,阶
符1位,阶码5位,数符1位,尾数25位。
(1)定点原码整数表示时,最大正数是多少?
最小负数是多少?
最大正数是
最小负数是
。
(2)定点原码小数表示时,最大正数是多少?
最小负数是多少?
最大正数是
最小负数是
。
(3)浮点原码整数表示时,最大浮点数是多少?
最小浮点数是多少?
最大浮点正数是
最小浮点负数是
或
(参见教材P29)
即
第三章
9.什么是逻辑地址?
什么是物理地址?
若已知逻辑地址为BA00H:
A800H,试求物理地址。
通过段地址和偏移地址来表示的存储单元的地址称为逻辑地址(记为:
段地址:
偏移地址)。
CPU对存储器进行访问时实际寻址所使用的20位地址称为物理地址。
若已知逻辑地址为BA00H:
A800H,则物理地址为:
PA=BA00H×10H+A800H=C4800H
10.简述堆栈指针寄存器SP的功能及堆栈的操作过程。
堆栈指针寄存器SP用于保存当前的栈顶地址,在执行进栈和出栈操作时,段地址由堆栈段寄存器SS提供,段内偏移地址由堆栈指针寄存器SP提供。
每执行一次进栈操作时,系统先自动将SP的内容减2,即(SP)=(SP)-2,然后将进栈内容压入偏移地址为(SP)和(SP)+1单元;每执行一次出栈操作时,先将栈顶内容即偏移地址为(SP)和(SP)+1单元的内容弹出,然后系统自动将SP的内容加2,即(SP)=(SP)+2,使SP始终指向当前的栈顶地址。
第4章
1.指出下列指令中源操作数的寻址方式。
(1)MOVBX,2000H;立即数寻址方式
(2)MOVBX,[2000H];直接寻址方式
(3)MOVBX,[SI];寄存器间接寻址方式
(4)MOVBX,[SI+2000H];寄存器相对寻址方式
(5)MOV[BX+SI],AL;寄存器寻址方式
(6)ADDBX,[BX+DI+80];基址变址相对寻址方式
(7)MULBL;寄存器寻址方式(乘法指令,目的操作数隐含为AX)
(8)SUBAX,BX;寄存器寻址方式
(9)INAL,DX;端口间接寻址方式
(10)PUSHWORDPTR[BP+10H];寄存器相对寻址方式
(11)MOVCL,LENGTHVAR1;立即数寻址方式
(12)MOVBL,OFFSETVAR1;立即数寻址方式
2.指出下列指令是否正确,若不正确请说明原因。
(1)MOVDS,0100H;不正确,立即数不能直接传送给段寄存器
(3)XCHGAH,AL;正确
4.若(DS)=3000H,(BX)=2000H,(SI)=0100H。
(ES)=4000H,计算下列各指令中存储器操作数的物理地址。
(1)MOV[BX],AH
PA=(DS)×10H+(BX)
=30000H+2000H=32000H
(2)ADDAL,[BX+SI+1000H]
PA=(DS)×10H+(BX)+(SI)+1000H
=30000H+2000H+0100H+1000H=33100H
(3)MOVAL,[BX+SI]
PA=(DS)×10H+(BX)+(SI)
=30000H+2000H+0100H=32100H
(4)SUBAL,ES:
[BX]
PA=(ES)×10H+(BX)
=40000H+2000H=42000H
6.设(SP)=2000H,(AX)=3000H,(BX)=5000H,执行下列程序段后,问
SP=?
,(AX)=?
,(BX)=?
。
PUSHAX;SP=2000H-2=1FFEH
PUSHBX;SP=1FFEH-2=1FFCH
POPAX;SP=1FFCH+2=1FFEH
执行程序段后,(SP)=1FFEH,(AX)=5000H,(BX)=5000H。
8.分别执行下列指令后,试求AL的内容及各状态标志位的状态。
(1)MOVAL,19H
ADDAL,61H;AL←19H+61H=7AH
(AL)=7AH
OF=0,SF=0,ZF=0,AF=0,PF=0,CF=0
(2)MOVAL,19H
SUBAL,61H;AL←19H-61H=B8H
(AL)=B8H
OF=0,SF=1,ZF=0,AF=0,PF=1,CF=1
(3)MOVAL,5DH
ADDAL,0C6H;AL←5DH+C6H=23H
(AL)=23H
OF=0,SF=0,ZF=0,AF=1,PF=0,CF=1
(4)MOVAL,7EH
SUBAL,95H;AL←7EH-95H=E9H
(AL)=E9H
OF=1,SF=1,ZF=0,AF=0,PF=0,CF=1
第五章
3.有符号定义语句如下:
BUFFDB1,2,3,'123'
EBUFFDB0
LEQUEBUFF-BUFF
则L的值是多少?
L=6
6.对于下面的数据定义,各条MOV指令单独执行后,有关寄存器的内容是什么?
FLDBDB?
TABLEADW20DUP(?
)
TABLEBDB'ABCD'
(1)MOVAX,TYPEFLDB;(AX)=1
(2)MOVAX,TYPETABLEA;(AX)=2
(3)MOVCX,LENGTHTABLEA;(CX)=20
(4)MOVDX,SIZETABLEA;(DX)=40
(5)MOVCX,LENGTHTABLEB;(CX)=1