实验目的
1、了解掌握对分检索程序结构设计方法。
2、熟悉理解对分检索程序结构设计原则 。
实验内容及步骤:
对分检索是按对分原则取出数据与关键字进行比较,它要求数据区已排好序。以升序数据区为例,检索过程是:取数据区中间位置的数与关键字比较,若相等,则检索成功。若数大于关键字,下次对分检索的数据区范围是本次检索数据起点到本次取数位置;若数小于关键字,下次对分检索的数据区范围是从本次取数位置到数据区的终点。依次类推,可逐渐缩小检索范围,直到检索结束。

图1
分析:R0 内部RAM中数据区的首地址
R7 数据区的字节长度
2BH 要检索的关键字
R2 取数序号
2AH 起始序号
R3 检索次数计数器
77H 检索到的数据
78H 若检索成功存放关键字序号,否则=FF。
79H 检索成功计数器次数
ORG 0000H
LJMP START
ORG 1000H
START:MOV 2AH ,#00H ;检索范围起点
MOV R7 ,#10H ;检索范围终点
MOV 2BH ,#09H ;关键字
MOV R3 ,#01H ;检索次数初值
LOOP1:MOV R0 ,#40H ;数据区首址
MOV A ,2AH ;
ADD A , R7 ;起点加终点
CLR C ;
RRC A ;除2取整
MOV R2 , A ;存放取数的序号
CLR C ;
SUBB A ,2AH ;判断是否到范围边缘
JZ LOOP3 ;是边缘则转
MOV A,R2 ;
ADD A ,R0 ;形成取数地址
MOV R0 ,A ;送数据地址
MOV A ,@R0 ;取数
MOV 77H ,A ;取数放77H中
MOV 78H ,R2 ;存取数序号
MOV 79H ,R3 ;存计数器值
CLR C ;
SUBB A ,2BH ;与关键字比较
JZ LOOP5 ;相等则检索成功
JNC LOOP2 ;取数大则转
MOV 2AH ,R2 ;取数小,修改检索范围终点
INC R3 ;检索次数加1
SJMP LOOP1 ;继续
LOOP2:MOV A ,R2 ;取数大,修改检索范围终点
MOV R7 ,A ;
INC R3 ;
SJMP LOOP1 ;继续
LOOP3:MOV R0 ,#40H ;达到边缘,比较数据是否为关键字
MOV A ,@R0 ;
CJNE A ,2BH ,LOOP4 ;
MOV 77H ,A ;存关键字
SJMP LOOP5 ;
LOOP4:MOV A ,#0FFH ;不是,送检索不成功标志
MOV R2 ,A ;
MOV 78H ,A ;
L00P5:SJMP LOOP5 ;结束
END
单片机教程,五系列(55讲)电子书全集下载论坛精选:
单片机教程,MCS51单片机从零开始 第一讲:初识单片机
http://bbs.huazhoucn.com/Topic.aspx?id=2539
单片机教程,MCS51单片机从零开始 第二讲:MCS-51单片机简述
http://bbs.huazhoucn.com/Topic.aspx?id=2540
单片机教程,MCS51单片机从零开始 第三讲:单片机相关常用名词解释
http://bbs.huazhoucn.com/Topic.aspx?id=2541
单片机教程,MCS51单片机从零开始 第四讲:计算机中数的表示及运算
http://bbs.huazhoucn.com/Topic.aspx?id=2542
单片机教程,MCS51单片机从零开始 第五讲:常用逻辑电路
http://bbs.huazhoucn.com/Topic.aspx?id=2544
单片机教程,MCS51单片机从零开始 第六讲:51单片机的结构及其组成
http://bbs.huazhoucn.com/Topic.aspx?id=2545
单片机教程,MCS51单片机从零开始 第七讲:51单片机的引脚
http://bbs.huazhoucn.com/Topic.aspx?id=2546
单片机教程,MCS51单片机从零开始 第八讲:8051单片机I/O引脚工作原理
http://bbs.huazhoucn.com/Topic.aspx?id=2547
单片机教程,MCS51单片机从零开始 第九讲:8051单片机的存储器结构
http://bbs.huazhoucn.com/Topic.aspx?id=2548
单片机教程,MCS51单片机从零开始 第十讲:编码及译码器工作原理
http://bbs.huazhoucn.com/Topic.aspx?id=2549
单片机教程,MCS51单片机从零开始 第十一讲:存储器的存储原理
http://bbs.huazhoucn.com/Topic.aspx?id=2550
单片机教程,MCS51单片机从零开始 第十二讲:51单片机的特殊功能寄存器
http://bbs.huazhoucn.com/Topic.aspx?id=2551
单片机教程,MCS51单片机从零开始 第十三讲:51单片机CPU的内部结构
http://bbs.huazhoucn.com/Topic.aspx?id=2552
单片机教程,MCS51单片机从零开始 第十四讲:定时器/计数器的基本结构及工作原理
http://bbs.huazhoucn.com/Topic.aspx?id=2553
单片机教程,MCS51单片机从零开始 第十五讲:51单片机的中断系统
http://bbs.huazhoucn.com/Topic.aspx?id=2554
单片机教程,MCS51单片机从零开始 第十六讲:51单片机的复位
http://bbs.huazhoucn.com/Topic.aspx?id=2555
单片机教程,MCS51单片机从零开始 第十七讲:51单片机执行指令的过程
http://bbs.huazhoucn.com/Topic.aspx?id=2556
单片机教程,MCS51单片机从零开始 第十八讲:51单片机的延时及时序分析
http://bbs.huazhoucn.com/Topic.aspx?id=2557
单片机教程,MCS51单片机从零开始 第十九讲:汇编语言基础
http://bbs.huazhoucn.com/Topic.aspx?id=2558
单片机教程,MCS51单片机从零开始 第二十讲:汇编语言及汇编过程
http://bbs.huazhoucn.com/Topic.aspx?id=2556
单片机教程,MCS51单片机从零开始 第二十一讲:汇编程序的基本结构
http://bbs.huazhoucn.com/Topic.aspx?id=2560
单片机教程,MCS51单片机从零开始 第二十二讲:51单片机的寻址方式
http://bbs.huazhoucn.com/Topic.aspx?id=2561
单片机教程,MCS51单片机从零开始 第二十三讲:数据传送类指令分析
http://bbs.huazhoucn.com/Topic.aspx?id=2562
单片机教程,MCS51单片机从零开始 第二十四讲:算术运算类指令分析
http://bbs.huazhoucn.com/Topic.aspx?id=2563
单片机教程,MCS51单片机从零开始 第二十五讲:逻辑运算及移位指令分析
http://bbs.huazhoucn.com/Topic.aspx?id=2564
单片机教程,MCS51单片机从零开始 第二十六讲:控制转移类指令分析
http://bbs.huazhoucn.com/Topic.aspx?id=2565
单片机教程,MCS51单片机从零开始 第二十七讲:布尔变量操作指令分析
http://bbs.huazhoucn.com/Topic.aspx?id=2566
单片机教程,MCS51单片机从零开始 第二十八讲:伪指令分析
http://bbs.huazhoucn.com/Topic.aspx?id=2567