ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
29 марта
989428
AlexBi (27.03.2020 18:16, просмотров: 441)
Столкнулся с проблемой у ХС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-ы вычисляются правильно, а значение используется не то (выделил строчки)