学习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)。不要给出编译错误“错误:机器特定寻址或寻址模式错误”。
更新1:以下代码
BUF .equ #0xf55e
....
ld (hl),`HI(BUF)
给出一个错误Error: <q> missing or improper operators, terminators, or delimiters
。