这篇文档作为Sam看ARM ASM时的参考手册。呵呵。有了这篇手册,看ARM ASM就会容易很多。有了这篇文档就能看懂ASM吗?一定可以,不信去问葛优。他一定说:(神州行)我看行!
1. 关键字:
1.1 AREA Example1, CODE, READONLY
AREA: 至少在ADS上编译ASM时,必须要有AREA关键字(其实也是个指令助记符)。它表明这个区域是Example1。是一个CODE区域。是一个READONLY区域。
1.2 ENTRY:
标识代码入口。没有这一项也没有任何问题。
1.3 CODE32
表明是32位ARM指令。
2. 助记指令:
2.1 MOV/MVN :数据传送指令,将8位图操作数2传送到目标寄存器(操作数1)/将操作数2取反之后放到操作数1中。
MOV R1, #0x10 ;将直接数0x10放到R1寄存器去
MOV R0, R1 ; 将R1内容copy到R0去
MOV PC, LR ;PC=LR, 子程序返回
MOV R3,R1, LSL#2 R3=R1<<2>MVN R1,#0xFF ; R1=0xFFFFFF00
2.2 EQU: 赋值,用来定义变量
COUNT EQU 0x40003100 ; EOUNT赋值为0x40003100
2.3 LDR/STR: 加载存储指令
LDR:从内存中读取数据(单一字节或字)放入寄存器。
STR: 将单一字节或字存储到内存。
LDR R0,[R1,#0x12] ; 将R1+0x12处的数据读出,放到R0中去。
LDR R0, [R1,-R2] ;将R1-R2内存处的数据读出,放到R0 中去。
STR R0,[R1,-0x4] ;将R0内容放到内存R1-0x4处
2.4 CMP:比较指令
CMP R1,#10
CMP 将第一个参数减去第二个参数。针具结果更新CPSR中相应条件标志位。以便后面的指令根据相应的条件标志来判断是否执行。(寄存器CPSR的内容可以用AXD看到)如果R1-#10 <>
没有评论:
发表评论