8085程序:查找10个数中的最大值和最小值
在这个程序中,我们将学习如何在一段数据中找到最大值和最小值。
问题陈述
编写一个8085汇编语言程序,在一个包含十个8位数的数据块中查找最大值和最小值。
讨论
在这个程序中,我们将数据块的第一个数字加载到寄存器D和E中。D将存储最小值,E将存储最大值。在每次迭代中,我们将检查数字是否小于D,如果是,则用新数字更新D,然后再次将其与E比较以检查数字是否大于E。如果是,则用新数字更新E。
输入
| 地址 | 数据 |
|---|---|
| . . . | . . . |
| 8000 | 55 |
| 8001 | 22 |
| 8002 | 88 |
| 8003 | 77 |
| 8004 | 11 |
| 8005 | 99 |
| 8006 | 44 |
| 8007 | AA |
| 8008 | 33 |
| 8009 | 66 |
| . . . | . . . |
流程图

程序
| 地址 | 十六进制代码 | 标签 | 助记符 | 注释 |
|---|---|---|---|---|
| F000 | 21, 00, 80 | LXI H,8000H | 加载初始地址 | |
| F003 | 0E, 0A | MVI C,0AH | 加载数字个数 | |
| F005 | 56 | MOV D,M | 从内存中加载第一个数字 | |
| F006 | 5A | MOV E,D | 也把第一个数字加载到E | |
| F007 | 23 | INX H | 指向下一个位置 | |
| F008 | 0D | DCR C | 递减计数 | |
| F009 | 7E | LOOP | MOV A,M | 将内存中的数字加载到A |
| F00A | BA | CMP D | 将D与A比较 | |
| F00B | D2, 0F, F0 | JNC SKIP | 如果CY = 0,则A不大于D | |
| F00E | 57 | MOV D,A | 用A更新D | |
| F00F | BB | SKIP | CMP E | 将E与A比较 |
| F010 | DA, 14, F0 | JC DO | 如果CY = 1,则A不大于E | |
| F013 | 5F | MOV E,A | 用A更新E | |
| F014 | 23 | DO | INX H | 指向下一个位置 |
| F015 | 0D | DCR C | C递减1 | |
| F016 | C2, 09, F0 | JNZ LOOP | 跳转到循环 | |
| F019 | 21, 50, 80 | LXI H,8050H | 指向目标地址 | |
| F01C | 72 | MOV M,D | 存储最小值 | |
| F01D | 23 | INX H | 指向下一个位置 | |
| F01E | 73 | MOV M,E | 存储最大值 | |
| F01F | 76 | HLT | 结束程序 |
输出
| 地址 | 数据 |
|---|---|
| . . . | . . . |
| 8050 | 11 |
| 8051 | AA |
| . . . | . . . |
广告
数据结构
网络
关系型数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP