微机原理与接口技术(第3版)习题与答案 第3章_第1页
微机原理与接口技术(第3版)习题与答案 第3章_第2页
微机原理与接口技术(第3版)习题与答案 第3章_第3页
微机原理与接口技术(第3版)习题与答案 第3章_第4页
微机原理与接口技术(第3版)习题与答案 第3章_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微机原理与接口技术(第3版)习题答案第3章习题答案练习题13.1-1指出下列指令中源操作数和目的操作数的寻址方式。(1)MOVBX,20H (2)MOVAX,[1245H] (3)MOVDX,[SI](4)MOV100[BX],AL (5)MOV[BP][SI],AX (6)MOV[BX+100][SI],AX(7)MOV[1800H],AL (8)MOV[SI],AX【解答】目的操作数源操作数(1)寄存器寻址立即寻址(2)寄存器寻址直接寻址(3)寄存器寻址寄存器间接寻址(4)寄存器相对寻址寄存器寻址(5)基址加变址寻址寄存器寻址(6)相对基址加变址寻址寄存器寻址(7)直接寻址寄存器寻址(8)寄存器间接寻址寄存器寻址3.1-2(1)[AX] (2)[SI+DI] (3)BP (4)BH(5)DS (6)[BL+44] (7)[BX+BP+32] (8)[DX](9)[CX+90] (10)[BX*4] (11)BX+90H (12)SI[100H]【解答】(1)错误,AX不能用于寄存器间接寻址(2)错误,两个变址寄存器SI和DI不能同时用于表示内存单元的偏移地址(3)正确,寄存器寻址方式(4)正确,寄存器寻址方式(5)正确,寄存器寻址方式(6)错误,寄存器BL不能用于表示内存单元的偏移地址(7)错误,BX和BP都是基址寄存器,不能同时用于表示内存单元的偏移地址(8)错误,DX不能用于寄存器间接寻址(9)错误,CX不能用于表示内存单元的偏移地址(10)错误,16位寄存器不能乘以比例因子(11)错误,没有这样的寻址方式(12)错误,书写方式不对,应该写成100H[SI]3.1-3(1)MOVAL,[2500H] (2)MOVAX,[BP] (3)MOVAX,ES:[BP+10] (4)MOVAL,[BX+SI+20]【解答】源操作数属于直接寻址,物理地址=DS16+2500H=20000H+2500H=22500H;源操作数属于寄存器间接寻址,物理地址=SS16+BP=10100H+0200H=10300H源操作数属于寄存器相对寻址,物理地址=ES16+BP+10=10000H+0200H+0AH=1020AH源操作数属于基址加变址寻址,物理地址=DS16+BX+SI+20=20000H+0500H+1100H+14H=21614H练习题23.2-1判断下列指令的对错,如果错误请说明原因。(1)MOVCS,BX (2)MOVCH,SI (3)PUSHAL (4)MOVDX,[BX][BP](5)MOVCH,100H (6)XCHGBX,3 (7)PUSHCS (8)MOVAL,[BX][SI](9)PUSHCL (10)OUT3EBH,AL【解答】(1)CS不能赋值 (2)操作数类型/长度不匹配(3)PUSH指令的操作数必须是字 (4)寻址方式错误,BP需要与SS配合使用(5)100H超出了CH表示的范围 (6)交换指令的操作数不能是立即数(7)正确 (8)正确(9)错误,PUSH指令的操作数应该是字类型的 (10)错误,端口地址大于0FFH时,应用DX间接寻址3.2-2给出MOV指令执行后的结果,设有关寄存器及存储单元内容如下:DS

=

2000H,78H,(22104H)

=

9AH,(22105H)

=

BCH,(20100H)

=

1AH,(20101H)

=

2BH,(20103H)

=

3CH,(20104H)

=4DH,(20105H)

=

5EH,(20106H)

=

6FH。(1)MOVAX,ES:[BX][SI] (2)MOVAX,BX (3)MOVAX,[BX](4)MOVAX,[BX+SI] (5)MOVAX,[BX+SI+1]【解答】(1)物理地址=2200H16+0100H+0004H=22104H,所以AX=0BC9AH;(2)AX=BX=0100H;(3)物理地址=2000H16+0100H=20100H,所以AX=2B1AH;(4)物理地址=2000H16+0100H+0004H=20104H,所以AX=5E4DH;(5)物理地址=2000H16+0100H+0004H+01=20105H,所以AX=6F5EH;3.2-3假定SS=1000H,SP=0100H,AX=2107H,执行指令“PUSHAX”后,存放数据07H的存储单元物理地址是。【解答】100FEH执行“PUSHAX”指令后SP=00FEH,其中偏移地址为00FFH的单元存放的是21H,偏移地址为00FEH的单元存放的是07H,其物理地址为SP16+00FFH=100FEH。3.2-4已知AX=1020H,DX=3080H,端口地址PORT=41H,设有关端口内容如下:(40H)=6EH,(41H)=22H,指出下列各条指令执行的结果。(1)INAL,PORT;AL

=

______ (2)INAX,40H;AX

=

