Столкнулся с проблемой у ХС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-ы вычисляются правильно, а значение используется не то (выделил строчки)