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中的地址

  • 相关阅读:
    hadoop配置笔记
    hadoop安装笔记
    抄一篇maven的备忘
    这个计划任务的名字老记不住,还是存一下了
    GodMode
    恢复oracle数据从delete
    在注册表中查看Windows10系统激活密钥的方法
    Jenkins 提效工具之 Jenkins Helper 使用介绍
    移动硬盘安装Ubuntu系统(UEFI引导)的一些记录
    Linux系统下的Jenkins的简要安装方法
  • 原文地址:https://www.cnblogs.com/nanfengnan/p/14958562.html
Copyright © 2011-2022 走看看