使用 TD 在 8086 模拟器 (DOS) 上进行加法/减法后未设置零标志

问题描述 投票:0回答:1

我正在使用 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 跳过了我的程序的第一行或其他内容,我不太确定是否是这种情况。

如果你们有任何想法,我会很高兴。

谢谢!

assembly x86 flags
1个回答
0
投票

您没有运行与源匹配的二进制文件。 我们可以在屏幕截图的第二列中看到机器代码。 拆解给出:

B39C mov bl,0x9c
B79C mov bh,0x9c
02DF add bl,bh

这也符合以下事实:

bx
在寄存器窗口中突出显示,并且它具有值
9c38
并且标志匹配。

© www.soinside.com 2019 - 2024. All rights reserved.