Столкнулся с проблемой у ХС8, точнее у его ассемблера. Не корректно, на мой взгляд, работает с внутренними переменными.
Вот такой тестовый .asm файл
#include "pic.inc"
TEST MACRO v
local tmp
if v < 1
tmp set 0
else
tmp set 1
endif
db tmp
ENDM
psect test1,global,class=CODE,delta=2
TEST 0
TEST 1
end
На выходе получаю такой листинг
19 psect test1
20 07F7 if 1
21 0000 ??0000 set 0
22 07F7 else
23 07F7 endif
24 07F7 0001 db 1 ----------------------------------------------------
25 07F8 if 0
26 07F8 else
27 0001 ??0001 set 1
28 07F8 endif
29 07F8 0001 db 1 ----------------------------------------------------
Т.е. if-ы вычисляются правильно, а значение используется не то (выделил строчки)