找回密码
 注册
关于网站域名变更的通知
查看: 1071|回复: 4
打印 上一主题 下一主题

汇编语言程序访问C语言全局变量

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2016-7-13 16:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
汇编语言程序可通过地址间访问在C语言程序中声明的全局变量。通过使用IMPORT关键词引入全局变量,并利用LDR和STR指令根据全局变量的地址来访问它们。对于不同类型的变量,需要采用不同选项的LDR和STR指令:
# ]3 L' a6 D; u3 V5 h5 ]9 E& wunsigned char   LDRB/STRB
8 B! U5 B- J& K! \6 z) runsigned short  LDRH/STRH
* y6 c* k. R. l7 i5 L0 nunsigned int    LDR/STR
1 y3 }  \$ o3 ]- S) dchar            LDRSB/STRSB5 c1 m; [9 _3 z+ d$ N
short           LDRSH//STRSH6 g% I) b% Q3 G$ ?+ O9 J7 \. K9 F
对于结构,如果知道各个成员的偏移量,则可通过加载和存储指令进行访问。如果结构所占空间小于8个字,则可用LDM和SRM一次性读/写。4 E7 {0 R1 W: d: U/ E$ S! q% f
下面是一个在汇编语言程序中访问C语言程序全局变量的例子,它读取全局变量globvar,并将其加2后写回。程序中变量globvar是在C语言程序中声明的全局变量。
  a! w6 @! x/ k' y7 Y8 d示例    C语言程序全局变量在汇编语言程序中的访问。! c8 Z  z! q, k3 F
AREA globals,CODE,READONLY
  x/ X. t" E. }" q0 C; U% tEXPORT asmsubroutine        ;用EXPORT伪操作声明该变量可被其他文件引( m1 y6 U7 }7 ]( b( C8 E  ?  F
                            ;用,相当于声明了一个全局变量
9 T; q& u9 {8 D7 V% C, R% QIMPORT  globvar             ;用IMPORT伪操作声明该变量时在其他文件中定$ o5 z& d) U' H' i9 b0 o
                            ;义的,在本文件中可能要用到该变量- a* j2 O" v9 q! L$ W: h, k
asmsubroutine8 b  a' r& @$ v2 l# D) x6 N2 q
LDR R1,=globvar             ;从文字池读globvar的地址,并将其保存到R1* c/ S/ z8 d( i3 R! [
LDR R0,[R1]                ;再将其值读入到寄存器R0中
4 o0 U/ l- i9 mADD R0,R0,#2  - M1 \+ I- f# {
STR R0,[R1]                ;修改后再将寄存器R0的值赋予变量globvar
0 v: k4 c7 E5 O- m; D8 NMOV PC,LR
3 Y* H* ~0 X6 I1 I+ k/ `END

该用户从未签到

2#
发表于 2016-7-13 17:11 | 只看该作者
支持一下,很不错哦!) \0 W" u) L4 b

点评

谢谢分享,不错哦  详情 回复 发表于 2016-7-15 15:01

该用户从未签到

3#
发表于 2016-7-14 14:20 | 只看该作者
路过捧场,谢谢分享!
& u$ t; A3 \/ k7 H+ y: m

该用户从未签到

4#
发表于 2016-7-15 14:31 | 只看该作者
路过捧场,谢谢分享!

该用户从未签到

5#
发表于 2016-7-15 15:01 | 只看该作者
Haiting32451 发表于 2016-7-13 17:114 a" U) J/ g) P, J! _- u# `
支持一下,很不错哦!
) v! n  {6 ^7 Z+ T
谢谢分享,不错哦/ y( @: ~: |6 L2 M
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-9-7 04:20 , Processed in 0.125000 second(s), 27 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表