gzyueqian
13352868059

粤嵌嵌入式开发培训教程 汇编语言程序访问C语言全局变量

更新时间: 2019-04-05 15:04:55来源: 嵌入式培训浏览量:5746

  嵌入式开发学习什么?嵌入式开发门槛高,涉及的知识面广,既要求懂硬件,又必须能写软件,而软硬件涉及的知识体系却又是异常的庞大。今天不讲那么复杂,来聊聊嵌入式开发培训教程中涉及到汇编语言的一点内容——汇编语言程序访问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


  学习嵌入式开发培训教程,大家都有自己的学习方式,粤嵌建议大家一定要坚持和学习,在自己的领域中精进。


免费预约试听课