【发布时间】:2014-11-09 13:16:22
【问题描述】:
我对 Assembly 和 TASM 还很陌生,我有以下问题。 我想使用寄存器的扩展版本,特别是 EBX。通过使用下面的代码,但没有“.386”指令,它不起作用,说“未定义符号EBX”。但是有了它,它无法识别 INT 21h 指令,据我了解,该指令终止了程序,并且在使用 TurboDebugger 调试它时很有用。 有人能告诉我如何避免这种情况吗?
PS:是的,我知道 TASM 和 TD 已经很老了,还有更新更好的,比如 NASM 或 MASM,但是我们在大学必须使用这个,所以请不要告诉我使用其他的.
代码如下:
.386
CODE SEGMENT
ASSUME CS : CODE , DS : CODE , SS : CODE
ORG 100H
ENTRY: JMP L1
; data definitions come here
;. . .
L1:
MOV EBX, 10H
MOV AX , 4C00H
INT 21H
CODE ENDS
END ENTRY
【问题讨论】:
-
.386应该对int 21h没有影响。it doesn't recognize是什么意思? -
这意味着当我在程序中包含 .386 并使用 TurboDebugger 对其进行调试时,它不会出现在日志中。同时,如果我删除 .386 并使用 TurboDebugger 再次运行它,它会出现在那里并且程序在执行后停止
-
您的 turbo 调试器版本可能不理解 32 位前缀,因此它的反汇编器会混淆。如果我没记错的话,调试器有多个版本,其中之一是
td386。试试看。