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

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

[复制链接]
cliveliu 提问时间:2011-8-29 11:14 /
RT,还有在汇编程序中如何调用这个数组?哪里有相关例程?谢谢!
收藏 评论11 发布时间:2011-8-29 11:14

举报

11个回答
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
 
 
纯属讨论,没有亲测,也希望版主高手有更简单的方法提供小弟学习,谢谢
cliveliu 回答时间:2011-8-31 08:02:31

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

看来STVD在ROM中定义数组真的很麻烦,没有像8051汇编指令那样直接用ORG来的方便。
zhuxianyinshi 回答时间:2013-2-6 13:25:19

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

谁能帮帮我啊 我用STVD写了一段汇编 280行 生成S19文件只有30字节 别人的程序87行 S19文件4百多字节 找问题一周了无任何结果 急急急 过年也完不成任务了 望高手赐教

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版