找出8个无符号二进制数的最大值
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
找出8个无符号二进制数的最大值
内部RAM 20H单元开始存放8个8位无符号二进制数,找出其中的最大数,设计程序如下:ORG 0000H
LJMP MAIN ;程序入口
MAIN: MOV 20H,#0F2H ;程序初始化
MOV 21H,#05H
MOV 22H,#54H
MOV 23H,#9H
MOV 24H,#0F7H
MOV 25H,#12H
MOV 26H,#0E8H
MOV 27H,#23H
MOV R0,#20H ;首地址到R0
MOV R7,#07H ;长度计数器
MOV A,@R0 ;读第一个数到累加器
LOOP:CLR C ;清零进位标志位CY INC R0 ;修改地址
MOV 2AH,A ;累加器中的数送2AH
MOV 2BH,@R0 ;读下一个数
SUBB A,2BH ;把累加器中的数与2BH中的数相减JC ABC ;判断进位标志,=1执行ABC,=0向下执行
MOV A,2AH ;把较大数送人累加器
LJMP TT ;跳转到TT
ABC:MOV A,2BH ;把较大数送入累加器
TT:DJNZ R7,LOOP ;判断8个数比完没,没完去LOOP,完了向下执行
SJMP $ ;等待
END
ORG 0000H
LJMP MAIN
MAIN: MOV 50H,#01H
MOV 51H,#02H
MOV 52H,#03H
MOV 53H,#04H
MOV 54H,#05H
MOV 55H,#06H
MOV 56H,#07H
MOV 57H,#08H
MOV 58H,#09H
MOV 59H,#0AH
MOV 5AH,#0BH
MOV 5BH,#0CH
MOV 5CH,#0DH
MOV 5DH,#0EH
MOV 5EH,#0F1H
MOV 5FH,#10H
MOV R0,#50H
MOV R1,#50H
MOV R7,#10H
MOV A,@R0
L1:CLR C
MOV 70H,A
INC R0
MOV 71H,@R0
SUBB A,71H
JC LZ
MOV A,70H
JMP TT
LZ:MOV A,71H
TT:DJNZ R7,L1
MOV 61H,A
;******************************** L2:CLR C
MOV A,72H
MOV 73H,A
INC R1
MOV 74H,@R1
SUBB A,74H
JC LS
MOV A,74H
JMP ZZ
LS:MOV A,73H
ZZ:DJNZ R7,L2
MOV 61H,A
SJMP $
END
程序框图: