嵌入式Linux ARM汇编(四)——ARM汇编程序设计
汇编程序有顺序、循环、分支、子程序四种结构形式。
一、顺序结构
程序实例:
AREA Buf,DATA,READWRITE;定义数据段Buf
ArrayDCB 0x11,0x22,0x33,0x44;定义12个字节的数组Array
DCB 0x55,0x66,0x77,0x88
DCB 0x00,0x00,0x00,0x00
AREA hello,CODE32,READONLY
ENTRY
LDR R0,=Array;取得数组Array的首地址
LDR R2,[R0];装载数组第1字节数据给R2
MOV R1,#1
LDR R3,[R0,R1,LSL#2];装载数组第5字节数据给R3
ADD R2,R2,R3
MOV R1,#8
STR R2,[R0,R1,LSL#2];
END
二、分支结构
1、ifelse分支结构的程序实现
C语言实现:
int x=76;
int y=88;
if(x>y)
z=100;
else
z=50
ARM汇编语言实现
MOV R0,#76;初始化R0的值
MOV R1,#88;初始化R1的值
CMP R0,R1;判断R0>R1?
MOVHI R2,100;R0>R1时,R2=100
MOVLS R1,50;R0时,R2=50
2、B指令实现散转功能
CMPR0,#MAX_INDEX;判断索引号是否超出最大索引值
ADDLOPC,PC,R0,LSL#2;索引号若没有超出,则程序跳到相应位置
BHIERROR;索引号若超出,则进行出错处理
BFUN1;跳到第一个程序
BFUN2;跳到第二个程序
BFUN3;跳到第三个程序
三、循环结构
1、for循环
C语言实现:
for(i = 0; i < 10; i++)
x++;
ARM汇编语言实现:
R0为x,R2为