关于MOV指令的改错

来源:百度知道 编辑:UC知道 时间:2024/06/05 06:18:22
马上要考试了,紧急!
1. MOV 3, SI
2. MOV CH, 1234H
3. MOV [BX], 33H
4. MOV AX, CL
5. MOV AL, [BX]
6. MOV X, [100H]
7. MOV [100H], [DI]
8. MOV DS, 1000H
9. MOV CS, AX
10. MOV [AX], BX
第8题是立即数不能赋给段寄存器,第十题为什么不对啊?

1. MOV 3, SI
8086的指令格式是先写目标操作数,然后是源操作数
2. MOV CH, 1234H
ch是8位的,不可以传送16位
3. MOV [BX], 33H
BX是可以做寄存器相对寻址的,但是内存单元是16位的,并不是8位。
4. MOV AX, CL
目标和源的位数不符
5. MOV AL, [BX]
同3,因为对内存单元的访问都是16位的
6. MOV X, [100H]
X不是寄存器
7. MOV [100H], [DI]
8086不支持源操作数和目的操作数同时访问内存。
8. MOV DS, 1000H
段寄存器不能给立即数
9. MOV CS, AX
代码段寄存器不能被赋值
10. MOV [AX], BX
寄存器相对寻址必须用BX或者BP作为基址寄存器

当你遇到这种问题的时候,可以用运行debug,然后调用A命令,把这些指令输入进去,看到底哪里是不允许的。

有些书给的答案也不一定对。

1. MOV 3, SI
; mov si,3 立即数寻址方式 或目的操作数是寄存器的寄
存器寻址方式,倒着写是AT&T汇编写法
2. MOV CH, 1234H
;mov cx,1234h ;立即数寻址方式,目的操作数是寄存器的寄存器寻址方式
3. MOV [BX], 33H
;mov byte ptr [BX],33h 需要确定传送的字节数默认2个字节8086,386开始4个字节。
4. MOV AX, CL
;mov al,cl 或 mov ax,cx;寄存器寻址方式,目的操作数和源操作数位数不等
5. MOV AL, [BX] ;正确
6. MOV X, [100H]
;不知道你指的X是内存单元不,俩内存单元不能直接操作, mov ax,[100h] mov x,ax