我正在使用 Turbo Debugger (TD) 为 8086 模拟器 (DOS) 编写一个简单的汇编程序。我的任务是使用加法/减法将零标志 (ZF) 设置为 1。然而,无论我如何尝试,零标志都没有被设置。这是我正在尝试的代码片段:
IDEAL
MODEL small
STACK 100h
DATASEG
CODESEG
start:
mov al, 4Bh
mov ah, 4Bh
sub al, ah
exit:
mov ax, 4C00h
int 21h
END start
我不知道我做错了什么。
我期待看到零标志变成 1,就像我的教科书上一样: 课本示例
这是我执行程序后看到的: 执行后TD最终状态
我尝试使用 F8/F7 进行调试,分别逐行或逐步运行程序,似乎 TD 跳过了我的程序的第一行或其他内容,我不太确定是否是这种情况。
如果你们有任何想法,我会很高兴。
谢谢!
您没有运行与源匹配的二进制文件。 我们可以在屏幕截图的第二列中看到机器代码。 拆解给出:
B39C mov bl,0x9c
B79C mov bh,0x9c
02DF add bl,bh
这也符合以下事实:
bx
在寄存器窗口中突出显示,并且它具有值9c38
并且标志匹配。