实验 6
设计一个子程序,功能为将 R0 指向的内部 RAM 中 16 个双字节有符号数按
从大到小的次序排序。(数据存放格式:低字节在偶地址,高字节在奇地址)
设计一个子程序,功能为将 R0 指向的内部 RAM 中 16 个双字节有符号数进
行求和运算。(请设计出口参数)
调用上述两个子程序,完成 16 个双字节有符号数据的排序后的求和。
实验目的:排序算法的编程和调试;
子程序设计;
多字节有符号数的算术运算。
ORG 0000H
BLOCK DATA 21H ;determine the start position of block
SUMH DATA 10H
SUMM DATA 11H
SUML DATA 12H
TMP DATA 13H ;for temperately saving some value
LEN DATA 10H ;determine the length of the block
MAIN: MOV R0,#BLOCK
MOV R7,#LEN
LCALL INIT ;to initialize the block
MOV R0,#BLOCK
MOV R7,#LEN
LCALL SORT ;to sort the block
MOV R0,#BLOCK
MOV R7,#LEN
LCALL SUM ;to compute the sum of the block
LJMP FINISH ;finish
;the subprogram for sorting
SORT: DEC R7
LOOP0: CLR F0
MOV R0,#BLOCK
MOV A,R0
MOV R1,A
INC R1
INC R1
MOV A,R7
MOV R6,A;set the number of loops for loop1
LOOP1: MOV A,@R0
MOV TMP,A ;save temperately
MOV A,@R1
CJNE A,TMP,NEXT1;if two are equal, to compare their lower bytes
INC R0
INC R1