Assembly 如何在8086汇编语言中将AX寄存器的内容移动到CS寄存器
我所看到的问题表明,我必须使用JMP或呼叫,但如何使用。 我想用有效的8086指令(指令)替换指令Assembly 如何在8086汇编语言中将AX寄存器的内容移动到CS寄存器,assembly,emu8086,Assembly,Emu8086,我所看到的问题表明,我必须使用JMP或呼叫,但如何使用。 我想用有效的8086指令(指令)替换指令MOV CS,AX,以解决错误 CS不能直接修改(使用far JMP或CALL)以下是几个示例: mov ax,segment_value mov bx,offset_value push ax push bx retf ; ... DB 0EAh
MOV CS,AX
,以解决错误
CS不能直接修改(使用far JMP或CALL)以下是几个示例:
mov ax,segment_value
mov bx,offset_value
push ax
push bx
retf
; ...
DB 0EAh ;far jump
DW offset_value
DW segment_value
在8086上,您可以将某些内容移动到
CS
,但这通常不是您想要的。更改CS
会更改段指令的加载来源,从而导致跳转到难以预测的位置。您想实现什么?您不需要移动到两个单独的寄存器,您可以重用AX。如果您不需要在原来的8086上运行,也可以使用push immediate
,只有186和更新版本。您根本不需要mov来注册,只需按下seg即可<代码>推出<代码>retf。push
操作数可以是寄存器、内存或(在186和更新版本上,立即)。@PeterCordes-true,在我抓取的第一个示例代码中,mov在retf之前执行了一些指令,并且正在计算值。