A-A+

求两个无符号数数据块的最大值 结果存入MAX单元。设数据块长度都不为0 首地址分别为BLOC

2022-08-13 22:19:38 问答库 阅读 199 次

问题详情

求两个无符号数数据块的最大值,结果存入MAX单元。设数据块长度都不为0,首地址分别为BLOCK1(40H)和BLOCK2(60H),数据块首字节为数据块长度。

参考答案

编程如下:
主程序:
MAX EQU 30H
BLOCK1 EQU 40H
BLOCK2 EQU 60H
COMAX:MOV R1,#BLOCK1 ;取第一数据块首址
LCALL FMAX ;求第一数据块最大值(最大值→A)
MOV MAX,A ;暂存第一数据块最大值
MOV R1,#BLOCK2 ;取第二数据块首址
LCALL FMAX ;求第二数据块最大值(最大值→A)
CJNE A,MAX,NEXT ;比较两个数据块的最大值
NEXT:JNC NEXT1 ;C=0,MAX2≥MAX1
RET ;C=1,MAX2<MAX1,MAX1→MAX
NEXTI:MOV MAX,A ;MAX2→MAX
RET ;
求数据块最大值子程序:
FMAX: MOV A,@R1 ;取数据块长度
MOV R2,A ;R2作计数器
CLR A ;准备作比较
FMLP: INC R1 ;指向下一个数据
CLR C ;准备作减法
SUBB A,@R1 ;用减法作比较
JNC FMLP1 ;A≥(R1),转
MOV A,@R1 ;A<(R1),(R1)→A
SJMP FMLP2 ;
FMLP1:ADD A,@R1 ;恢复A
FMLP2:DJNZ R2,FLMP ;判循环
RET ;

考点:数据,最大值