下列四条指令中,错误的是()A、SHL AL,1B、MOV AH,BXC、SHR AL,CLD、MOV AL,20H

题目

下列四条指令中,错误的是()

  • A、SHL AL,1
  • B、MOV AH,BX
  • C、SHR AL,CL
  • D、MOV AL,20H
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

执行下列程序段后

MOV AL,87

MOV CL,4

MOV AH,AL

AND AL,OFH

OR AL,30H

SHR AH,CL

OR AH,30H

写出AX=_______H。


正确答案:3537
3537

第2题:

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

A.ADD AX,3

B.MOV AL,300

C.MUL AL,BL

D.SHL AL,3


正确答案:A

第3题:

在8086/8088指令系统中,下列哪一条指令的寻址方式是错误的?

A.MOV AL,[DI]

B.MOV AL,[SI]

C.MOV AL,[BX+BP]

D.MOV AL,[BP+SI]


正确答案:C
解析:本题考查8086/8088指令系统中寻址方式的概念。每一种计算机的指令系统都有自己的一套寻址方式,不同计算机的寻址方式的分类和名称并不统一,但大多数可以归结为:立即寻址、直接寻址、寄存器寻址、间接寻址、变址寻址、寄存器间接寻址、基址寻址、相对寻址、页面寻址、堆栈寻址等。选项C的寻址方式是错误的,在汇编指令中是不可以实现的。正确答案为选项C。

第4题:

执行下列程序段后,AL=( )。 MOV AL,64 MOV CL,2 SHR AL,CL MOV CL,AL SHR AL,2 ADD AL,CL

A.16

B.20

C.32

D.64


正确答案:B

第5题:

下面两条指令执行后,(AH)=______,(AL)=______;

MOV AH, 10H

MOV AL,10


正确答案:0010000B即10H    0001010B即0AH
0010000B即10H  ,  0001010B即0AH

第6题:

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

第7题:

执行下列程序段后,AL=( )。 MOV AL,64 MOV CL,2 SHR AL,CL MIOV CL,AL SHR AL,2 ADD AL,CL

A.16

B.20

C.32

D.64


正确答案:B

第8题:

下列哪一条指令在8086微处理器中是非法的?

A.SHL AL,2

B.MOV AL,BL

C.ADD AL,[BX]

D.OR AX,BX


正确答案:A
解析:本题考查8086微处理器的指令格式。8086微处理器的指令格式注意:不允许存储器间进行数据传送:代码段寄存器CS不允许作为操作数;操作数的类型和长度要一致;两个段寄存器之间不能直接传送数据。乘法指令规定累加器的内容与指定的原操作数相乘。对于移位指令,指令格式规定:当移位次数为1时,可以直接将指令中的源操作数置1;而当移位次数大于1时,应该实现在CL寄存中设定,然后把CL作为移位指令的源操作数,选项A指令错误。正确答案为选项A。

第9题:

下列指令中,不合法的指令是

A.IN AL,20H

B.OUT 20H,AL

C.MOV 20H,AL

D.ADD AL,20H


正确答案:C

第10题:

为了使下面的指令序列能够将AH和AL寄存器中的非组合型(Unpacked)BCD码转换为缉合型(PackeD)BCD码存放在AL中,应该在第三条指令中填入( )操作数。 MOV CL, 4 SHL AL, CL SHR __, CL

A.BL

B.AL

C.AX

D.BX


正确答案:C

更多相关问题