"); //-->
1. 安装KEIL软件。
2. 新建一个工程,选择SUMSUNG的S3C2410A处理器。
3. 选项设置,如图。
设置Target中ROM1:
设置Linker:
4. 新建一个汇编文件,编写汇编程序。
5. 编译,调试。
因为原始数据和代码一起存在rom中,程序装载时ram不能保留数据,所以为空。将定义的数据段属性也设置为READONLY,就可解决这个问题。调试时,设置debug->memory map ,将该段地址设为exec read write如图:
执行前,查看memory窗口如下图,从0x00000058开始存储了32个32位未排序的数据。
6. 执行run ,或者单步执行。
执行完成后,查看memory窗口如图,32个数据已被从大到小排序。
汇编程序如下
AREA sort,CODE,READONLY ;定义代码段,冒泡排序。
ENTRY
start
MOV R4,#0
LDR R6,=src ;R6存入数据段起始地址。
ADD R6,R6,#len
outer
LDR R1,=src
inner
LDR R2,[R1]
LDR R3,[R1,#4]
CMP R2,R3 ;比较R2,R3的值。
STRLT R3,[R1] ;如果R2<R3,则在数据段交换存储两个数据。
STRLT R2,[R1,#4]
ADD R1,R1,#4
CMP R1,R6
BLT inner ;跳转到inner,比较后面两个数据。如果比较完成,执行下条指令。
ADD R4,R4,#4
CMP R4,#len
SUBLE R6,R6,#4 ;跳转到outer,从起始数据开始新一轮数据比较。如果完成,执行下条指令。
BLE outer
stop ;使程序退出。
MOV R0,#0X18
LDR R1,=0X20026
SWI 0X123456
AREA array,DATA,READONLY ;定义数据段,32个32位的数据。
src DCD 2,4,10,8,14,1,20,21,45,32,78,90,54,58,0,22,55,43,19,20,43,33,22,56,16,26,27,28,29,30,31,32
len EQU 32*4
END
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。