学习SDCC编译器,其Z80部分(sdasz80)。在本机版本的汇编器中,我使用:
ld (hl),LOW BUF
inc hl
ld (hl),HIGH BUF
以两个8位部分(高和低)存储16位值BUF
。我找不到如何在SDCC中执行此操作,
ld (hl),#BUF & #0xff
inc hl
ld (hl),#BUF >> 8 & #0xff
编译没有错误,生成的代码正确,但是第二次加载对我来说看起来并不好,并且编译器不接受用于排序逻辑运算的方括号。是正确的,并且是将16位值除以2个字节的唯一方法吗?
更新。在某些ASxxx manuals >
和<
运算符中找到(请参阅表4)。出现编译错误“错误:机器特定的寻址或寻址模式错误”时,请勿工作。
Update1: 以下代码
BUF .equ #0xf55e
....
ld (hl),`HI(BUF)
给出错误Error: <q> missing or improper operators, terminators, or delimiters
。