此篇是本人学习ARM汇编程序设计的小节,记录了我在调试课本实例过程中的感想,新手妄言还请高手斧正!
文章以课本实例为主线,每个实例标有归属的章节,有些注释不完善毕竟是小程序相信大家一定能明白,如有任何不详细或者差误欢迎大家和我交流!
本文依据课本为:
《汇编语言程序设计——基于ARM体系结构》 文全钢著 北京航空航天大学出版社 2007
实例1.(4.4.2简单程序设计)
实现存放在存储器的两个32位变量X、Y的加法,它们分别保存在0x90010、0x90014,结果Z也保存在存储器、其地址为0x90018。
AREA EX4_41,CODE,READONLY ;定义段属性伪指令 标志了此段程序名字为EX4_41为代码段(CODE)只读属性
ENTRY ;程序入口
CODE32 ;32位ARM程序段
START LDR R0,=0X90010 ;将地址保存到R0中
LDR R1,[R0],#4
LDR R2,[R0],#4 ;后索引 立即数寻址 每次取值后会自动修改寄存器+4 依次提取到寄存器中的值载入R1、R2
;最终R0指向0x90018存放结果Z
ADD R1,R1,R2 ;加法指令R1+R2保存到R1中 ARM体系只能对寄存器操作
STR R1,[R0] ;保存到R0所指向的存储器空间 此时的R0经过了两次修改
B START ;分支语句 无条件跳回到START标号处
END ;程序结束
程序采取后索引方式寻址,后索引