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 |
… | … |
广告