2015-11-01 2 views
2


Я занимаюсь программой, где мне нужно сравнить значения регистра с определенным числом. В то время как эмуляция на Emu8086 у меня не было troble, однако TASM компилятор дал мне ошибку на всех линиях, как, например:Intel 8086 TASM - незаконное число

cmp bx, 0xF7F0h 

ошибка выглядит следующим образом:

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

Любые идеи, как решить эту проблему?
Конечно, я мог бы поместить значение F7F0h в другой регистр или переменную, но я бы предпочел сохранить его постоянным значением.

ответ

5

TASM не понимает 0x... обозначение. Если он жалуется на F7F0h (потому что он считает, что это метка), вы должны добавить начальный ноль: 0F7F0h.

1
cmp bx, 0xF7F0h 

Вы использовали 2 метода для указания шестнадцатеричного в одно и то же время!
Вы написали префикс 0x, а также суффикс h.

Использовать префикс cmp bx, 0xF7F0 или суффиксную форму cmp bx, 0F7F0h. Последний имеет добавочный ноль, чтобы избежать конфликта с именем метки.

Смежные вопросы