【问题标题】:EMU8086 adds value to wrong registerEMU8086 给错误的寄存器加值
【发布时间】:2018-11-25 12:52:00
【问题描述】:
var1 db 1h, 2h
var2 db 2h
MOV AL, [var1 + 1]
MOV [var2], AL

如果我模拟这段代码,我看到 EMU8086 设置了寄存器 AX 的 AH(不是 AL)部分。为什么?

【问题讨论】:

    标签: nasm emu8086


    【解决方案1】:

    EMU8086 从开头开始处理 (var1) 并将字节解释为指令和相应的后续字节。所以,代码寻找 EMU8086 之类的

    ADD [BP+SI], AX
    ADD AH, [BX + SI] + 00001
    MOV [00002], AL
    

    如您所见,此代码更改了 AH 而不是 AL。简而言之:EMU8086 需要一个合适的 DOS 程序。

    【讨论】:

      【解决方案2】:

      执行此操作后,您必须先将 var1 地址加载到 si 中

      lea si,var1
      mov al,[si+1]
      mov [si+2],al
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-04
        • 2023-03-19
        • 2018-07-28
        • 2015-03-13
        • 2023-02-25
        • 2012-07-13
        • 2017-03-31
        • 2014-10-31
        相关资源
        最近更新 更多