zoukankan      html  css  js  c++  java
  • 查表程序设计

    查表程序:
    所谓查表法,就是对一些复杂的函数运算如sinx,x+x^2等,事先把其全部可能范围的函数值按一定的规律编成表格(实际上是ROM的内存单元)存放在计算机的ROM(是程序存储器)。当用户程序中需要使用这些函数时,直接按编排好的索引寻找答案。这种方法节省了运算步骤,使程序更简便,执行速度更快。在控制应用场合或智能仪器仪表中,经常使用查表法。

    为了实现查表功能:在51系列单片机中专门设置了两条查表指令:

    MOVC A,@A+DPTR   ;常用,一般DPTR做基地址,A做游标,这样就可以访问一个特定的表格了

    MOVC A,@A+PC

    例子:
    已知数据0~9的平方,设变量x的值在累加器A中,查表后求x^2的值,并放回A中保存。试编写程序

    假设:RAM的40H,41H,分别放着03H,09H,求其平方,放在A中

    注:这里03H表示十进制3,025H表示十进制25,本来025不等于25,但是为了简便,并且在内存中存的都是16进制,所以这里直接用16进制数值等价于十进制数值

    解:源代码入下:

    ORG 0000H
    LJMP INIT
    ORG 0100H
    INIT:        ;初始化,向RAM的40H,41H单元中存放3和9用来查表
        MOV R0,#40H
        MOV @R0,#03H
        INC R0
        MOV @R0,#09H
    MAIN:
        MOV R0,#40H
        MOV DPTR,#TABLE     ;让DPTR指向TABLE,A中存放表格中的带访问的下标,下标从0开始
        MOV A,@R0      
        MOVC A,@A+DPTR    ;访问TABLE[3]
        INC R0
        MOV A,@R0
        MOVC A,@A+DPTR    ;访问TABLE[9]
    
        SJMP $
    TABLE:        ;存放在ROM中的表格,TABLE的地址理论上可以取得ROM中的任何地址
        DB 00H,01H,04H,09H,16H
        DB 25H,36H,49H,64H,81H
        END

    分析结果:

    寄存器结果:


    ROM中的表格:  怎末查看这个表格,很简单,在调试的时候看DPTR里的值,就是表格在ROM中的地址

  • 相关阅读:
    C# DateTimePicker控件详解
    python2.7虚拟环境virtualenv安装及使用
    Python2.7 安装numpy报错解决方法
    关于C语言中递归的一点点小问题
    Drozer--AndroidApp安全评估工具
    Android--native层so文件调试
    New Blog
    小旭讲解 LeetCode 53. Maximum Subarray 动态规划 分治策略
    2017年度回忆与总结 – 心态
    基于文本图形(ncurses)的文本搜索工具 ncgrep
  • 原文地址:https://www.cnblogs.com/nanfengnan/p/14958562.html
Copyright © 2011-2022 走看看