指出SHL AX,3指令的错误原因。

题目

指出SHL AX,3指令的错误原因。

参考答案和解析
正确答案:移位次数大于1,应先将移位次数送CL。
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

执行下列指令序列后,完成的功能是将(DX,AX)的值______。

MOV CL,04

SHL DX,CL

MOV BL,AH

SHL AX,CL

SHR BL,CL

OR DL,BL


正确答案:左移四位
左移四位 解析:这是一种常用的多位数移位的方法。也可以采用厂面的方法将(DX,AX)右移四位
          MOV  CX,04
   NEXT: SHR  DX,1
          RCR  AX,1
          LOOP  NEXT

第2题:

下列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”的错误在于立即数不能作为目标操作数。

第3题:

为了将AX和BX寄存器中存放的32位数据左移一位(其中AX寄存器中的数据为高16位),下面的程序段中应填写一条什么指令? SHL AX, 1 SHL BX, 1

A.ADC AX ,0

B.SHL AX ,1

C.ROL AX ,1

D.RCL AX,1


正确答案:A

第4题:

下列指令中有语法错误的是

A.SHL AX,CL

B.MOV AX,[DX]

C.OUT DX,AL

D.MOV EAX,[EDX]


正确答案:B
解析:该题考查考生对寄存器的理解。BX基址寄存器除可作数据寄存器外,还可放内存的逻辑偏移地址,而AX、CX、DX则不能,DX数据寄存器除可作通用数据寄存器外,还在乘、除法运算,以及带符号数的扩展指令中有特殊用途,所以选项B是错误的,其他三个选项都是正确的,所以应该选择B。

第5题:

在8086/8088微处理器中,下列( )指令是合法的。

A.ADD AX,3

B.MOV AL,300

C.MUL AL,BL

D.SHL AL,3


正确答案:A

第6题:

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

A.IN AX,03F8H

B.MOV BL,AL

C.MOVSB

D.SHL AX


正确答案:A
解析:03F8H大于255,不能直接寻址,而必须通过DX寄存器间接寻址。

第7题:

下列指令中有语法错误的是

A.SHL AX,CL

B.MOV AX,[DX]

C.OUT DX,AL

D.MOVE AX,[EDX]


正确答案:B
解析:该题考查考生对寄存器的理解。BX基址寄存器除可作数据寄存器外,还可放内存的逻辑偏移地址,而AX,CX,DX则不能, DX数据寄存器除可作通用数据寄存器外,还在乘、除法运算,以及带符号数的扩展指令中有特殊用途,所以选项B是错误的,其他三个选项都是正确的,所以应该选择B。

第8题:

下面指令执行后,改变目标寄存器内容的指令是()。

A、TEST AL,0EFH

B、SHL AX,CL

C、CMP DH,BL

D、AND AL,FFH


参考答案:B

第9题:

为了将AX和BX寄存器中存放的32位数据左移一位(其中AX寄存器中的数据为高 16位),下面的程序段中应填写( )指令。 SHL AX,1 SHL BX,1

A.ADC AX,0

B.SHL AX,1

C.ROL AX,1

D.RCL AX,1


正确答案:A

第10题:

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

A.IN AX,0378H

B.MOV BL,AL

C.MOVSB

D.SHL AX,1


正确答案:A
解析:根据所学知识,可知B)C)D)均为合法指令。