Assembly 如何在8086汇编语言中将AX寄存器的内容移动到CS寄存器

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

我所看到的问题表明,我必须使用JMP或呼叫,但如何使用。 我想用有效的8086指令(指令)替换指令
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之前执行了一些指令,并且正在计算值。