______(3)OUTDX,AL;(DX)

=

______ (4)OUTDX,AX;(DX)

=

_______【解答】(1)AL=22H; (2)AX=226EH; (3)(DX)=6EH; (4)(DX)=226EH(如果4条指令有先后顺序)(1)AL=22H; (2)AX=226EH; (3)(DX)=20H; (4)(DX)=1020H(如果4条指令各自独立)3.2-5用一条指令实现把BX和SI之和传送给CX。【解答】LEACX,[BX+SI]3.2-6试比较下列3组指令的功能(1)LDS SI,[DI] (2)MOVSI,[DI] (3)MOVDS,[DI+2] MOVDS,[DI+2]

MOVSI,[DI]【解答】(1)相当于MOVSI,[DI]MOVDS,[DI+2](2)与(1)功能相同(3)第一条指令修改了DS的值,因此执行第二条指令后结果可能与(1)(2)不同。3.2-7指令“LDSSI,ES:[1000H]”的功能是()。A.把地址1000H送SIB.把地址为ES:[1000H]的字单元内容送SIC.把地址为ES:[1000H]的字单元内容送SI,把地址为ES:[1002H]的字单元内容送DSD.把地址为ES:[1000H]的字单元内容送DS,把地址为ES:[1002H]的字单元内容送SI【解答】C3.2-8在指令“POP[BX]”中,目的操作数的段地址和偏移地址分别在()。A.没有段地址和偏移地址 B.DS和BX中 C.ES和BX中 D.SS和BP中【解答】B练习题33.3-1判断下列指令的对错,如果错误请说明原因。(1)ADCAX,0ABH (2)MULAL,CL (3)MULAX,25(4)INC[SI] (5)ADD[BX],456H (6)DIVAX,BX(7)DEC

[BP] (8)ADDCX+1 (9)DAACX【解答】(1)正确(2)错误,MUL指令后面应该只有1个操作数(3)MUL指令后面应该只有1个操作数,且不能是立即数(4)错误,操作数[SI]的类型不明确,汇编程序不能确定其是8位还是16位的。可以改为:INCBYTEPTR[SI](5)错误,操作数[BX]的类型不明确,汇编程序不能确定其是8位还是16位的。可以改为:ADD WORDPTR[BX],456H(6)错误,除法指令和乘法指令类似,AX或DX,AX作为被除数是隐含的,指令中出现。改为DIVBX(7)错误,与第4题错误原因类似,还要注意BP寄存器间接寻址形成物理地址时,段寄存器是SS而不是DS,修改为:DECWORDPTR[BP]或者DECWORDPTRDS:[BP](8)错误,CX+1是完全错误的,因为:INCCX或ADDCX,1(9)错误,DAA指令的操作数是隐含的,不需要写出。3.3-2求出以下各十六进制数与62A0H之和,并根据结果判断标志SF,ZF和OF的值。(1)1234H (2)4321 H (3)CFA0H (4)9D60H【解答】(1)0110001010100000B(62A0H)+0001001000110100B(1234H)0111010011010100B(74D4H)SF=0,ZF=0,OF=00=0(2)0110001010100000B(62A0H)+0100001100100001B(4321H)1010010111000001B(A5C1H)SF=1,ZF=0,OF=01=1(3)0110001010100000B(62A0H)+1100111110100000B(CFA0H)10011001001000000B(3240H)SF=0,ZF=0,OF=11=0(4)0110001010100000B(62A0H)+1001110101100000B(9D60H)10000000000000000B(0000H)SF=0,ZF=1,OF=11=03.3-3无符号数扩展是否可以使用如下指令?为什么?(1)CBW指令 (2)CWD指令【解答】不可以,因为这两条指令都是针对带符号数的。CBW把AL的符号扩展到AH,CWD把AX的符号扩展到DX。如果AL=80H,执行CBW后,AX=0FF80H,显然不对。3.3-4若AL、BL中是压缩BCD码,且在执行“ADDAL,BL”之后,AL=0CH,CF=1,AF=0。再执行DAA后,AL的值为多少?【解答】AL=72H。执行“ADDAL,BL”之后,AL=0CH,CF=1,因此执行DAA应该加上66H进行调整,AL为72H,实际的BCD码相加结果是172(百位的1来自于CF中的进位)。3.3-5判断题(1)INC和DEC指令不影响状态标志。()(2)压缩BCD码和非压缩BCD码均有加法和减法调整指令。()(3)压缩BCD码和非压缩BCD码均有乘法和除法调整指令。()(4)DIV指令在执行8位除法时,运算后的商存放在AH中,余数存放在AL中。()【解答】(1)(错);(2)(对);(3)(错);(4)(错)。练习题43.4-1AND、OR、XOR、NOT为逻辑运算指令,下面解释有误的是()A.它们都是按位操作的B.“XORAX,AX”执行后,结果不变,但是影响状态标志C.“ANDAL,0FH”执行后,使AL的高4位清零,低4位不变D.若DL=09H,CH=30H,执行“ORDL,CL”后,结果为DL=39H【解答】B3.4-2将寄存器BX的内容求反,不正确的操作是()A.NOTBX B.XORBX,0FFFFH C.ANDBX,0FFFFH【解答】C3.4-3逻辑运算指令AND、OR、XOR、NOT中,指令对状态标志均没有影响,而其他3条指令除对标志SF、ZF、PF有影响外,还使和总是清零,AF不确定。【解答】NOT,CF,OF3.4-4如果要对一个字节或一个字数据求反,可以用指令,要对寄存器或存储单元内容中指定位求反则可以用指令。【解答】NOT,XOR3.4-5按要求编写下列指令序列(设最低位为第0位)。(1)把DL中的最低2位清零而不改变其他位;(2)把SI的最高3位置1而不改变其他位;(3)把AX中的第0~3位清零,第7~9位置1,第13~15位取反;(4)检查CX中的第1、3和5位中是否有一位为1;(5)检查BX中的第2、6和10位是否同时为1;(6)检查CX中的第1、3、5和7位中是否有一位为0;(7)检查BX中的第2、6、10和12位是否同时为0。【解答】(1)AND DL,0FCH ;11111100B(2)OR SI,0E000H ;1110000000000000B(3)AND AX,0FFF0H ;1111111111110000BOR AX,0380H ;0000001110000000BXOR AX,0E000H ;1110000000000000B(4)MOV AX,CXAND AX,002AH ;0000000000101010B如果运算结果不为0,表示第1、3、5位至少有一位为1(5)MOV AX,BXAND AX,0444H ;0000010001000100BXOR AX,0444H如果运算结果为0,表示第2、6、10位均为1或者ORAX,1111101110111011B如果运算结果为FFFFH,则表示第2、6、10位均为1(6)MOV AX,CXOR AX,0FF55H;1111111101010101B如果运算结果不为0FFFFH,表示第1、3、5、7中至少有一位为0(7)MOV AX,BXAND AX,1444H;0001010001000100B;如果运算结果为0,表示第2、6、10、12位均为0练习题53.5-18086的移位指令若需移位多位时,应该先将移位位数置于()中。A.AL B.AH C.CL D.CH【解答】C3.5-2对于算术左移指令“SALAL,1”,若AL中的有符号数在执行指令后符号有变化,可以通过()来确认。A.OF=1 B.OF=0 C.CF=1 D.CF=0【解答】A3.5-3AL的内容实现算术右移4位的正确指令是()。A.SHRAL,4 B.MOVCL,4 C.SARAL,4 D.MOVCL,4 SHRAL,CL SARAL,CL【解答】D3.5-4将BUF字节单元内容算术左移1位,以下指令不正确的是()。A.MOVBX,OFFSETBUF B.MOVBL,BUF

