【发布时间】:2012-09-20 12:40:08
【问题描述】:
我正在尝试使用 32 位寄存器,因为我需要更大的最大整数值。当我尝试使用 EAX、EBX、ECX 或 EDX 时,TASM 显示 UNDEFINED SYMBOL。 TASM 正在将寄存器作为变量读取。知道原因吗? 我正在使用 DOSBOX 0.74 并在 Windows 7 64 位上运行。
【问题讨论】:
-
代码?命令行调用? 上下文?
-
DOSBOX 模拟在 16 位模式下运行的 MS-DOS。您现在可能应该使用 Windows(尽管我很欣赏有很多关于 16 位系统的汇编教程)。正如@paxdiablo 建议的那样,您应该使用类似 nasm 的东西。
-
@jleahy:DOSBox 模拟了(至少)在 16 位模式下运行的 386 兼容。 32 位操作数大小可与操作数大小前缀一起使用。 IDK 为什么有人想为该目标编写新代码,但您当然可以在 16 位模式下使用 32 位寄存器。在 16 位模式下,在真实硬件上唯一无法访问的是 64 位寄存器(和 AVX 指令;在 16 位模式下无法识别 VEX 前缀)。