你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
意法半导体官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
积分商城
每日签到
如何用汇编语言在ROM中定义一个数组?
[复制链接]
cliveliu
提问时间:2011-8-29 11:14 /
RT,还有在汇编程序中如何调用这个数组?哪里有相关例程?谢谢!
赞
0
收藏
0
评论
11
分享
发布时间:2011-8-29 11:14
举报
请先
登录
后回复
11个回答
hui235
回答时间:2011-8-30 09:16:31
a0a.1 0b0c
回复:如何用汇编语言在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
赞
0
评论
回复
支持
反对
cliveliu
回答时间:2011-8-30 10:40:38
a0a.1 0b0c
回复:如何用汇编语言在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处。
赞
0
评论
回复
支持
反对
hui235
回答时间:2011-8-30 12:39:31
a0a.1 0b0c
RE:如何用汇编语言在ROM中定义一个数组?
哥们,首先,你为什么一定要用汇编定义数组呢?
而且是固定地址的。。?
如果你在汇编里定义固定的地址的数组,需要你对汇编编出来的机器码的大小了如执掌,
赞
0
评论
回复
支持
反对
hui235
回答时间:2011-8-30 12:41:07
a0a.1 0b0c
RE:如何用汇编语言在ROM中定义一个数组?
如果你确定0x9000没有被用到,直接用C的指针使用就行了,
赞
0
评论
回复
支持
反对
cliveliu
回答时间:2011-8-30 12:42:27
a0a.1 0b0c
回复:如何用汇编语言在ROM中定义一个数组?
回复第 4 楼 于2011-08-30 04:39:31发表:
哥们,首先,你为什么一定要用汇编定义数组呢?
而且是固定地址的。。?
如果你在汇编里定义固定的地址的数组,需要你对汇编编出来的机器码的大小了如执掌,
我是定义在ROM的最后一段空间,不会对原程序产生冲突。
难道这问题版主也犯难了?
赞
0
评论
回复
支持
反对
hui235
回答时间:2011-8-30 12:45:07
a0a.1 0b0c
RE:如何用汇编语言在ROM中定义一个数组?
是我觉得没必要非要这样定义啊?你觉得什么应用需要你必须这样做?
赞
0
评论
回复
支持
反对
cliveliu
回答时间:2011-8-30 13:14:13
a0a.1 0b0c
RE:如何用汇编语言在ROM中定义一个数组?
当然有必要了,比如我可以直接用软件修改这个S19文件参数,因为地址是固定的,很好找。
这样做的好处是不同的机种,只需要一个S19文件就可以了。编程的时候配置就行了,方便。
赞
0
评论
回复
支持
反对
hui235
回答时间:2011-8-30 19:38:55
a0a.1 0b0c
RE:如何用汇编语言在ROM中定义一个数组?
你用C语言不一样可以实现?
宏定义区别不同的机种,配置数据定义在C代码里,只不过每次要重新编译一下,跟你每次改S19不是一样能达到目的吗,这个应该要简单很多。。。
赞
0
评论
回复
支持
反对
leeman
回答时间:2011-8-30 20:40:04
a0a.1 0b0c
回复:如何用汇编语言在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
纯属讨论,没有亲测,也希望版主高手有更简单的方法提供小弟学习,谢谢
赞
0
评论
回复
支持
反对
cliveliu
回答时间:2011-8-31 08:02:31
a0a.1 0b0c
RE:如何用汇编语言在ROM中定义一个数组?
看来STVD在ROM中定义数组真的很麻烦,没有像8051汇编指令那样直接用ORG来的方便。
赞
0
评论
回复
支持
反对
zhuxianyinshi
回答时间:2013-2-6 13:25:19
a0a.1 0b0c
RE:如何用汇编语言在ROM中定义一个数组?
谁能帮帮我啊 我用STVD写了一段汇编 280行 生成S19文件只有30字节 别人的程序87行 S19文件4百多字节 找问题一周了无任何结果 急急急 过年也完不成任务了 望高手赐教
赞
0
评论
回复
支持
反对
所属标签
相似问题
关于
意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
回复:如何用汇编语言在ROM中定义一个数组?
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中定义一个数组?
用汇编定义数组,使用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中定义一个数组?
回复:如何用汇编语言在ROM中定义一个数组?
哥们,首先,你为什么一定要用汇编定义数组呢?
而且是固定地址的。。?
如果你在汇编里定义固定的地址的数组,需要你对汇编编出来的机器码的大小了如执掌,
我是定义在ROM的最后一段空间,不会对原程序产生冲突。
难道这问题版主也犯难了?
RE:如何用汇编语言在ROM中定义一个数组?
RE:如何用汇编语言在ROM中定义一个数组?
这样做的好处是不同的机种,只需要一个S19文件就可以了。编程的时候配置就行了,方便。
RE:如何用汇编语言在ROM中定义一个数组?
宏定义区别不同的机种,配置数据定义在C代码里,只不过每次要重新编译一下,跟你每次改S19不是一样能达到目的吗,这个应该要简单很多。。。
回复:如何用汇编语言在ROM中定义一个数组?
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
纯属讨论,没有亲测,也希望版主高手有更简单的方法提供小弟学习,谢谢
RE:如何用汇编语言在ROM中定义一个数组?
RE:如何用汇编语言在ROM中定义一个数组?