📄 main.asm
字号:
//============================================================================
//
// The information contained herein is the exclusive property of
// Sunplus Technology Co. And shall not be distributed, reproduced,
// or disclosed in whole in part without prior written permission.
//
// (C) COPYRIGHT 2001 SUNPLUS TECHNOLOGY CO.
// ALL RIGHTS RESERVED
//
// The entire notice above must be reproduced on all authorized copies.
//
//============================================================================
// 工程名称: 冒泡排序
// 功能描述: 程序4.6 冒泡排序
// 在首地址为0X0000的RAM之中依次存有数据40、6、32、12、9、24、28,使用冒泡法编写
// 对这些数据进行按升序号排序的程序
// 文件来源: 《SPCE061单片机原理及应用技术》 第四章 程序设计
// IDE环境: SUNPLUS u'nSPTM IDE 1.8.0(or later)
//
// 涉及的库: (a) C-Lib: (CMacro.lib);
// 组成文件:
// main.asm
// 日期: 2003-5-22(建立)
// 2003-7-16(添加版本说明及版权声明并做代码标准化)
//==============================================================================
.IRAM
array: .DW 40,6,32,12,9,24,28;
.VAR flag; //定义数据交换标志
.CODE
.PUBLIC _main;
_main:
SORT:
bp = array; //数据的首地址送bp
r1 = 0x0006; //数据的个数送r1
r4 = 0x0000;
[flag] = r4; //清交换标志
LOOP:
r3 = [bp];
cmp r3,[bp+1]; //两数比较
jb NEXT; //如果第一个小于第二个数则跳转
r2 = [bp+1]; //
[bp] = r2; //第二个数移到存第一数的单元中
[bp+1] = r3; //第一个数移到存第二数的单元中
r3 = 0x0001;
[flag] = r3; //交换标志置1
NEXT:
bp = bp+1; //地址增1
r1 -= 1; //计数为0吗?,否则跳转
JNZ LOOP;
r4 = [flag]
jnz SORT; //交换标志为0吗?否则跳到SORT
MAINLOOP:
nop;
JMP MAINLOOP;
//===============================================================================
//main.asm 结束
//===============================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -