好的 顶一个啊
ORG 00H 程序开始地址
MOV R1,#20H 将地址20保存到寄存器R1
MOV R2,#7 将常数7保存到寄存器R2,这里是总循环次数
PRE1:
CJNE R2,#0,PRE2 比较R2中的数,如果和0不相等,转到PRE2
SJMP LOOP2 如果相等,转到LOOP2,大循环结束
PRE2:
MOV R3,R2 将R2中的值赋给R3寄存器
START:
MOV A,@R1 将R1中间接寻址的值赋到累加寄存器中
INC R1 R1自增1
DEC R3 R3自减1
CJNE A,@R1,LOOP1 比较累加寄存器中的值和R1间接寻址的值,不相等转LOOP1
SJMP LOOP3 相等转LOOP3
LOOP1:
JC LOOP3 如果累加寄存器的值比R1间接寻址的值小,转LOOP3
XCH A,R4 如果大,交换两者的值,用R4做临时存放
XCH R4,@R
XCH R4,A
SJMP LOOP3 交换结束,转LOOP3
LOOP3:
CJNE R3,#0,START 比较R3和0,如果不相等,转START
DEC R2 如果相等,R2自减1
SJMP PRE1 跳转到PRE1
LOOP2:
END 程序结束
[此贴子已经被作者于2007-7-17 8:15:56编辑过]