ARM汇编实践作业

首先创建项目:
1.选择并配置芯片和运行环境:
ARM汇编实践作业_第1张图片
ARM汇编实践作业_第2张图片
2.添加编写.s文件
ARM汇编实践作业_第3张图片
这里是一个排序然后选出中位数的汇编程序:

 AREA MYDATA, DATA
	
 AREA EXAMPLE, CODE,READONLY
	ENTRY
	EXPORT __main

__main
	
    MOV R0,#9; SORT number
 LDR R2,=0x40000000 ;  start address
 
 SUB R1,R0,#1; r1 <- 8
 MOV R4,#4  ;r4 <- 4
 MLA R3,R1,R4,R2   ;r3<- r1*r4+r2 = r2+32
 SUB R4,R3,#4 ;r4 <- r2+28
LOOPA
 ADD R5,R2,#4  ;r5 <- r2+4
LOOPB
      LDR R6,[R2]
      LDR R7,[R5]
	  CMP R6,R7
	  STR R6,[R5]
	  STR R7,[R2]   ;swap
	  ADD R5,R5,#4   ; change inner address to next one
	  CMP R5,R3
	  BLS LOOPB
	  ADD R2,R2,#4   ;change outter address to next one
	  CMP R2,R4
	  BLS LOOPA	    
	  LDR R2,=0x40000000
	  MOV R0,R0,LSR #1 ;R0 <- R0>>1
	  MOV R4,#4  ; R4 <- 4
	  MLA R3,R0,R4,R2	;r3<- r1*r4+r2
LOOPC
      
      LDR R1,[R3]
	  MOV R0,#100
	B .
		




在进行调试的时候遇到这个问题,进不了主函数:
ARM汇编实践作业_第4张图片
这需要在target选项卡里面勾选microlib
ARM汇编实践作业_第5张图片
后面就正常debug:
ARM汇编实践作业_第6张图片
ARM汇编实践作业_第7张图片

可以看到寄存器的值确实按照我们编写的汇编代码发生改变

生成的hex文件如下:
ARM汇编实践作业_第8张图片
hex文件由记录组成,每行代表一个记录
以第一行数据为例解释下:0x020000040800F2
把它当成字符串拆分为0x02,0x00,0x00,0x04,0x08,0x00,0xF2,因为对应各自的含义和作用:
0x02:本行有两个数据
0x00,0x00:本行数据起始地址位
0x04:标记拓展线性地址的记录
0x08,0x00:就是在开头0x02指出的本行包含的2个具体数据
0xF2:校验和

你可能感兴趣的:(arm,arm开发,嵌入式硬件)