📄 mm.asm
字号:
DATCOUNT EQU 23
DATMAX DATA 40H
DATMAXH DATA 41H
DATMAXL DATA 42H
DATMIN DATA 43H
DATMINH DATA 44H
DATMINL DATA 45H
MM: MOV B,DATCOUNT ;保存数据个数
MOVX A,@DPTR ;读取第一个数据
MOV DATMAX,A ;作为最大值的初始值
MOV DATMIN,A ;也作为最小值的初始值
MOV A,DPL ;取第一个数据的地址
MOV DATMAXL,A ;作为最大值存放地址的初始值
MOV DATMINL,A ;也作为最小值存放地址的初始值
MOV A,DPH
MOV DATMAXH,A
MOV DATMINH,A
MOV A,B ;取数据个数
DEC A ;减一,得到需要比较的次数
JZ MME ;只有一个数据,不需要比较
MOV R1,A ;保存比较次数
PUSH DPL ;保护数据块的首址
PUSH DPH
MM1: INC DPTR ;指向一个新的数据
MOVX A,@DPTR ;读取这个数据
MOV B,A ;保存
SETB C ;与最大值比较
SUBB A,R6
JC MM2 ;不超过当前最大值,保持当前最大值
MOV DATMAX,B ;超过当前最大值,更新最大值存放地址
MOV DATMAXH,DPH ;同时更新最大值存放地址
MOV DATMAXL,DPL
SJMP MM3
MM2: MOV A,B ;与最小值比较
CLR C
SUBB A,DATMIN
JNC MM3 ;大于或等于当前最小值,保持当前最小值
MOV DATMIN,B ;更新最小值
MOV DATMINH,DPH ;更新最小值存放地址
MOV DATMINL,DPL
MM3: DJNZ R1,MM1 ;处理完全部数据
POP DPH ;恢复数据首址
POP DPL
MME: RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -