cliveliu 发表于 2011-8-29 11:14:25

如何用汇编语言在ROM中定义一个数组?

RT,还有在汇编程序中如何调用这个数组?哪里有相关例程?谢谢!

hui235 发表于 2011-8-30 09:16:31

回复:如何用汇编语言在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
 

cliveliu 发表于 2011-8-30 10:40:38

回复:如何用汇编语言在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处。

hui235 发表于 2011-8-30 12:39:31

RE:如何用汇编语言在ROM中定义一个数组?

哥们,首先,你为什么一定要用汇编定义数组呢?
而且是固定地址的。。?
如果你在汇编里定义固定的地址的数组,需要你对汇编编出来的机器码的大小了如执掌,

hui235 发表于 2011-8-30 12:41:07

RE:如何用汇编语言在ROM中定义一个数组?

如果你确定0x9000没有被用到,直接用C的指针使用就行了,

cliveliu 发表于 2011-8-30 12:42:27

回复:如何用汇编语言在ROM中定义一个数组?

回复第 4 楼 于2011-08-30 04:39:31发表:
哥们,首先,你为什么一定要用汇编定义数组呢?
而且是固定地址的。。?
如果你在汇编里定义固定的地址的数组,需要你对汇编编出来的机器码的大小了如执掌, 

我是定义在ROM的最后一段空间,不会对原程序产生冲突。
难道这问题版主也犯难了?

hui235 发表于 2011-8-30 12:45:07

RE:如何用汇编语言在ROM中定义一个数组?

是我觉得没必要非要这样定义啊?你觉得什么应用需要你必须这样做?

cliveliu 发表于 2011-8-30 13:14:13

RE:如何用汇编语言在ROM中定义一个数组?

当然有必要了,比如我可以直接用软件修改这个S19文件参数,因为地址是固定的,很好找。
这样做的好处是不同的机种,只需要一个S19文件就可以了。编程的时候配置就行了,方便。

hui235 发表于 2011-8-30 19:38:55

RE:如何用汇编语言在ROM中定义一个数组?

你用C语言不一样可以实现?
宏定义区别不同的机种,配置数据定义在C代码里,只不过每次要重新编译一下,跟你每次改S19不是一样能达到目的吗,这个应该要简单很多。。。

leeman 发表于 2011-8-30 20:40:04

回复:如何用汇编语言在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
查看完整版本: 如何用汇编语言在ROM中定义一个数组?