我一直在做一个程序,我需要将寄存器的值与某个数字进行比较。虽然在emu8086上模拟我没有任何问题,但是TASM编译器在所有行上都给出了错误:
cmp bx, 0xF7F0h
错误如下所示:
***Error*** div.ASM(163) Illegal number
任何想法如何解决这个问题?
当然我可以将F7F0h
值放入另一个寄存器或变量中,但我更喜欢将它保持为常数值。
答案 0 :(得分:5)
TASM不理解0x...
符号。如果它抱怨F7F0h
(因为它认为这是标签),则必须添加前导零:0F7F0h
。
答案 1 :(得分:1)
cmp bx, 0xF7F0h
您使用了两种方法同时指定十六进制!
您编写了前缀 0x 以及后缀 h 。
使用前缀格式cmp bx, 0xF7F0
或后缀格式cmp bx, 0F7F0h
。后者有一个前置零,以避免与标签名称发生任何冲突。