微机原理陈继红版部分答案

2019-08-03 10:56

第三章 8086/8088 指令系统和寻址方式 习题答案

3.1 总结计算机中十进制、二进制、八进制及十六进制数的书写形式。123D、0AFH、 77Q、1001110B 分别表示什么计数制的数?

答案:123D、0AFH、77Q、1001110B 分别表示十进制、十六进制、八进制、二进制。 3.2 字长为8 位、16 位二进制数的原码、补码表示的最大数和最小数分别是什么?

答案:8 位原码表示的最大数:(27-1)、8 位补码表示的最大数:(27-1)、8 位原码表示

的最小数:-(27-1)、8 位补码表示的最小数-27。

16 位原码表示的最大数:(215-1)、16 位补码表示的最大数:(215-1)、16 位原码表示的

最小数:-(215-1)、16 位补码表示的最小数-215。

3.3 把下列十进制数分别转换为二进制数和十六进制数。 (1)125 (2)255 (3)72 (4)5090

答案:(1) 125 二进制数:0111 1101B;十六进制数:7DH。 (2)255 二进制数:1111 1111B;十六进制数:0FFH。 (3)72 二进制数:0100 1000B;十六进制数:48H。

(4)5090 二进制数:0001 0011 1110 0010B;十六进制数:13E2H。 3.4 把下列无符号二进制数分别转换为十进制数和十六进制数。 (1)1111 0000 (2)1000 0000 (3)1111 1111 (4)0101 0101

答案:(1)1111 0000 十进制数:240D;十六进制数:0F0H。 (2)1000 0000 十进制数:128D;十六进制数:80H。 (3)1111 1111 十进制数:255D;十六进制数:0FFH。 (4)0101 0101 十进制数:85D;十六进制数:55H。

3.5 把下列无符号十六进制数分别转换为十进制数和二进制数。 (1)FF (2)ABCD (3)123 (4)FFFF

答案:(1)FF 十进制数:255D;二进制数;1111 1111B。

(2)ABCD 十进制数:43981D;二进制数;1010 1011 1100 1101B。 (3)123 十进制数:291D;二进制数;0001 0010 0011B。

(4)FFFF 十进制数:65535D;二进制数;1111 1111 1111 1111B。

3.6 分别用8 位二进制数和16 位二进制数写出下列十进制数的原码和补码。 (1)16 (2)-16 (3)+0 (4)-0 (5)127 (6)-128 (7)121 (8)-9 答案:

(1)16 8 位二进制数原码:0001 0000 补码:0001 0000;16 位二进制数原码:0000 0000 0001 0000 补码: 0000 0000 0001 0000。

(2)-16 8 位二进制数原码:1001 0000 补码:1111 0000;16 位二进制数原码:1000 0000 0001 0000 补码:1111 1111 1111 0000。

(3)+0 8 位二进制数原码:0000 0000 补码:0000 0000;16 位二进制数原码:0000 0000 0000 0000 补码:0000 0000 0000 0000。

(4)-0 8 位二进制数原码:1000 0000 补码:0000 0000;16 位二进制数原码:1000 0000 0000 0000 补码: 0000 0000 0000 0000。

(5)127 8 位二进制数原码:0111 1111 补码: 0111 1111;16 位二进制数原码:0000 0000 0111 1111 补码: 0000 0000 0111 1111。

(6)-128 8 位二进制数原码:无 补码: 1000 0000 ;16 位二进制数原码:1000 0000 1000 0000 补码:1111 1111 1000 0000。

26

(7)121 8 位二进制数原码:0111 1001 补码: 0111 1001;16 位二进制数原码:0000 0000 0111 1001 补码: 0000 0000 0111 1001。

(8)-9 8 位二进制数原码:1000 1001 补码:1111 0111;16 位二进制数原码:1000 0000 1000 1001 补码:1111 1111 1111 0111。 3.7 试实现下列转换。