SAL

BX,1 SAL

BL,1C.SALBUF,1 D.LEABX,BUF SALBYTEPTR[BX],1【解答】A3.5-5选择适合的移位指令把十进制数+35和−41分别乘以2和除以2,结果分别是多少?【解答】;乘以2MOV AL,35 ;AL=00100011B/23HSHL AL,1 ;AL=46HMOV AL,-41 ;AL=0D7HSHL AL,1 ;AL=0AEH;除以2MOV AL,35SAR AL,1 ;AL=11HMOV AL,-41SAR AL,1 ;AL=0EBH本章习题3-1出以下指令序列中每条指令的执行结果,在DEBUG环境下进行验证,并注意各状态标志的变化情况。MOVBX,23ABHADDBL,0ACHMOVAX,23F5HADDBH,ALSUBBX,AXADCAX,12HSUBBH,−9【解答】3-2编写计算多项式4A2

B

+

10值的程序段。说明:多项式值存于AX中,A、B是无符号字节数。数据说明:ADB0AHBDB10H【解答】MOVAL,AMULAMOVBL,4MULBLSUBAL,BSBBAH,0ADDAL,10ADCAH,03-3编写计算CL的3次方的指令序列,假设幂不超过16位二进制数【解答】有符号数:MOVAL,CL IMULCL MOVCX,AX MOVAL,CL CBW IMULCX无符号数:MOVAL,CL MULCL MOVCX,AX MOVAL,CL MOVAH,0 MULCX3-4假设DX、AX中存放一个双字:NEGDXNEGAXSBBDX,0请问:设执行前,DX

=

0001H,AX

=

FFFFH,上述程序段执行后,DX、AX的值是什么?上述程序段完成什么功能?【解答】功能是求DX,AX存放的双字的相反数。执行前两条语句后DX=0FFFFH,AX=0001H,CF=1;执行第三条语句后,DX=0FFFEH,DX:AX=0FFFE0001H。3-5列出2种以上实现下列要求的指令或指令序列。(1)把累加器AX清零 (2)把进位标志CF清零(3)将累加器AX的内容乘以2(不考虑溢出) (4)将累加器AX的内容除以2(不考虑余数)【解答】(1)a.XOR AX,AXb. SUB AX,AXc. AND AX,0d. MOV AX,0(2)a.SUB AX,AXb. AND AX,AXc. OR AX,AXd. XOR AX,AXe. TEST AX,AXf. C

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论