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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
汇编语言程序可通过地址间访问在C语言程序中声明的全局变量。通过使用IMPORT关键词引入全局变量,并利用LDR和STR指令根据全局变量的地址来访问它们。对于不同类型的变量,需要采用不同选项的LDR和STR指令:
3 V7 c7 c, \- s' @7 V/ F9 Dunsigned char   LDRB/STRB
9 v- `, H- N3 m( i: Tunsigned short  LDRH/STRH
0 G7 K! I& w% q& Z  @, Aunsigned int    LDR/STR( T8 A" ~$ p  ^- v/ T) t
char            LDRSB/STRSB
3 x' @* o! P+ h5 P2 u  ishort           LDRSH//STRSH
/ z" c' A0 w6 E5 E2 m$ ~对于结构,如果知道各个成员的偏移量,则可通过加载和存储指令进行访问。如果结构所占空间小于8个字,则可用LDM和SRM一次性读/写。8 O7 T6 O& r' S3 t( g3 }* l. S
下面是一个在汇编语言程序中访问C语言程序全局变量的例子,它读取全局变量globvar,并将其加2后写回。程序中变量globvar是在C语言程序中声明的全局变量。9 W* P; w# {2 m0 _, S* s6 R
示例    C语言程序全局变量在汇编语言程序中的访问。2 y3 P/ v8 g8 B; c2 Z( {
AREA globals,CODE,READONLY
+ ], N% k" D! F0 x) [, r0 Z7 W6 E! aEXPORT asmsubroutine        ;用EXPORT伪操作声明该变量可被其他文件引
$ e* `& J5 |4 y                            ;用,相当于声明了一个全局变量+ h4 ?  t2 w7 I
IMPORT  globvar             ;用IMPORT伪操作声明该变量时在其他文件中定
% U$ H$ L2 ?8 A7 Z, m+ d, i% D+ y                            ;义的,在本文件中可能要用到该变量
  {# y* X( R0 l. D6 @asmsubroutine5 \' V, g+ K5 n, X! D( w* D6 n
LDR R1,=globvar             ;从文字池读globvar的地址,并将其保存到R16 B0 a% S8 o; B& N8 A! E: s+ u
LDR R0,[R1]                ;再将其值读入到寄存器R0中* B  Y+ r) s9 f0 R
ADD R0,R0,#2  
6 c3 ?" X6 |( L3 R' G5 GSTR R0,[R1]                ;修改后再将寄存器R0的值赋予变量globvar4 ]6 R% N/ U7 [$ D1 {; v- Z
MOV PC,LR
! G7 n- `8 N5 ~( j) Q8 QEND

该用户从未签到

2#
发表于 2016-7-13 17:11 | 只看该作者
支持一下,很不错哦!/ c& T. K* N- g9 V

点评

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

该用户从未签到

3#
发表于 2016-7-14 14:20 | 只看该作者
路过捧场,谢谢分享!( w% V4 Z3 E6 Z) c' w

该用户从未签到

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

该用户从未签到

5#
发表于 2016-7-15 15:01 | 只看该作者
Haiting32451 发表于 2016-7-13 17:11
  j; t; T2 g/ W支持一下,很不错哦!
" r9 R# k) N7 i1 R8 C# D9 R" P
谢谢分享,不错哦; X/ U' H0 F. S; ]- o$ B' R) v
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-23 22:00 , Processed in 0.156250 second(s), 24 queries , Gzip On.

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

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

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