c51汇编语言如何定义全局变量_汇编语言程序访问C语言全局变量

汇编语言程序可通过地址间访问在C语言程序中声明的全局变量。通过使用IMPORT***引入全局变量,并利用LDR和STR指令根据全局变量的地址来访问它们。对于不同类型的变量,需要采用不同选项的LDR和STR指令:

unsigned char   LDRB/STRB

unsigned short LDRH/STRH

unsigned int    LDR/STR

char            LDRSB/STRSB

short           LDRSH//STRSH

对于结构,如果知道各个成员的偏移量,则可通过加载和存储指令进行访问。如果结构所占空间小于8个字,则可用LDM和SRM一次性读/写。

下面是一个在汇编语言程序中访问C语言程序全局变量的例子,它读取全局变量globvar,并将其加2后写回。程序中变量globvar是在C语言程序中声明的全局变量。

示例    C语言程序全局变量在汇编语言程序中的访问。

AREA globals,CODE,READONLY

EXPORT asmsubroutine        ;用EXPORT伪操作声明该变量可被其他文件引

;用,相当于声明了一个全局变量

IMPORT  globvar             ;用IMPORT伪操作声明该变量时在其他文件中定

;义的,在本文件中可能要用到该变量

asmsubroutine

LDR R1,=globvar             ;从文字池读globvar的地址,并将其保存到R1

LDR R0,[R1]                ;再将其值读入到寄存器R0中

ADD R0,R0,#2

STR R0,[R1]                ;修改后再将寄存器R0的值赋予变量globvar

MOV PC,LR

END

凌阳教育,专注嵌入式人才培养多年,完善的培养方案,强大的师资,合理的课程安排,成功从小白蜕变为嵌入式工程师。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值