(1)[X]原=10111110B,求[X]补 (2)[X]补=11110011B,求[-X]补 (3)[X]补=10111110B,求[X]原 (4)[X]补=10111110B,求[X]反 答案:(1) 1100 0010 (2) 0000 1101 (3) 1100 0010 (4) 1011 1101

3.8 假设两个二进制数A=01101010,B=10001100,试比较它们的大小。 (1)A、B 两数均为带符号的补码数 (2)A、B 两数均为无符号数 答案:(1)A、B 两数均为带符号的补码数:A>B (2)A、B 两数均为无符号数:A<B

3.9 下列各数均为十进制数,请用8 位二进制数补码计算下列各题,用十六进制数表示 其运算结果,并判断是否溢出,验证教材中所给的判断依据。 (1)90+71 (2)90-71 (3)-90-71 (4)-90+71 (5)-90-(-71) 答案:(1)90+71=161>127 溢出

[90]补+[71]补=0101 1010+0100 0111=1010 0001=0A1H=[-91]补 (2)90-71=19<127 无溢出

[90]补+[-71]补=0101 1010+1011 1001=0001 0011=13H=[19]补 (3)-90-71=-161<-128 溢出

[-90]补+[-71]补=1010 0110+1011 1001=0101 1111=5FH=[95]补 (4)-90+71=-19>-128 无溢出

[-90]补+[71]补=1010 0110+0100 0111=1110 1101=0EDH=[-19]补 (5)-90-(-71)=-19>-128 无溢出

[-90]补+[71]补=1010 0110+0100 0111=1110 1101=0EDH=[-19]补 3.10 完成下列8 位二进制数的逻辑运算。

(1)11001100∧10101010 (2)11001100∨10101010 (3)11001100⊕10101010 (4)10101100∧10101100 (5)10101100⊕10101100 (6)10101100∨10101100 (7)10101100

答案:(1)11001100∧10101010=1000 1000 (2)11001100∨10101010=1110 1110 (3)11001100⊕10101010=0110 0110 (4)10101100∧10101100=1010 1100 (5)10101100⊕10101100=0000 0000 (6)10101100∨10101100=1010 1100 (7)10101100=0101 0011

3.11 以下均为2 位十六进制数,试说明当把它们分别看作无符号数或字符的ASCII 码 值,它们所表示的十进制数和字符是什么? (1)30H (2)39H (3)42H (4)62H (5)20H (6)7H

答案:(1)30H 所表示的十进制数是:48D;字符是:0。 (2)39H 所表示的十进制数是:57D;字符是:9。 (3)42H 所表示的十进制数是:66D;字符是:B。 (4)62H 所表示的十进制数是:98D;字符是:b。

(5)20H 所表示的十进制数是:32D;字符是:sp 空格。 (6)7H 所表示的十进制数是:7D;字符是:BEL 报警。

3.12 把以下十进制数分别以压缩BCD 码、非压缩BCD 码、ASCII 码串表示。

26

(1)2 (2)78

答案:(1)2 压缩BCD 码:0010、非压缩BCD 码:0000 0010、ASCII 码:011 0010

(2)78 压缩BCD 码:0111 1000、非压缩BCD 码:0000 0111 0000 1000、ASCII 码:0110111 011100

3.13 设浮点数格式如下图所示:

阶码、尾数均以补码表示,基数为2,求:+25.6 和-361.25 的规格化浮点数。 答案:1) +25.6D=11001.1001100110B=0.110011001100110×25

+5=0101B,补码:0101,尾数:[ 0.110011001100110]补=0.110011001100110 规格化浮点数:0 0000101 0 110011001100110

2) -361.25D=-101101001.01B=29×(-0.101101001010000)

+9=1001,补码:1001,尾数:[ -0.101101001010000]补=1.010010110110000 规格化浮点数:0 0001001 1 010010110110000

3.14 设某计算机用12 位表示一个浮点数,该浮点数从高位到低位依次为:阶符1 位、 阶码3 位(原码表示)、数符1 位、尾数7 位(补码表示),则0 100 1 0110011 的真值是多少? 答案:-9.625

