【问题标题】:How do i move the contents of AX register to CS register in 8086 Assembly Language如何在 8086 汇编语言中将 AX 寄存器的内容移动到 CS 寄存器
【发布时间】:2019-11-14 09:39:14
【问题描述】:

我看到的问题表明我必须使用 JMP 或 CALL 但如何使用。 我想用有效的 8086 指令(指令)替换指令 MOV CS, AX 以解决错误 CS不能直接修改(使用far JMP或CALL)

【问题讨论】:

  • 在 8086 上,您可以将某些内容移动到 CS,但这通常不是您想要的。更改CS 会更改从其中加载段指令的更改,从而导致远跳转到难以预测的位置。你想达到什么目的?

标签: assembly emu8086


【解决方案1】:

这里有几个例子:

        mov     ax,segment_value
        mov     bx,offset_value
        push    ax
        push    bx
        retf

;       ...

        DB      0EAh                ;far jump
        DW      offset_value
        DW      segment_value

【讨论】:

  • 您不需要 将 MOV 移动到 2 个单独的寄存器,您可以重复使用 AX。或者如果您不需要在原始 8086 上运行,则使用 push immediate,只需 186 和更新版本。您根本不需要 mov 来注册,只需 push segpush off ; retfpush 操作数可以是寄存器、内存或(在 186 和更新版本上,立即数)。
  • @PeterCordes - 是的,在代码中我抓住了第一个示例,mov 在 retf 之前完成了一些指令,并且正在计算值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-04
  • 2012-03-16
  • 2014-12-15
  • 2016-11-11
  • 1970-01-01
相关资源
最近更新 更多