Получение низких и старших частей 16-битного слова - PullRequest
2 голосов
/ 11 апреля 2019

Обучающий компилятор SDCC, его часть Z80 (sdasz80). В нативных версиях ассемблера я использую:

ld (hl),LOW BUF
inc hl
ld (hl),HIGH BUF

для хранения 16-битного значения BUF в двух 8-битных частях (высокая и низкая). Не могу найти как это сделать в SDCC, похоже это

ld  (hl),#BUF & #0xff
inc hl
ld  (hl),#BUF >> 8 & #0xff

компилируется без ошибок, с созданным кодом, являющимся правильным, но вторая загрузка не выглядит хорошо для меня, и никакие скобки для упорядочения логических операций не принимаются компилятором. Это правильно, и единственный способ добиться разделения 16-битного значения на 2 байта?

Обновление. Встречается в некоторых руководствах ASxxx > и < (см. Таблицу 4). Не работайте, сообщая об ошибках компиляции "Ошибка: ошибка адресации или режима адресации конкретного компьютера".

Update1: Следующий код

BUF .equ    #0xf55e
....
ld  (hl),`HI(BUF)

выдает ошибку Error: <q> missing or improper operators, terminators, or delimiters.

...