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

查看: 11635|回复: 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管理
行使您的权利
官方最新发布
13245底部标题123相同标题
12底部标题123相同标题
33333底部标题123相同序号
3435底部标题-无链接
关注我们
st-img 微信公众号
st-img 手机版