我在 ATMEL Studio 7 (ATtiny84A) 中使用了一个汇编器项目,但遇到了一个奇怪的问题。在一个代码段中,如果 a.DB
有两个字节就可以了,但是两个.DB
在不同的行上会给出一个错位警告。
.CSEG
; one row
.DB 0x01, 0x02
; same data on two rows
.DB 0x01
.DB 0x02
我理解什么是错位,但我不明白为什么编译器会抱怨,因为将数据放在一行而不是两行会以完全相同的顺序产生完全相同的数据量。
我是否需要一些“打包”指令来让它理解这应该被视为同一块数据?
将它分成一个 .DB 每行的原因是因为它定义了字符字形,像这样
.db 0b00000000 ; 0 - 0
.db 0b00111000
.db 0b01000100
.db 0b01000100
.db 0b01000100
.db 0b01000100
.db 0b01000100
.db 0b00111000
以这种方式设计/更改字形要容易得多。
编辑:
好的,我想通了。您可以简单地用 \ 分割一行
; 0 - 0
.db 0b00000000, \
0b00111000
.db 0b01000100, \
0b01000100
.db 0b01000100, \
0b01000100
.db 0b01000100, \
0b00111000
我想它很困惑,因为它.CSEG
是面向单词的。但是编译器应该足够聪明,可以自己解决这个问题。