【发布时间】:2018-11-25 12:52:00
【问题描述】:
var1 db 1h, 2h
var2 db 2h
MOV AL, [var1 + 1]
MOV [var2], AL
如果我模拟这段代码,我看到 EMU8086 设置了寄存器 AX 的 AH(不是 AL)部分。为什么?
【问题讨论】:
var1 db 1h, 2h
var2 db 2h
MOV AL, [var1 + 1]
MOV [var2], AL
如果我模拟这段代码,我看到 EMU8086 设置了寄存器 AX 的 AH(不是 AL)部分。为什么?
【问题讨论】:
EMU8086 从开头开始处理 (var1) 并将字节解释为指令和相应的后续字节。所以,代码寻找 EMU8086 之类的
ADD [BP+SI], AX
ADD AH, [BX + SI] + 00001
MOV [00002], AL
如您所见,此代码更改了 AH 而不是 AL。简而言之:EMU8086 需要一个合适的 DOS 程序。
【讨论】:
执行此操作后,您必须先将 var1 地址加载到 si 中
lea si,var1
mov al,[si+1]
mov [si+2],al
【讨论】: