微机接口与汇编语言复习题(三)

2020-04-03 11:38

第 3章 指令系统

3-4判断下述8086/8088指令的写法是否正确。

(1) MOV [AX], BH (3) MOV [SP], AX (5) OUT 10H, CL (7) PUSH AL

(9) MOV ES:[SI], DI 答:

(1) MOV [AX], BH (2) MOV [BP], AX

( 错 ) (对) ( 错 )

原因:AX不能用作寄存器间接寻址中的寄存器。 只能用BX,BP,SI,DI. (3) MOV [SP], AX

(2) MOV [BP], AX (4) MOV [DI], [SI] (6) INC WORD PTR [SI] (8) CMP 36H, AL

(10) MOV BYTE PTR [BX], 800

原因: SP不能用作寄存器间接寻址中的寄存器。 只能用BX,BP,SI,DI.

(4) MOV [DI], [SI] ( 错 )

原因: 8086/8088没有将存储器中的操作数传送到另一个存储单元的寻址方式。

(5) OUT 10H, CL

( 错 )

原因: 8086/8088的输入/输出指令只能用累加器AL或AX。 (6) INC WORD PTR [SI] (对) (7) PUSH AL ( 错 ) 原因:堆栈指令的操作数为16位。 (8) CMP 36H, AL ( 错 ) 原因:目的操作数不能为立即数。 (9) MOV ES:[SI], DI (对)

(10) MaV BYTE PTR [BX], 800 ( 错 )

