Intel 8086 TASM - 非法号码

时间:2015-11-01 20:07:29

标签: assembly x86-16 tasm


我一直在做一个程序,我需要将寄存器的值与某个数字进行比较。虽然在emu8086上模拟我没有任何问题,但是TASM编译器在所有行上都给出了错误:

cmp bx, 0xF7F0h

错误如下所示:

***Error*** div.ASM(163) Illegal number

任何想法如何解决这个问题?
当然我可以将F7F0h值放入另一个寄存器或变量中,但我更喜欢将它保持为常数值。

2 个答案:

答案 0 :(得分:5)

TASM不理解0x...符号。如果它抱怨F7F0h(因为它认为这是标签),则必须添加前导零:0F7F0h

答案 1 :(得分:1)

cmp bx, 0xF7F0h

您使用了两种方法同时指定十六进制!
您编写了前缀 0x 以及后缀 h

使用前缀格式cmp bx, 0xF7F0或后缀格式cmp bx, 0F7F0h。后者有一个前置零,以避免与标签名称发生任何冲突。