3.15 8086 汇编语言指令的寻址方式有哪几类?哪种寻址方式的指令执行速度最快?

解:寻址方式分为:立即数寻址方式、寄存器操作数寻址方式和存储器操作数寻址方式。 其中,寄存器操作数寻址方式的指令执行速度最快。

3.16 在直接寻址方式中,一般只指出操作数的偏移地址,那么,段地址如何确定?如果要用 某个段寄存器指出段地址,指令中应该如何表示?

解:默认的数据访问,操作数在DS 段;堆栈操作在SS 段;串操作源操作数(SI)在DS

段,目的操作数(DI)在ES 段;用BP 作为指针在SS 段。如果要显式地指定段地址,则在操作 数中规定段寄存器。例如: MOV AX, ES:(BX+10H)

3.17 8086 系统中,设DS=1000H,ES=2000H,SS=1200H,BX=0300H,SI=0200H, BP=0100H,VAR 的偏移量为0600H,请指出下列指令的目标操作数的寻址方式,若目 标操作数为存储器操作数,计算它们的物理地址。 (1)MOV BX,12 ;目标操作数为寄存器寻址

(2)MOV [BX],12 ;目标操作数为寄存器间址 PA=10300H

(3)MOV ES:[SI],AX ;目标操作数为寄存器间址 PA=20200H (4)MOV VAR,8 ;目标操作数为存储器直接寻址 PA=10600H

(5)MOV [BX][SI],AX ;目标操作数为基址加变址寻址 PA=10500H

(6)MOV 6[BP][SI],AL ;目标操作数为相对的基址加变址寻址 PA=12306H (7)MOV [1000H],DX ;目标操作数为存储器直接寻址 PA=11000H (8)MOV 6[BX],CX ;目标操作数为寄存器相对寻址 PA=10306H (9)MOV VAR+5,AX ;目标操作数为存储器直接寻址 PA=10605H

3.18 下面这些指令中哪些是正确的?那些是错误的?如果是错误的,请说明原因。 (1)XCHG CS,AX ;错,CS 不能参与交换 (2)MOV [BX],[1000] ;错,存储器之不能交换 (3)XCHG BX,IP ;错,IP 不能参与交换

(4)PUSH CS ;错,CS 不能为PUSH 的操作数 (5)POP CS ;错,不能将数据弹到CS 中 (6)IN BX,DX ;输入/输出只能通过AL/AX

(7)MOV BYTE[BX],1000 ;1000 大于255,不能装入字节单元

26

(8)MOV CS,[1000] ;CS 不能作为目标寄存器

(9)MOV BX,OFFSET VAR[SI] ;OFFSET 只能取变量的偏移地址 (10)MOV AX,[SI][DI] ;SI、DI 不能成为基址加变址

(11)MOV COUNT[BX][SI],ES:AX ;AX 是寄存器,不能加段前缀 3.19 试述以下指令的区别:

⑴ MOV AX,3000H 与 MOV AX,[3000H]

答案:⑴ MOV AX,3000H 指令源操作数的寻址方式为立即寻址方式,指令执行结果为: (AX)=3000H。 而MOV AX,[3000H]指令源操作数的寻址方式为直接寻址方式,指令执行结 果为:DS:3000H)_AX。

⑵ MOV AX,MEM 与 MOV AX,OFFSET MEM

答案:⑵ MOV AX,MEM 指令源操作数的寻址方式为直接寻址方式,指令执行结果为: DS:MEM)_AX。 而MOV AX,OFFSET MEM 指令的执行结果是把MEM 的偏移量送AX。 ⑶ MOV AX,MEM 与 LEA AX,MEM

答案:⑶ MOV AX,MEM 指令的执行结果是?DS:MEM)_AX。 而LEA AX,MEM 的执行结果是把MEM 的偏移量送AX。 (4) JMP SHORT L1 与 JMP NEAR PTR L1

