求MCS51内部RAM的40H与4FH中16个数据中最大值和最小值的积

其中最大值和最小值分别放到50H和51H中,结果的低位和高位分别放到52H和53H中

第1个回答  2013-11-05
;
MOV 50H, #0
MOV 51H, #255
MOV R0, #40H
LOP:
MOV A, @R0
CJNE A, 50H, $ + 3
JNC N1
MOV 50H, A
N1:
CJNE A, 51H, $ + 3
JC NEXT
MOV 51H, A
NEXT:
INC R0
CJNE R0, #50H, LOP

MOV A, 50H
MOV B, 51H
MUL AB
MOV 52H, A
MOV 53H, B

SJMP $

END追问

能不能把每行加上注释 我是初学者 测试通过了再给你加20 谢谢
你这个程序根本就不会停呀 是从40H到4FH找

追答

每行加上注释,写些什么呢?

MOV 50H, #0 ;--这行是向50H传送0

一看这条指令MOV...,就能知道这是《向50H传送0》,还需要用汉字写注释吗?
--------
测试通过了再给你加20
--测试本程序,你需要自己从40H到4FH,准备一批数据。
--你自己必须编写一个存数字的程序。

你这个程序根本就不会停呀
--这就看你的了,你可以让它连续执行,也可以让它单步执行。
--你让它停,它就会停。
========

程序,修改一下:
……
CJNE A, 50H, $ + 3
JNC N1 ;--改为 JC N1
MOV 50H, A
N1:
CJNE A, 51H, $ + 3
JC NEXT ;--改为 JNC NEXT
MOV 51H, A
……

修改两句即可。
========
本程序的功能,确实是实现:
内部RAM的40H与4FH中16个数据中最大值和最小值的积。
其中最大值和最小值分别放到50H和51H中,结果的低位和高位分别放到52H和53H中。

本回答被提问者采纳