已有下列4条等值语句:  D1    EUQ    1000  D2    EUQ    1000  D3    EUQ    10000  D4    EUQ    15000  指出下列指令中哪些是错误的?说明出错的原因。 (1)ADD AL, D1-D2      (2)MOV AX, D3+D4   (3)SUB  BX,D4-D3      (4)SUB AH,D4-D3-D1

题目

已有下列4条等值语句:  D1    EUQ    1000  D2    EUQ    1000  D3    EUQ    10000  D4    EUQ    15000  指出下列指令中哪些是错误的?说明出错的原因。 (1)ADD AL, D1-D2      (2)MOV AX, D3+D4   (3)SUB  BX,D4-D3      (4)SUB AH,D4-D3-D1

参考答案和解析
正确答案: (1)错,D1-D2 的直超出了字节表示数的范围,故不能将结果传送给AL。
(4)错,D4-D3-D1的直超出了字节数的范围,不能将结果传给AH。
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

下列指令中( )指令是不合法的。

①MOV [SI],1000H

②ADD AX,[DX]

③MUL[BX]

④MOV DS,2000H

A.1条

B.2条

C.3条

D.4条


正确答案:C

第2题:

判断下列指令是否正确。若不正确,指出错误原因。 (1)MOV SI, DL (2)MOV ES, 1000H (3)LEA AX, 3006H (4)MOV [BP][DI], 0 (5)MOV [SI], [DI] (6)MOV [DI],[BX] (7)MOV [DX+SI],AL (8)MUL AL , 58H (9)MOV DS,SEG DAT (10)MOV WORD PTR [BX],-1


正确答案: (1)指令MOV SI, DL是错误的,两个操作数类型不匹配。
(2)指令MOV ES, 1000H是错误的,装载段寄存器时,源操作数不能为立即数。
(3)指令LEA AX, 3006H是错误的,LEA指令的源操作数必须为内存操作数。
(4)指令MOV [BP][DI], 0是错误的,操作数类型无法确定。
(5)指令MOV [SI], [DI] 是错误的,不能同时出现两个内存操作数。
(6)MOV [DI],[BX] ;错,存储器不能传存储器
(7)MOV[DX+SI],AL; 错,DX不能用作基址寻址
(8)MUL AL , 58H ;错,乘法指令不能用立即数
(9)MOV DS,SEG DAT;错,立即数不能送段寄存器
(10)MOV WORD PTR [BX],-1 ;正确 ,-1送BX指示的字单元

第3题:

执行下列指令后,寄存器AX的值为 TABLE DW 10,20,30,40,50 ENTRY DW 3 … MOV BX, OFFSET TABLE ADD BX, ENTRY MOV AX,[BX]

A.1E00H

B.1000H

C.001EH

D.000AH


正确答案:C

第4题:

下列指令执行时出错的是()

  • A、ADD BUF1,BUF2
  • B、JMP DWORD PTR DAT [BX]
  • C、MOV AX,[BX+DI] NUM
  • D、TEST AL,08H

正确答案:B

第5题:

指出下列指令源操作数的寻址方式? (1)MOV.BX,100H (2)MOV.AX,DAT[BX][DI] (3)MOVSB (4)ADD.AX,BX (5)MOV.BX,[100]


正确答案: (1)MOV.BX,100H(立即寻址)
(2)MOV.AX,DAT[BX][DI](基址变址寻址)
(3)MOVSB(串寻址)
(4)ADD.AX,BX(寄存器寻址)
(5)MOV.BX,[100](直接寻址)

第6题:

下列指令中有( )条指令不合法。 ①MOV [SI], [DI] ②ADD AX,5 ③IN AL,DX ④PUSH WORD PTR 10[BX+2]

A.1

B.2

C.3

D.4


正确答案:A

第7题:

指出下列指令中哪些是错误的,错在什么地方。  (1)MOV DL,AX  (2)MOV 8650H,AX  (3)MOV DS,0200H  (4)MOV [BX],[1200H]  (5)MOV IP,0FFH  (6)MOV [BX+SI+3],IP  (7)MOV AX,[BX][BP]  (8)MOV AL,ES:[BP]  (9)MOV DL,[SI][DI]  (10)MOV AX,OFFSET 0A20H  (11)MOV AL,OFFSET TABLE  (12)XCHG AL,50H  (13)IN BL,05H  (14)OUT AL,0FFEH


