2

学习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

4

0 回答 0