Open ustcanycall opened 10 years ago
本次实验我选择的是CodeWarrior for ARM Developer Suite v1.2 , 简称ADS 1.2 .它支持ARM10之前的所有ARM 系列微控制器,支持软件调试及JTAG硬件仿真,支持汇编,c和c++源程序。
AREA Sort,CODE,READONLY ENTRY start MOV R4,#0 LDR R6,=src ADD R6,R6,#len outer LDR R1,=src ;R1记录内循环的次数 inner LDR R2,[R1] ;R2,R3为进行比较的两个数 LDR R3,[R1,#4] CMP R2,R3 ;进行两个数的比较 STRGT R3,[R1] ;交换两个数据 STRGT R2,[R1,#4] ADD R1,R1,#4 CMP R1,R6 ;R6记录排序数据的末尾 BLT inner ADD R4,R4,#4 ;R4记录外层循环的次数 CMP R4,#len SUBLE R6,R6,#4 BLE outer AREA Array,DATA,READWRITE src DCD 7,29,87,43,11,23,13011042 len EQU 7*4
在这段代码中使用了五个通用寄存器,R1,R2,R3,R4,R6. R1记录冒泡排序中内循环的次数 R2,R3记录两个相邻需要比较的数 R4记录冒泡排序外层循环的次数 R6记录排序数据的末尾
运行前内存数据: 从0x8048到0x8064为7个数据,没四个字节为一个数据,此时数据是乱序的
运行后内存数据: 从0x8048到0x8064为7个数据,没四个字节为一个数据,此时数据已经按照从小到大被排列
用ARM写一个冒泡排序
实验平台
本次实验我选择的是CodeWarrior for ARM Developer Suite v1.2 , 简称ADS 1.2 .它支持ARM10之前的所有ARM 系列微控制器,支持软件调试及JTAG硬件仿真,支持汇编,c和c++源程序。
实验代码
寄存器的使用状况
在这段代码中使用了五个通用寄存器,R1,R2,R3,R4,R6. R1记录冒泡排序中内循环的次数 R2,R3记录两个相邻需要比较的数 R4记录冒泡排序外层循环的次数 R6记录排序数据的末尾
运行情况
运行前内存数据: 从0x8048到0x8064为7个数据,没四个字节为一个数据,此时数据是乱序的
运行后内存数据: 从0x8048到0x8064为7个数据,没四个字节为一个数据,此时数据已经按照从小到大被排列