正确答案:(1)长度不匹配
(2)立即数不能做目的操作数
(3)段寄存器不能用立即数赋值
(4)两个内存单元不能直接传送数据
(5)IP 不能用指令直接修改
(6)指令中不能出现 IP
(7)BX/BP 应与 SI/DI 搭配
(8)正确
(9)SI/DI 应与 BX/BP 搭配
(10)OFFSET 后应跟内存单元
(11)偏移地址为16 位,AL 长度不够
(12)立即数不能用于XCHG
(13)IN 必须用 AL/AX
(14)操作数顺序反向;地址应为 8 位

第8题:

下列MOV指令都是错误的,请指出错误原因。

(1)MOV ES, 1234H

(2)MOV AL, 300

(3)MOV [SP], AX

(4)MOV AX, BX+DI

(5)MOV 20H, AH


正确答案:(1)立即数不能直接赋给段寄存器。 (2)立即数300超过8位不能赋给8位寄存器AL。 (3)SP不能作为间接寻址寄存器寻址。 (4)两个寄存器不能相加。 (5)立即数不能作为目标操作数。
(1)立即数不能直接赋给段寄存器。 (2)立即数300超过8位,不能赋给8位寄存器AL。 (3)SP不能作为间接寻址寄存器寻址。 (4)两个寄存器不能相加。 (5)立即数不能作为目标操作数。 解析:本问题主要考查汇编语言的基础知识。在8086的指令系统中,应用通用传送指令时,需要注意以下几点:
传送指令可传送8位数据,也可传送16位数据,具体取决于指令中涉及的寄存器是8位还是16位,也取决于立即数的形式。
传送指令中总是即含源操作数,又含目的操作数,两者之中至少有一个是用寄存器来指出的,这可减少指令长度。因此,一个立即数不能直接送直接寻址的内存单元。交换指令(XCHG)两个操作数都不能是立即数。
传送指令不能在两个内存单元之间直接传送数据。
在传送指令中,寄存器即可以作为源操作数,也可以作为目的操作数,但CS寄存器不能作为目的操作数,换句话说,这个寄存器的值不能随意修改。而IP寄存器即不能作源操作数,也不能作为目的操作数。
用BX、SI、DI来间接寻址时,默认的段寄存器位DS,而用BP来间接寻址时,默认的段寄存器为SS。
8086系统规定,凡是遇到给SS寄存器赋值的传送指令时,系统会自动禁止外部中断,等到本条指令和下条指令执行后,又自动恢复对SS寄存器赋值前的中断开放状态。这样做是为了允许程序员连续用两条指令分别对SS和SP寄存器赋值,同时又防止堆栈空间变动过程中出现中断。了解这点后,就应注意在修改SS和SP的指令之间不要插入其他指令。
除了一些直接影响FLAGS的指令外,一般传送指令不改变标志寄存器的内容。
立即数不能直接送段寄存器DS、ES以及SS,要用通用寄存器或存储单元作桥梁。
因此,指令“MOVES,1234H”的错误在于立即数直接赋给了段寄存器;指令“MOV AL,300”的错误在于立即数300超过8位,不能赋给8位寄存器AL;指令“MOV[SP],AX”的错误在于SP不能作为间接寻址寄存器寻址:指令“MOV AX,BX+DI”的错误在于两个寄存器不能相加;指令“MOV 20H,AH”的错误在于立即数不能作为目标操作数。

第9题:

指出下列指令的错误(1)MOV.AH,BX(2)ADD.15H,BX(3)MOV.CS,AX(4)MOV.AX,[SI][DI](5)MOV.BYTEPTR[BX],1000


正确答案: (1)MOV . AH,BX (1)类型不匹配
(2)ADD . 15H,BX ( 2)立即数不能作目的操作数
(3)MOV . CS,AX (3)CS不能作目的操作数
(4)MOV . AX,[SI][DI] (4)SI和DI不能一起使用
(5)MOV . BYTE PTR[BX],1000 (5)类型不匹配

第10题:

已知数据和符号定义 A1 DB ? A2 DB 8 K1 EQU 100 判断下列指令的正误,并说明错误指令的原因。 (1)MOV K1,AX (2)MOV A2,AH (3)CMP A1,A2 (4)MOV BX,K1 MOV[BX],DX (5)K1EQU 200


正确答案: (1)错误。K1是符号,在此处相当于立即数100,故不能做目的操作数。
(2)正确。
(3)错误。A1、A2都是字节变量,相当于两个存储器单元,故不能同时出现在一条指令中直接进行比较。
(4)正确。
(5)错误。用EQU定义的符号不能重新赋值,除非已用PURGE解除了原值。

更多相关问题