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 |
| … | … |
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP