如何用汇编语言在ROM中定义一个数组?
RT,还有在汇编程序中如何调用这个数组?哪里有相关例程?谢谢!回复:如何用汇编语言在ROM中定义一个数组?
用汇编定义数组,使用dc (directive allocates)指令:dc.b 定义的是字节数组
dc.w定义字符数组
dc.l定义长整型数组
如 digit: dc.b 10,'0123456789'
就定义一个命名为digit 的10字节数组,
digit: dcb.b 10,5
定义一个10字节数组,每个元素的值为5
程序都是编译器编译出来的,所以自然要参考相关编译器的手册了。。。
STM8的请参考C:\COSMIC\CXSTM8_32K\Docs\CXSTM8_UsersGuide.pdf
回复:如何用汇编语言在ROM中定义一个数组?
回复第 2 楼 于2011-08-30 01:16:31发表:用汇编定义数组,使用dc (directive allocates)指令:
dc.b 定义的是字节数组
dc.w定义字符数组
dc.l定义长整型数组
如 digit: dc.b 10,'0123456789'
就定义一个命名为digit 的10字节数组,
digit: dcb.b 10,5
定义一个10字节数组,每个元素的值为5
程序都是编译器编译出来的,所以自然要参考相关编译器的手册了。。。
STM8的请参考C:\COSMIC\CXSTM8_32K\Docs\CXSTM8_UsersGuide.pdf
如何在ROM的绝对地址定义一个数组呢?比如定义一数组在地址9000处。
RE:如何用汇编语言在ROM中定义一个数组?
哥们,首先,你为什么一定要用汇编定义数组呢?而且是固定地址的。。?
如果你在汇编里定义固定的地址的数组,需要你对汇编编出来的机器码的大小了如执掌,
RE:如何用汇编语言在ROM中定义一个数组?
如果你确定0x9000没有被用到,直接用C的指针使用就行了,回复:如何用汇编语言在ROM中定义一个数组?
回复第 4 楼 于2011-08-30 04:39:31发表:哥们,首先,你为什么一定要用汇编定义数组呢?
而且是固定地址的。。?
如果你在汇编里定义固定的地址的数组,需要你对汇编编出来的机器码的大小了如执掌,
我是定义在ROM的最后一段空间,不会对原程序产生冲突。
难道这问题版主也犯难了?
RE:如何用汇编语言在ROM中定义一个数组?
是我觉得没必要非要这样定义啊?你觉得什么应用需要你必须这样做?RE:如何用汇编语言在ROM中定义一个数组?
当然有必要了,比如我可以直接用软件修改这个S19文件参数,因为地址是固定的,很好找。这样做的好处是不同的机种,只需要一个S19文件就可以了。编程的时候配置就行了,方便。
RE:如何用汇编语言在ROM中定义一个数组?
你用C语言不一样可以实现?宏定义区别不同的机种,配置数据定义在C代码里,只不过每次要重新编译一下,跟你每次改S19不是一样能达到目的吗,这个应该要简单很多。。。
回复:如何用汇编语言在ROM中定义一个数组?
据我目前了解,调用数组确实比较麻烦,因为stm8提供的带偏移LD或LDW都是使用同一Reg,也就是说,只有LDW Y,($5500,Y)
或者
LDW X,($5500,X)
这样的指令,不能
LDW X,($5500,Y)
所以我们每次整理好Y指针后却要毁掉他,因为他会被取回来的数据冲毁
所以我不得不使用一个临时变量,如X
LDW X,#Table ;数组起始位置
LOOP
LDW Y,X
LDW Y,(Table,Y)
(...你自己的数据处理,把Y值传递出去)
INCW X
CPW X,#TableEnd
JRULT LOOP ;X小于TableEnd循环
Table...............
TableEnd
纯属讨论,没有亲测,也希望版主高手有更简单的方法提供小弟学习,谢谢
页:
[1]
2