【摘要】:在C语言程序中声明的全局变量可以被汇编程序通过地址间接地访问。具体访问方法如下:使用IMPORT伪操作声明该全局变量。使用LDR指令读取该全局变量的内存地址,通常该全局变量的内存地址值存放在程序的数据缓冲池中。根据该数据的类型,使用相应的LDR指令读取该全局变量的值,使用相应的STR指令修改该全局变量的值。对于结构型变量的数据成员,可以使用相应的LDR/STR指令来访问,这时必须知道该数据成员相对于结构型变量开始地址的偏移量。
在C语言程序中声明的全局变量可以被汇编程序通过地址间接地访问。具体访问方法如下:
(1)使用IMPORT伪操作声明该全局变量。
(2)使用LDR指令读取该全局变量的内存地址,通常该全局变量的内存地址值存放在程序的数据缓冲池中。
(3)根据该数据的类型,使用相应的LDR指令读取该全局变量的值,使用相应的STR指令修改该全局变量的值。
各数据类型及其对应的LDR/STR指令如下:
(1)对于无符号的char类型的变量,通过LDRB/STRB指令来读/写。
(2)对于无符号的short类型的变量,通过LDRH/STRH指令来读/写。
(3)对于int类型的变量,通过指令LDR/STR来读/写。(www.xing528.com)
(4)对于有符号的char类型的变量,通过指令LDRSB来读取。
(5)对于有符号的char类型的变量,通过指令STRB来写入。
(6)对于有符号的short类型的变量,通过指令LDRSH来读取。
(7)对于有符号的short类型的变量,通过指令STRH来写入。
(8)对于小于8个字的结构型的变量,可以通过一条LDM/STM指令来读/写整个变量。
(9)对于结构型变量的数据成员,可以使用相应的LDR/STR指令来访问,这时必须知道该数据成员相对于结构型变量开始地址的偏移量。
下面是一个在汇编程序中访问C语言程序全局变量的例子。程序中,变量global是在C语言程序中声明的全局变量。在汇编程序中首先用IMPORT伪操作声明该变量,再将其内存地址读入寄存器R1中;将其值读入到寄存器R0中;修改后,将寄存器R0的值赋予变量globol。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。