8085微处理器中查找数据数组中最小数的程序
在这个程序中,我们将学习如何使用8085查找一组字节中最小的数字。
问题陈述
编写8085汇编语言程序,以查找一组字节中最小的数字。
讨论
在这个程序中,数据从8001H地址开始存储。8000H地址存储着数据块的大小。程序执行完毕后,最小值将存储在9000H地址。
逻辑很简单,我们首先将第一个数字加载到寄存器B中。在每次迭代中,我们从内存中读取数字并将其存储到寄存器A中。然后,如果B > A,则我们将A的值更新到B,否则继续进行下一次迭代。这样我们就可以找到一组字节中最小的数字。
输入
地址 | 数据 |
---|---|
... | ... |
8000 | 06 |
8001 | 55 |
8002 | 22 |
8003 | 44 |
8004 | 11 |
8005 | 33 |
8006 | 66 |
... | ... |
流程图
程序
地址 | 十六进制代码 | 标签 | 助记符 | 注释 |
---|---|---|---|---|
F000 | 21, 00, 80 | LXI H,8000H | 指向获取数组大小的地址 | |
F003 | 4E | MOV C, M | 获取数组大小 | |
F004 | 23 | INX H | 指向实际数组 | |
F005 | 46 | MOV B, M | 将第一个数字加载到B寄存器 | |
F006 | 0D | DCR C | C寄存器减1 | |
F007 | 23 | LOOP: | INX H | 指向下一个位置 |
F008 | 7E | MOV A, M | 将下一个数字从内存移动到累加器 | |
F009 | B8 | CMP B | 比较累加器和B寄存器 | |
F00A | D2, 0E, F0 | JNC SKIP | 如果B <= A,则跳过 | |
F00D | 47 | MOV B, A | 如果进位标志CY为1,则更新B寄存器 | |
F00E | 0D | SKIP: | DCR C | C寄存器减1 |
F00F | C2, 07, F0 | JNZ LOOP | 当计数器不为0时,跳转到LOOP | |
F012 | 21, 00, 90 | LXI H,9000H | 指向目标地址 | |
F015 | 70 | MOV M, B | 存储最小值 | |
F016 | 76 | HLT | 程序结束 |
输出
地址 | 数据 |
---|---|
... | ... |
9000 | 11 |
... | ... |
广告