作业帮 > 数学 > 作业

片内RAM30H~39H单元有10个单元字节无符号数,找上最大的数存入R5

来源:学生作业帮 编辑:作业帮 分类:数学作业 时间:2024/05/17 08:16:39
片内RAM30H~39H单元有10个单元字节无符号数,找上最大的数存入R5
;test
\x05MOV 30H,#3
\x05MOV 31H,#2
\x05MOV 32H,#4
\x05MOV 33H,#5
\x05MOV 34H,#7
\x05MOV 35H,#8
\x05MOV 36H,#1
\x05MOV 37H,#0
\x05MOV 38H,#5
\x05MOV 39H,#90
;test
\x05MOV R0,#30H ;起始地址.
\x05MOV R5,#00H ;先用0当做最大值.
\x05MOV R2,#10 ;数据长度.
LOOP:
\x05MOV A,@R0 ;取来一个数据.
CLR C
SUBB A,R5 ;减“最大值”.判断Cy位,Cy为1则说明R5为最大
\x05JC rel1 ;不够减就算了.
\x05MOV A,@R0 ;够减,就把这个数据.
\x05MOV R5,A ;当做最大值.
rel1:
\x05INC R0 ;转向下一个.
\x05DJNZ R2,LOOP ;循环.
\x05SJMP $ ;结束.
END
再问: R5是寄存器啊,怎么能拿来比较啊
再答: 这里的“比较”是通过做减法来实现的。SUBB A, R5这条指令也是合法的。代码我仿真过了,没有错。还有不清楚的可以继续追问。
再问: 片内RAM30H~39H单元有10个单元字节无符号数,10个数进行比较将最大的数存入R5,题目有点错,是将10个数比较后找出最大的存入R5谢谢
再答: ;test MOV 30H,#3 MOV 31H,#2 MOV 32H,#4 MOV 33H,#5 MOV 34H,#7 MOV 35H,#8 MOV 36H,#1 MOV 37H,#0 MOV 38H,#5 MOV 39H,#90 ;test MOV R0, #31H ;起始地址. MOV R5,30H ;先用30H地址的值当做最大值. MOV R2, #9 ;数据长度,把第一个当做最大,与剩下的九个比较. LOOP: MOV A, @R0 ;取来一个数据. CLR C SUBB A, R5 ;减“最大值”.判断Cy位,Cy为1则说明R5为最大 JC rel1 ;不够减就算了. MOV A, @R0 ;够减,就把这个数据. MOV R5,A ;当做最大值. rel1: INC R0 ;转向下一个. DJNZ R2, LOOP ;循环. SJMP $ ;结束. END 还可以用CJNE指令来处理
再问: 9 8 7 6 2 1 1 9 2 加我,谢谢