【单片机】关键字查找程序设计实验

 一、实验目的和要求

        理解无序表的概念和数据结构,熟悉并掌握单片机中数据查找的基本原理和 操作方法,以及使用 MOVC A, @A+DPTR 指令进行数据查找的技术。

二、实验内容

(一)实验内容

        第 4 部分 PPT-P26 查找关键字程序,这个程序原题为:从 50 个字节的无序表中查找一个关键字“××H”。若找到,将关键字所在地址存入 R2R3;若找不到,将 0000H 存入 R2R3。 现在要求改为 16 个数据的无序表,主程序从 0030H 开始执行,表的首地址放在 0100H。要求采用 MOVC A, @A+DPTR 指令。

(二)实验原理图

自己画的🤗

(三)实验步骤

        编写程序;使用单步、断点方式调试程序,在无序表中查找关键字。理解其中的原理,尝试查找表中存在或不存在的关键字。

(四)程序清单
      ORG   0000H
      LJMP  MAIN
      ORG   0030H
MAIN: MOV   30H,#10H ;查找关键字 10H
      MOV   R1,#16
      MOV   A,#0
      MOV   DPTR,#TAB4
LOOP: PUSH  ACC
      MOVC  A,@A+DPTR
      CJNE  A,30H,LOOP1
      MOV   R2,DPH
      MOV   R3,DPL
      POP   ACC
DONE: RET
LOOP1: POP  ACC
      INC   DPTR
      DJNZ  R1,LOOP
      MOV   R2,#00H
      MOV   R3,#00H
      AJMP  DONE
      ORG   0100H
TAB4:DB    00H,30H,45H,23H,44H,74H,0F5H,10H,3EH,0A3H,13H,56H,0C2H,0B3H,77H,99H

三. 实验结果及分析(包括调试过程、运行截图、结果分析说明)

        首先在我们设定的 TAB4 表中查找 10H 这个关键字,由程序可知,R2R3 中的值应为0107H,由下图可知程序正确。 然后我们又查找表中不存在的关键值0FEH,这时正确结果应为 R2R3 中 0000H,P1、P2、P3 中的值在全速运行停止后的结果应为0FFH,由下图可知我们的程序完全正确。

查找到的情况如下:

查找不到的情况如下:

四、实验总结

        在这个实验中,我们编写了一段汇编代码来查找指定的关键字。使用了循环和条件判断来遍历数据表,并逐个比较数据与关键字是否匹配。当找到匹配的关键字时,我们记录了该关键字在数据表中的位置,然后通过跳转指令退出循环。若数据表中没有匹配的关键字,我们也有相应的处理逻辑。

        编写这段代码时,我们需要考虑如何有效地利用寄存器和指针,以及合理使用循环和条件判断来实现目标。此题是根据作业题而来,在已有的程序上进行改编,所以较为简单,但对于细节的把握很是严谨,于我来说还需深思考虑。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值