微机原理

请指出MOV CS,12H指令中的错误。

题目

请指出MOV CS,12H指令中的错误。

如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

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

第2题:

下面数据传送指令中,正确的指令是______。

A.MOV BUFl,BUF2

B.MOV CS,AX

C.MOV DX,WORDPTR[BP+DI]

D.MOV AL,1000H


正确答案:C
解析:因为不允许存储器之间的数据传送,代码段寄存器CS不允许作操作数,所以选项A和B是错误的。AL为8位寄存器,而1000H为16位立即数,操作数类型不匹配,因此选项D也是错误的。

第3题:

下面的指令中,正确的是( )

A.MOV CS,BX

B.MOV BUFl,BUF2

C.MOV CL,70550H

D.MOV DX,WORD PTR[BP+DI]


正确答案:D
解析:当使用段寄存器作目的操作数时,不允许使用CS作目的操作数。比如选项A中的MOVCS,BX是错误的。MOVBUFl,BUF2不能在两个存储器单元之间传送数据。所以选项B是错误的。选项C中,CL是字节寄存器,放不了70550H,所以是错误的。只有选项D是正确的。

第4题:

指出下列指令的错误: MOV BX,OFFSETMYDAT[SI]


正确答案: OFFSET为取某个地址的偏移量,故后面不应用[SI],而应是一个符号地址。

第5题:

下列指令中错误指令是()

  • A、MOV AX,DS
  • B、MOV CS,1500H
  • C、MOV SI,BX
  • D、MOV [3000H],AL
  • E、MOV [DI+32H],[1845H]
  • F、MOV AL,1000H

正确答案:B,E,F

第6题:

下面的数据传送指令中,正确的指令是______。

A.MOV BUF2,BUF1

B.MOV CS,DX

C.MOV CL,1234H

D.MOV DX,WORDPTR[BL+DH]


正确答案:D
解析:数据传送是一条双操作数指令,其源操作数和目的操作数都符合语法规定,因此前3条指令的错误原因是:A)不允许存储器之间的数据传送;B)代码段寄存器CS不允许作操作数,C)CL为8位寄存器,而1000H为16位立即数,因此错误原因是操作数类型不匹配。

第7题:

指出下列指令的错误(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)类型不匹配

第8题:

下列指令中合法的为( )。

A.MOV 02H,AX

B.ADD CS,AX

C.SUB [BX],[100H]

D.MOV SI,[SI]


正确答案:D

第9题:

指出以下指令中,哪些指令是非法的,并说明为什么(8086系统)。 (1) PUSH 1234H (2) MOV CS,AX (3) IN AX, 300 (4) MOV AX,[DX+12] (5) MOV BX,[BX] (6) MOV DS,1000H (7) XCHG AL,AL (8) MOV AL,100H (9) MOV DX,AL (10)LEA BL,[BX+5] (11)LEA DX,BX (12)MOV [1000H],12H (13)ADD AX,DS (14)SUB [0100H],BYTE PTR [0001] (15)SHL BL,2 (16)SHR CL,CL (17)MUL AL,BL (18)INT 400


正确答案: (1)非法,8086系统不允许PUSH指令的操作数为立即数;
(2)非法,MOV指令中CS不能作为目的操作数;
(3)非法,端口号大于0FFH;
(4)非法,DX不能出现在中括号[]内;
(5)合法;
(6)非法,不能把立即数赋给段寄存器;
(7)合法;
(8)非法,源操作数大于0FFH,不能赋给8位寄存器AL;
(9)非法,源操作数是8位寄存器,目的操作数却是16位寄存器,不匹配;
(10)非法,LEA指令得到的是16位偏移量,但目的操作数是8位寄存器;
(11)非法,LEA指令的源操作数只能是存储器操作数;
(12)非法,指令存在歧义,无法确定传送的是字节还是字;
(13)非法,段寄存器不能参与算术运算;
(14)非法,源和目的寄存器不能同为存储器操作数;
(15)非法,在8086系统中,移位次数大于1时需要将移位次数存放到CL中;
(16)合法;
(17)非法,在8086系统中MUL指令没有双操作数的用法;
(18)非法,中断类型号大于0FFH。

第10题:

指出MOV AX,BL指令的错误原因。


正确答案:源操作数和目的操作数类型不一致。