2.MOV DS, 1720H 错误,MOV指令不能对段寄存器直接传送立即数;
时间: 2024-01-02 22:04:05 浏览: 32
非常正确!MOV指令不能直接将立即数传送到段寄存器中。段寄存器只能通过一些特定的指令或指令组合来修改,例如使用LEA指令、LDS指令、LES指令等。如果要将一个值加载到段寄存器中,需要使用另一个通用寄存器中转。例如,可以先将立即数加载到AX寄存器中,然后使用MOV指令将AX寄存器中的值传送到段寄存器中,具体指令如下:
```
MOV AX, 1720H ; 将立即数1720H加载到AX寄存器中
MOV DS, AX ; 将AX寄存器中的值传送到DS段寄存器中
```
相关问题
不能给段寄存器进行立即数方式赋值
是的,段寄存器不能像通用寄存器那样通过立即数方式直接赋值。这是因为段寄存器是用来存储段地址的,而段地址通常是由汇编程序员在程序中手动指定的,而不是在运行时由计算机自动生成的。因此,为了设置一个段寄存器的值,需要使用一条专门的指令,如 MOV、LDS 或 LES 等。例如,要将 DS 寄存器设置为 1000H,可以使用以下指令:
```
MOV DS, 1000H
```
这条指令将把 DS 寄存器的值设置为 1000H。
说明下面各条指令的具体错误原因 ⑴ mov cx,dl⑵ mov ip,ax ⑶ mov es,1234h⑷ mov es,ds ⑸ mov al,300⑹ mov [sp],ax ⑺ mov ax,bx+di⑻ mov 20h,ah 10.假设DS=2000H、BX=1256H、TABLE的偏移地址是20A1H,物理地址232F7H处存放3280H,试问执行下列段内间接寻址的转移指令后,转移的有效地址是什么? ⑴ JMP BX ⑵ JMP TABLE[BX]
⑴ mov cx,dl:这条指令的错误原因是,DL寄存器只有8位,而CX寄存器有16位,无法直接将DL的值赋值给CX。
⑵ mov ip,ax:这条指令的错误原因是,IP寄存器是指令指针寄存器,它不能被直接赋值。
⑶ mov es,1234h:这条指令的错误原因是,ES寄存器是段寄存器,它的值必须是指向有效内存段的段地址。
⑷ mov es,ds:这条指令的错误原因是,ES寄存器是段寄存器,它的值必须是指向有效内存段的段地址。
⑸ mov al,300:这条指令的错误原因是,AL寄存器只有8位,无法容纳300的值。
⑹ mov [sp],ax:这条指令的错误原因是,SP寄存器是栈指针寄存器,它不能被直接赋值。
⑺ mov ax,bx+di:这条指令的错误原因是,BX和DI寄存器都是16位的,但是它们的值相加可能会产生进位,导致结果不正确。
⑻ mov 20h,ah:这条指令的错误原因是,20h是一个内存地址,不能作为目的操作数,AH寄存器也不能作为源操作数。
10. 对于DS=2000H、BX=1256H、TABLE的偏移地址是20A1H,物理地址232F7H处存放3280H,执行下列段内间接寻址的转移指令后,转移的有效地址是:
⑴ JMP BX:转移的有效地址为DS:BX,即2000:1256H。
⑵ JMP TABLE[BX]:先计算TABLE[BX]的值,TABLE的偏移地址是20A1H,加上BX的值1256H,得到物理地址232F7H,该地址处的值是3280H,转移的有效地址为232F7H。