你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 11616|回复: 11

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

[复制链接]

3

主题

14

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2011-8-29 11:14:25 | 显示全部楼层 |阅读模式
RT,还有在汇编程序中如何调用这个数组?哪里有相关例程?谢谢!
回复

使用道具 举报

11

主题

57

回帖

0

蝴蝶豆

中级会员

最后登录
1970-1-1
发表于 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
 
回复 支持 反对

使用道具 举报

3

主题

14

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
 楼主| 发表于 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处。
回复 支持 反对

使用道具 举报

11

主题

57

回帖

0

蝴蝶豆

中级会员

最后登录
1970-1-1
发表于 2011-8-30 12:39:31 | 显示全部楼层

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

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

使用道具 举报

11

主题

57

回帖

0

蝴蝶豆

中级会员

最后登录
1970-1-1
发表于 2011-8-30 12:41:07 | 显示全部楼层

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

如果你确定0x9000没有被用到,直接用C的指针使用就行了,
回复 支持 反对

使用道具 举报

3

主题

14

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
 楼主| 发表于 2011-8-30 12:42:27 | 显示全部楼层

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

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

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

使用道具 举报

11

主题

57

回帖

0

蝴蝶豆

中级会员

最后登录
1970-1-1
发表于 2011-8-30 12:45:07 | 显示全部楼层

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

是我觉得没必要非要这样定义啊?你觉得什么应用需要你必须这样做?
回复 支持 反对

使用道具 举报

3

主题

14

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
 楼主| 发表于 2011-8-30 13:14:13 | 显示全部楼层

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

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

使用道具 举报

11

主题

57

回帖

0

蝴蝶豆

中级会员

最后登录
1970-1-1
发表于 2011-8-30 19:38:55 | 显示全部楼层

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

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

使用道具 举报

0

主题

7

回帖

0

蝴蝶豆

初级会员

最后登录
1970-1-1
发表于 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
 
 
纯属讨论,没有亲测,也希望版主高手有更简单的方法提供小弟学习,谢谢
回复 支持 反对

使用道具 举报

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版