当前位置:首页 > 单片机 > 单片机
[导读] ;求 MCS51 内部RAM 的 40H~4FH 中 16 个数据中最大值和最小值的积。;其中最大值和最小值分别放到 50H 和 51H 中,积的低位和高位分别放到 52H 和 53H 中。;求最大、最小值,再相乘,做而论道编写出来了

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

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


;求最大、最小值,再相乘,做而论道编写出来了程序,将在后面列出。


;为了进行验证,提问者需要准备 16 个数据,然后再执行做而论道编写的程序。


;那么,综合到一起的程序如下:


ORG 0000H

;---------------------下面是在 40H~4F 中,随意写 16 个数据

MOV 40H, #5

MOV 41H, #32

MOV 42H, #34

MOV 43H, #67

MOV 44H, #125

MOV 45H, #52

MOV 46H, #18

MOV 47H, #53

MOV 48H, #244

MOV 49H, #27

MOV 4AH, #43

MOV 4BH, #93

MOV 4CH, #12

MOV 4DH, #3

MOV 4EH, #166

MOV 4FH, #42


;---------------------下面就是做而论道编写的求最大、最小值相乘的程序


MOV 50H, #0 ;先用0当做最大值

MOV 51H, #255 ;用255当做最小值

MOV R0, #40H ;起始地址

LOP:

MOV A, @R0 ;取来一个字节

CJNE A, 50H, $ + 3 ;和最大值相比较

JC N1 ;小于就转移

MOV 50H, A ;大于就保存

N1: ;下面处理最小值

CJNE A, 51H, $ + 3

JNC NEXT

MOV 51H, A

NEXT:

INC R0

CJNE R0, #50H, LOP ;不到 50H 转移,最后的地址是 4FH


MOV A, 50H

MOV B, 51H

MUL AB ;最大、最小相乘

MOV 52H, A

MOV 53H, B ;保存积


SJMP $ ;停止


END


经过单步执行,可以看到一次一次的比较、保存,最大值是 F4H(即 244),最小值是 03H。


在 52H、53H 中出现的是 DCH 和 02H。02DCH 即 732,这就是 244 * 3 的积。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