8085线性查找程序
在本程序中,我们将学习如何使用8085在字节块中搜索元素。
问题陈述
编写8085汇编语言程序,使用线性搜索技术在一个数据块中搜索关键值。
讨论
在这个程序中,数据存储在8002H到8007H的位置。8000H包含块的大小,8001H保存要搜索的关键值。执行此程序后,它将返回找到项目的数据地址,并将地址存储在9000H和9001H位置。如果找不到项目,它将返回FFFFH。
如果数据存在于FFFFH内存地址中,它也会存储FFFFH,所以这是一个模棱两可的情况。我们假设数据没有存储在FFFFH中,所以我们选择该值来表示数据不存在。
输入
地址 | 数据 |
---|---|
... | ... |
8000 | 06 |
8001 | 55 |
8002 | 11 |
8003 | 22 |
8004 | 33 |
8005 | 44 |
8006 | 55 |
8007 | 66 |
... | ... |
流程图
程序
地址 | 十六进制代码 | 标签 | 助记符 | 注释 |
---|---|---|---|---|
F000 | 21, 00, 80 | LXI H,8000H | 指向获取数组大小 | |
F003 | 4E | MOV C, M | 获取数组大小 | |
F004 | 23 | INX H | 指向下一个位置 | |
F005 | 46 | MOV B, M | 获取要搜索的关键值 | |
F006 | 78 | MOV A, B | 将关键值放入累加器 | |
F007 | 23 | LOOP | INX H | 指向下一个位置 |
F008 | BE | CMP M | 将内存元素与累加器中的值比较 | |
F009 | CA, 19, F0 | JZ FOUND | 当Z标志被设置时,跳转到FOUND | |
F00C | 0D | DCR C | 将C减1 | |
F00D | C2, 07, F0 | JNZ LOOP | 当计数器不为0时,跳转到LOOP | |
F010 | 21, FF, FF | LXI H, FFFF | 将FFFFH加载到HL寄存器对 | |
F013 | 22, 00, 90 | SHLD 9000H | 存储到9000H | |
F016 | C3, 1C, F0 | JMP DONE | 跳转到DONE | |
F019 | 22, 00, 90 | FOUND | SHLD 9000H | 存储到9000H |
F01C | 76 | DONE | HLT | 终止程序 |
输出
地址 | 数据 |
---|---|
... | ... |
9000 | 06 |
9001 | 80 |
... | ... |
广告