51 汇编语言编程:求最大、最小值的乘积
来源:互联网 发布:python 多行命令 编辑:程序博客网 时间:2024/05/22 04:29
;求 MCS51 内部RAM 的 40H~4FH 中 16 个数据中最大值和最小值的积。
;其中最大值和最小值分别放到 50H 和 51H 中,积的低位和高位分别放到 52H 和 53H 中。
;题目链接:http://zhidao.baidu.com/question/518773968291621045.html
;求最大、最小值,再相乘,做而论道编写出来了程序,将在后面列出。
;为了进行验证,提问者需要准备 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 的积。
提问者评价:谢谢!
- 51 汇编语言编程:求最大、最小值的乘积
- 求数组的最大最小值
- 求序列的最大最小值
- 80x86汇编语言编程:查找字符串中的最大、最小值
- 求子数组的最大乘积
- 求连续子数组的最大乘积
- 求子数组的最大乘积
- 求最大子序列的乘积
- 求乘积最大组
- 编程之美--求数组的子数组的最大乘积
- 求最大、最小值的高效算法
- 分治求数组的最大最小值
- 求绝对矩阵最大的最小值
- SQL求字符串格式的最大最小值
- 分治法求数组的最大最小值
- 求三个数的最大最小值
- JavaScript求数组元素的最大/最小值
- 二分法求最大距离的最小值
- 七.学习数据结构之树
- Maven对重复依赖的解决方案
- 80x86 汇编编程:输出一个矩阵的左下三角部分
- 51 汇编语言编程:8个按键控制8个LED
- c++高精度模板
- 51 汇编语言编程:求最大、最小值的乘积
- 用普通 I/O 口模拟标准 UART 串行口
- 用80x86汇编 求约瑟夫环问题
- 80x86 汇编语言编程:求和
- 80x86 汇编语言编程:输入字符串,排序输出
- 80x86 汇编语言编程:统计数组每个元素中 1 的个数
- 集电结反偏不是截止状态吗,三极管怎么还能放大
- 80x86 汇编语言编程:BCD 码转二进制
- 51 单片机的 P0 口