答案:JMP SHORT L1 为段内无条件短程转移,跳转的范围不得超过带符号的8 位二进 制数表示的字节范围;JMP NEAR PTR L1 为段内无条件近程转移,跳转的范围不得超过带 符号的16 位二进制数表示的字节范围。 (5) CMP DX,CX 与 SUB DX ,CX

答案:CMP DX,CX 是比较,也是利用减法比较,但是dx 中的值不变,标志寄存器改 变。SUB DX ,CX 是做减法运算,dx 中为减后的值,标志寄存器改变 (6)MOV [BP][SI],CL 与 MOV DS:[ BP][SI],CL

答案:BP 默认的段基址是SS,物理地址PA=SS+BP+SI;第二个重定义为DS 段基址, 物理地址PA=DS+BP+SI

3.20 设DS=2100H,SS=5200H,BX=1400H,BP=6200H,说明下面两条指令所进行的 具体操作:

MOV BYTE PTR [BP], 20H MOV WORD PTR [BX], 20H

解:前一条指令是把立即数20H,传送至堆栈段(BP 的默认段)偏移量由BP 规定的字节单 元,地址为:52000H+6200H=58200H

第二条指令是把立即数20H,传送至数据段(BX 的默认段)偏移量由BX 规定的字单元,地 址为:21000H+1400H = 22400H。

3.21 设当前 SS=2010H,SP=FE00H,BX=3457H,计算当前栈顶的地址为多少?当执 行 PUSH BX 指令后,栈顶地址和栈顶2 个字节的内容分别是什么? 答案:当前栈顶的地址=2FF00H

当执行PUSH BX 指令后,栈顶地址=2FEFEH (2FEFEH)=57H (2FEFFH)=34H

3.22 设DX=78C5H,CL=5,CF=1,确定下列各条指令执行后,DX 和CF 中的值。 (1) SHR DX,1 ;DX=3C62H CF=1 (2) SAR DX,CL ;DX=03C6H CF=0 (3) SHL DX,CL ;DX=18A0H CF=1 (4) ROR DX,CL ;DX=2BC6H CF=0

26

(5) RCL DX,CL ;DX=18B7H CF=1 (6) RCR DH,1 ;DX=BCC5H CF=0

3.23 设AX=0A69H,VALUE 字变量中存放的内容为1927H,写出下列各条指令执行 后寄存器和CF、ZF、OF、SF、PF 的值。 AX CF ZF OF SF PF

(1)XOR AX,VALUE ; 134EH 0 0 0 0 1 (2)AND AX,VALUE ; 0821H 0 0 0 0 1 (3)SUB AX,VALUE ; F142H 1 0 0 1 1 (4)CMP AX,VALUE ; 0A69H 1 0 0 1 1 (5)NOT AX ; F596H X X X X X

(6)TEST AX,VALUE ; 0A69H 0 0 0 0 1

3.24 设AX 和BX 中是符号数,CX 和DX 是无符号数,请分别为下列各项确定CMP 和条件转移指令。 CX 值超过DX 转移。 AX 未超过BX 转移。 DX 为0 转移。

CX 值等于小于DX 转移。 答案:

(1) CMP CX,DX JA NEXT

(2) CMP AX,BX JLE NEXT

(3) CMP DX,0 JZ NEXT

(4) CMP CX,DX JBE NEXT

3.25 阅读分析下列指令序列: ADD AX,BX JNO L1 JNC L2

SUB AX,BX JNC L3 JNO L4 JMP L5

若AX 和BX 的初值分别为以下5 种情况,则执行该指令序列后,程序将分别转向何处 (L1~L5 中的一个)。 AX=13C6H, BX=80DCH AX=0B568H,BX=54B7H AX=42C8H, BX=608DH AX=0D023H,BX=9FD0H AX=9FD0H, BX=0D023H

答案:(1)转L1:不溢出,转移到L1 处; (2)转L1:不溢出,转移到L1 处;

(3)转L2:溢出,不转移到L1 处,进位CF=0,转移到L2 处;

26


微机原理陈继红版部分答案.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:提升学生学习力,推动学生学习可持续发展

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: