打印
[ZLG-ARM]

ARM汇编中字符串的使用问题,请教

[复制链接]
4003|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gofayao|  楼主 | 2007-3-22 23:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我需要在汇编中 利用UART输出很多调试信息(字符串)
目前的做法是 事先将这些调试信息都定义好,然后,再将这些定义好的字符串的首地址传给UART输出
如下: String  DCD  'I','n','i','t','i','a','l', 'O','K','!'
       LDR R0,=String

那有没有比较好的方法可以不用事先定义,而是在需要的时候直接使用就可以
如: LDR R0,="Initial OK!" 类似的方式,当然这个是我捏造的用法......
想请教各位有没有类似的正确用法,谢谢. 

相关帖子

沙发
zlgARM| | 2007-3-23 08:17 | 只看该作者

RE

gofayao:
    不可能。在汇编语言中,肯定没法用寄存器来直接存放字符串。那就只能将字符串放到内存里,这样的话,就不是所谓的直接使用了。
    即使是C语言,实际上也是将字符串看成是字符的组合,再放入字符数组。BASIC倒是有字符串变量,比如A$之类。

使用特权

评论回复
板凳
gofayao|  楼主 | 2007-3-23 11:34 | 只看该作者

RE

那用下面两种方式定义的 字符串 有什么区别呢?
String1  DCD  'I','n','i','t','i','a','l', 'O','K','!'
String2  DCB   "Initial OK!"

汇编伪指令说 DCB一般用来定义数据表格或者字符串

我在UART 实验中 
  使用 LDR R0,=String1 就可以正常打印 Initial OK
而使用 LDR R0,=String2 就打印不正常了

搞不懂,请帮忙解惑解惑,谢谢啦.

使用特权

评论回复
地板
zlgARM| | 2007-3-23 17:52 | 只看该作者

RE

gofayao:
    只打印一个字符试试.
    String1 DCD ‘I'
    String2 DCB  "I"
 

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

34

帖子

0

粉丝