【问题标题】:Compiling string literals in ASM for SDCC/LCC在 ASM 中为 SDCC/LCC 编译字符串文字
【发布时间】:2017-01-06 18:26:01
【问题描述】:

我正在尝试在 ASM 中为 GBDK 的 LCC 编写字符串文字。我可以编写每个单独的字符并且编译器工作正常。

.D_LINE = 0x0A
;; Works
.db "G", "I", "A", "N", "L", "U", "C", "A", #.D_LINE

但是,当我尝试将字符组合成一个字符串以使其更具可读性时:

.D_LINE = 0x0A
;; Doesn't work
.db "GIANLUCA", #.D_LINE

我得到一个编译错误:

text.s:12: Error: <o> .org in REL area or directive / mnemonic error

有没有办法解决这个问题?

版本信息

$ lcc -v
lcc $Id: lcc.c,v 1.6 2001/10/28 18:38:13 michaelh Exp $

$ sdcc -v
SDCC : gbz80/z80 2.3.1/gbdk-2.96a (Nov  4 2001) (UNIX) 

【问题讨论】:

  • 我相信你想要的指令是.ascii
  • 谢谢@jasonharper - 是否有在线指令列表,因为尽管尽了最大努力我还是找不到它

标签: sdcc gbdk lcc


【解决方案1】:

指令列表来了:

NULL,   ".byte",    S_BYTE,     0,  0,
NULL,   ".db",      S_BYTE,     0,  0,
NULL,   ".word",    S_WORD,     0,  0,
NULL,   ".dw",      S_WORD,     0,  0,
NULL,   ".df",      S_FLOAT,    0,  0,
NULL,   ".ascii",   S_ASCII,    0,  0,
NULL,   ".asciz",   S_ASCIZ,    0,  0,
NULL,   ".blkb",    S_BLK,      0,  1,
NULL,   ".ds",      S_BLK,      0,  1,
NULL,   ".blkw",    S_BLK,      0,  2,
NULL,   ".page",    S_PAGE,     0,  0,
NULL,   ".title",   S_TITLE,    0,  0,
NULL,   ".sbttl",   S_SBTL,     0,  0,
NULL,   ".globl",   S_GLOBL,    0,  0,
NULL,   ".area",    S_DAREA,    0,  0,
NULL,   ".even",    S_EVEN,     0,  0,
NULL,   ".odd",     S_ODD,      0,  0,
NULL,   ".if",      S_IF,       0,  0,
NULL,   ".else",    S_ELSE,     0,  0,
NULL,   ".endif",   S_ENDIF,    0,  0,
NULL,   ".include", S_INCL,     0,  0,
NULL,   ".radix",   S_RADIX,    0,  0,
NULL,   ".org",     S_ORG,      0,  0,
NULL,   ".module",  S_MODUL,    0,  0,
NULL,   ".ascis",   S_ASCIS,    0,  0,

https://github.com/hschmitt/gbdk/blob/d7707bf2b3c5433edcd37d53a1475fd51a9b9502/as/z80pst.c

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-27
    • 2011-12-20
    • 2021-11-18
    • 1970-01-01
    • 2011-06-16
    • 2012-08-12
    • 1970-01-01
    • 2011-12-27
    相关资源
    最近更新 更多