获取16位字的高低部分

时间:2019-04-11 11:41:18

标签: assembly z80 sdcc

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

0 个答案:

没有答案