原因:源操作数(立即数) 800大于一个字节(目的操作数位于字节存储单元中〉。 3-5设有关寄存器及存储单元的内容如下: DS=2000H, BX=0100H, AX=1200H, SI=0002H, [20102H]=33H, [20103]=44H, [21200]=9BH,

[21201H]=99H, [21202H]=0AAH, [21203H]=88H。 问:下列各条指令单独执行后相关寄存器或存储单元的内容为多少?

(1) MOV AX, 1800H (2) MOV AX, BX

(3) MOV BX, [1200H] (4) MOV DX, [BX+1100H] (5) MOV [BX+SI], AL (5) MOV AX, [BX+SI+1100H] 答.

(1) (AX)=1800H (2) (AX)=(BX)=0100H (3) (BX)=999BH (4)(DX)=999BH

(5) [20102H] = AL =00H (6) (AX)=88AAH

1

一、习题 1.选择题

3-1下列寄存器组中在段内寻址时可以提供偏移地址的寄存器组是 。 A. AX, BX, CX, DX B. BX, BP, S1, D1 I C. SP, 1P, BP, DX I D. CS, DS, ES,SS

3-2循环指令LOOPNZ终止循环的条件是 。 A. CX=0且ZF=0 B. CX=0或ZF=1 C.CX≠0且ZF=0 D.CX≠0或ZF=1

3-3执行INC指令除对町、ZF有影响外,还要影响的标志位是 。 A. OF, AF, PF B. OF, AF, CF c. OF, PF, CF D. AF, PF, CF

3-4设DH=10H,执行NEG DH指令后,正确的结果是 。 A. DH =l0H, CF=1 B. DH=10H, CF=0 C DH=10H, CF=0 D. DH=0F0H

3-5下面指令执行后,改变AL寄存器内容的指令是 。 A. TEST AL, 02H B. OR AL, AL C. CMP AL, BL D. AND AL, CL

3-6下面几条乘法指令中,错误的是 。 A.MUL BX B.MUL AL C.MUL 1000

D.MUL BYTE PTR[DI]

3-7若VAR是己经定义的变量,下面几条除法指令中,正确的是 。 A.DIY VAR B.DIV [BX+SI] C.DIV [10+SI+BX] D.DIY [DI]

3-8下列每组两条指令,具有相同功能的是 A.NOT AX B.NOT AX C NEG AX

XOR AX, 0 XOR AX,OFFFFH XOR AX, 0

2

D. NEG AX A.带符号数乘2 B.带符号数除2 C.无符号数乘2 D.无符号数除2

XOR AX,OFFFFH

3-9逻辑移位指令SHR可在一定范围内用于 。

3-10算术移位指令SAR可在一定范围内用于 。 A.原码数除以2 B.带符号数除以2 C.补码数除以2 D.无符号数除以2

2.填空题

3-11唯一不能用于乘法指令源操作数的寻址方式是 。

3-12对于指令MOV AX, [BP],默认的源操作数所在的段是 。

3-13 8位带符号数扩展为16位带符号数的指令CBW的源操作数默认是在寄存器 。 3-14如果AX中存放的是负数的补码,执行指令CWD后,寄存器DX 的内容将是 。 3-15汇编程序会对指令MOV [SI], 1000报错,维持原有指令功能不变,修改后正确的指令应该是 。

3-16若(AL)=04H, (BL)=OFFH,执行指令MUL BL后,标志OF= , CF= . 3-18条件转移指令JE测试的条件是 。

3-19条件转移指令JG一般应该在一条 指令后面直接使用,才会正确地实现条件转移。 3-20若(DS)=2000H, [21000H] = 56H, [21001H] =78H,执行指令MOV AX, [1000]后,寄存器AX的内容是 。

3.判断题

3-21指令MOV SI, [AX]的源操作数的寻址方式是寄存器间接寻址。 ( )

3-22当NEG 指令的操作数是一个用补码表示的负数时,指令执行后达 到这个负数的绝对值。( ) 3-23如果SUB01是另一个代码段的一个标号,用指令JMP SUB01就 可以实现段间直接转移。( ) 3-24若VARI己经定义为一个变量,指令LEA BX,VARl[SI]将VARI的值加上SI后传送给BX。( ) 3-25 SP是堆栈指针,应该随时指向堆栈的栈顶。所以,用MOV指令来改变SP的值在汇编的时候会

报告语法错误。( )

3-26奇偶标志PF是根据运算结果中\的数目来决定标志的值:如果 \的数目是偶数,PF=l( ) 3-27 MUL [SI]是有错误的指令,但是PUSH [SI]却是没有错误的指令。( )

3-28 重复因子和字符串操作指令结合使用,如REP MOVSW,每执行一次这样的指令,数据长度计

数的CX寄存器内容仍然是减1,而不是减2。( )

3-29字符串操作指令,如MOVSW,每执行一次,指针SI和DI就会自动加2,或者减2。 ( ) 3-30变址寻址(有的书上称为寄存器相对寻址〉中所使用的偏移量是一个带符号数,也就是说,偏移量本身就是可正可负的。( ) 4.简答和编程题

E. 3-31判断下列指令是否正确,若有错,指出错误所在,其中VAR1为字 变量, TALI为标号。

3

(1) MOV CS, [3202H] (3) MOV DS, SEG VARI (5) LEA AX, OFFSET VARI (7)JMP TALI[SI] (9) IN

AL, DX

(2) XCHG AX,1234H (4) ADD AL, [BX+BP+10] (6) OUT 7EH, AX (10)MUL AL, CL

(8) JE VARI

3-32己知(DS)=2F00H, (ES)=9FOOH, (SS)=5A80H, (BX)=0800H,(BP)=0040H。计算下列指令源操作数的物理地址,并指出寻址方式。

(1) MOV AX, [BP+6] (2) ADD AX, ES:[BX]

3-35当指令SUB AX,CX 执行后CF =1,试说明最高有效位发生了什么现象? 3-36己知(AX) =0FF60H, CF =0,执行下述指令序列后, (AX) =? CF =?

MOV DX, 96 XOR DH, OFFH SBB AX, DX

3-37设寄存器 AL、BL、CL中内容均为76H,执行下述指令序列后, (AL) = ? (BL) = ? (CL) = ?

XOR AL, 0FH AND BL, 0FH OR CL, 0FH 3-38试编写一个程序片断,计算两个非压缩十进制数7与4的乘法操作。 3-39设AX、BX、CX中的数是带符号数,下列程序求AX、BX、CX中

的最小值,结果放在AX中,请将程序填写完整。

CMP AX, BX

(1) JLE NEXT

XCHG AX, BX

NEXT: CMP CX, AX

(2) JGE EXIT XCHG AX, CX

EXIT: NOP

3-42测试AL寄存器的D5和D0位,若同时为0,程序转向L1去将AL置1;否则将AL清0,同时清CF和OF标志。试写出程序段。

二、习题解答 1.选择题

3-1答案:B

说明: BX和BP也称为基址寄存器, SI和DI也称为变址寄存器。 3-2答案:B

说明: LOOPNZ指令继续执行的条件是两个: CX≠0和ZF=0,终止执行则只要两个条件中的-个就可以。 3-3答案:A

说明: INC指令不影响CF标志, DEC指令也是。 3-4答案:D

说明: NEG指令称为求补指令,但不是求补码的指令。10H是正数,也要用0去减,减完以后的CF一般总

4

是1。 3-5答案:D

说明: TEST指令和CMP指令都不改变目的操作数。选项B是AL本身的或运算,也不会改变AL,只有选项D正确。 3-6答案:C

说明:立即数不能作为乘法指令的操作数。乘法运算要根据操作数来决定是做8位乘法还是16位乘法。系统认为立即数不能提供这样的信息,所以不能 作为乘法指令的操作数。

3-7答案:A

说明:存储器操作数可以作为除法指令的操作数。但是选项B、C、D都没有明确操作数的位数是8位还是16位,是不正确的,只有选项A正确,因为在定义变量的时候一定会明确它的位数。 3-8答案:B

说明:两条指令都可以完成对AX内容的按位求反操作。 3-9答案:D

说明:一般来说,右移1位相当于操作数除以2,SHR的逻辑移位,右移后最高位添0,只能是对无符号数有除2的功能。 3-10答案:C

说明:算术移位指令在右移移位后,最高位按原来的符号位来填充:负数还是负数,正数还是正数。但是,不能说算术右移1位对带符号数除以2,因为带符号数可以有3种编码方式。如果采用原码,就不是除以2了。所以,只有答案C是正确的。 2.填空题

3-11答案:立即寻址

说明:因为立即数不可以作为乘法指令的操作数。

3-12答案:堆栈段

说明:用BP间接寻址时,段寄存器默认是SS,源操作数在堆栈段。 3-13答案: AL

说明:这是CBW指令默认的源操作数。 3-14答案: OFFFFH,或者答\全1\

说明: CWD也是对带符号数的扩展指令, 16位负数扩展到32位时,高16位都是1。 3一15答案: MOV WORD PTR[SI], 1000

说明:要说明存储器操作数的位数。现在只能是16位,因为十进制数1000 的二进制数要用16位。

3一16答案: 1; 1

说明: MuL是无符号数乘法指令,无符号数04H和0FFH相乘一定超过8位。乘法运算后,标志OF和CF都等于1,表示高位积不等于0。

3-18答案: ZF=l

说明:JE是相等就转移的条件转移指令。测试的条件就是ZF是不是等于1。 3-19答案: CMP指令或者比较指令

说明:比较指令会保留比较后的标志, JG指令实际上就是根据这些标志来决定是不是要转移的。回答\逻辑运算指令\也可以算对,但是,实际的编程时,都是使用比较指令的,会有更好的可读性。

3-20答案: 7856H

说明: 16位数传送时,存储器高地址字节内容存放到寄存器的高8位,低地址字节内容存放到寄存器的低8位。

5


微机接口与汇编语言复习题(三).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:燕京啤酒公司ISO9000认证程序文件汇编

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

马上注册会员

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