查表程序设计

合集下载

单片机汇编语言查表实例

单片机汇编语言查表实例

下面是汇编语言实现楼宇对讲功能的查表实例:

当单片机外部系统发来不同的指令时,便启动查表功能,实现不同的操作,如单片机接收到的指令保存在RXD中,RXD+1保存指令终止符号,如要实现某个操作,外部发来0XA0操作符到RXD中,0XFF到RXD+1中,即开启查表,开始执行下列程序:

MOV A,(RXD_Buf+1)

CJNE A,RXD_Buf,Exit_Receive_Msg_Proc如果为退出指令,则退出

MOV B,RXD_Buf

JmpX_By_Ins Division_Instruction,Run_Instr_Addr子程序

;==================================

Division_Instruction:

DB00H,01H,03H,05H,06H,07H,09H,0AH,13H,14H,15H,16H

DB28H,29H,2AH,2CH,2EH,30H,31H,33H,35H,FAH;FLAG OF END

;==================================

Run_Instr_Addr:

LJMP Call_By_Manger;00H;

LJMP Put_Down_Hook;01H;

LJMP Put_Off_Hook;03H;

LJMP Disable_Calling;05H;

LJMP Enable_Get_Msg;06H;

LJMP There_Are_Msg;07H;

LJMP Call_By_Door;09H;

LJMP FeedBack_Alarm;0AH

c语言查表法程序

c语言查表法程序

c语言查表法程序

摘要:

1.引言

a.介绍C 语言查表法的概念

b.说明查表法在编程中的应用和优势

2.查表法的原理

a.定义表格

b.设计查表算法

c.实现查表功能

3.查表法程序设计实例

a.线性查表法

i.原理介绍

ii.程序代码示例

b.二次查表法

i.原理介绍

ii.程序代码示例

4.查表法程序的优化

a.提高查表速度

i.缓存表数据

ii.减少无效查询

b.降低内存占用

i.压缩表格数据

ii.利用数据结构优化

5.总结

a.回顾查表法的重要性和应用场景

b.展望查表法在未来的发展趋势

正文:

C 语言查表法程序是一种在编程中广泛应用的数据处理技术。通过将数据以表格的形式存储在内存中,可以实现快速查找、插入、删除等操作,大大提高程序运行效率。本文将详细介绍C 语言查表法的原理、程序设计实例以及优化方法。

查表法的原理主要包括定义表格、设计查表算法和实现查表功能。首先,需要根据需求定义表格的数据结构,包括表格大小、每个表格项的位数等。接着,设计查表算法,根据不同的需求可以选择线性查表法或二次查表法。最后,实现查表功能,将算法应用到实际程序中,实现数据查找、插入、删除等操作。

在查表法程序设计实例部分,我们以线性查表法和二次查表法为例进行讲解。线性查表法是一种简单的查表方法,通过计算索引值直接获取对应的表格项。二次查表法则通过计算索引值对应的行和列,间接获取表格项。这两种方法各有优劣,适用于不同的场景。

查表法程序在实际应用中可能面临速度和内存占用的问题。为了提高查表速度,我们可以采用缓存表数据的方法,将经常使用的数据存储在高速缓存中,减少磁盘I/O 操作。此外,还可以通过减少无效查询来提高查表速度。降

星表数据查询系统的设计与开发

星表数据查询系统的设计与开发

星表数据查询系统的设计与开发

近年来,随着天文学研究的深入,星表数据的需求和应用越来越广泛。为了更

好地管理和查询这些数据,设计并开发星表数据查询系统变得越来越重要。本文将探讨星表数据查询系统的设计与开发,旨在为相关人员提供参考和支持。

1. 系统架构

星表数据查询系统的架构应该根据实际需求进行设计。在设计时,应该考虑到

系统的扩展性、可用性和数据的安全性等因素,以满足更广泛的需求。

例如,一个较为完整的星表数据查询系统应该包含以下几个模块:前端、后端、数据存储和数据处理模块。前端模块提供用户接口,后端模块提供数据查询和存储服务,数据存储模块负责存储星表数据,数据处理模块则负责对数据进行处理和分析。

2. 前端设计

前端设计是星表数据查询系统的重要组成部分,不仅要考虑外观和用户体验,

还要考虑用户的需求和查询功能的完整性。常见的查询功能包括按坐标、按星系名称、按固有运动等方式查询。

在前端设计时,通常使用HTML、CSS和JavaScript开发,构建可视化的用户

界面。此外,对于查询数据过程中的错误提示、数据可视化的处理,前端模块也需做相应的处理。

3. 后端实现

星表数据查询系统的后端实现,除了功能要求外,还需考虑系统的稳定性和性能。在实现时,应该选择适合系统规模的编程语言和数据库类型,并对数据进行查询优化,以提高查询效率。

例如,Java可以作为后端语言,MySQL可以作为数据存储的数据库;查询过

程可以采用缓存技术、索引技术和多线程技术,以加快查询和响应速度。

4. 数据存储

星表数据的存储通常采用关系型数据库或非关系型数据库,选择适合数据类型

3.2查表程序、子程序

3.2查表程序、子程序

例3:编程实现用8051的P1口控制一个共阳极的八段 码LED显示器,使显示器循环显示0~9十位数字,时 间间隔为1秒。
LED显示器共分为共阳极和共阴极两种。 共 阳 极
共 阴 极
共阴极或共阳极的LED显示器的段码表是已知的 (128页表7-1)。所以只需要利用查表指令依次将 段码查找出来并送入P1口输出去驱动显示器显示即 可。
为容易。
在MCS-51中查表时的数据表格是存放在程序
ROM而不是数据RAM,在编程时可以很方便地通 过DB或DW伪指令把表格的内容存入ROM中。用 于查表的指令有两条:
MOVC A,@A+DPTR MOVC A,@A+PC
这两条查表指令都可以对ROM中的数据表格 进行查找,查找数据的原理类似,但在使用时是有 区别的。
2、现场保护
在子程序调用时还应该注意现场保护的问题。即对 于那些不需要进行传递的参数,包括内存单元的内容, 工作寄存器的内容,以及各标志的状态等,都不应因 调用子程序而改变,要被保护起来。 现场保护的方法是在进入子程序时,将需要保护的 数据推入堆栈。在返回调用程序之前,则将推入堆栈 的数据弹出到原有的工作单元,恢复其原来的状态, 使调用程序可以继续往下执行。 这种现场保护的措施在中断时更为必要,更加不能 忽视。
3.2 查表程序和子程序
主要内容: 查表程序 子程序
在编写程序的过程中可以借鉴现有的数据、表

c语言的三维插值查表法

c语言的三维插值查表法

c语言的三维插值查表法

三维插值查表法是一种常用的数据插值方法,它通过预先生成的

三维表格,在给定的数据点之间进行插值,并得到所需的结果。该方

法常用于科学计算、数据处理和图像处理等领域。

首先,我们需要了解什么是数据插值。在实际应用中,我们经常

会遇到数据点不连续、不均匀的情况,而我们可能需要在这些不连续

的数据点之间进行计算或推断。这时候,插值方法就可以派上用场了。插值方法是一种通过已知数据点之间的关系,来估计未知数据点的数

值的方法。

三维插值查表法的基本思想是,通过构建一个三维表格,将待插

值点的数值与其周围的已知数据点进行比较,并进行合理的估计。这

个三维表格通常是一个二维数组,其中每个元素存储了对应数据点的

数值。构建这个三维表格的关键是选择合适的步长,使得表格能够较

好地反映数据点的空间结构。

三维插值查表法的步骤如下:

1.准备已知数据点。首先,我们需要有一组已知的数据点,这些

数据点可以是实测数据、模拟数据等。这些数据点应该尽可能覆盖整

个插值区域。

2.构建三维表格。根据已知数据点的空间分布和插值区域的边界

条件,我们可以决定三维表格的大小和步长。通常情况下,我们可以

选择一个较小的步长,以尽可能准确地反映数据点之间的关系。根据

步长,我们可以计算出三维表格的大小,并创建一个对应的二维数组。

3.插值计算。对于待插值点,我们可以根据其在三维表格中的位置,找到其周围的已知数据点。根据已知数据点的数值和位置关系,

我们可以使用插值算法来估计待插值点的数值。常用的插值算法有线

性插值、拉格朗日插值、样条插值等。

4.输出结果。一旦完成插值计算,我们就可以得到待插值点的估

再谈查表程序的设计技术

再谈查表程序的设计技术

A, # H 91 @ DP R 十^ T
扩展数据 衰蠢衰技术
在表 中元 素数 目太于 26的情况 5
下, 表中序号仅用累加器 A来表示是不够的 . 一般要用双字节 来表示表中序号 。这样 . 使用 MO C . V A @A+ P R指令查表 DT 时, 要用 D I P' R直接加 1 6位序号才能够 正确完成查表运算。 因 此 查表之前必 须进行 双字节地 址的加法运 算。磐程时 要注意
- -
电簪 量 ∞幢 年簟3 期


维普资讯 http://www.cqvip.com
P0 l 8 9. re9/= t 9 学习中易出现问 的原医及】决 法 簟 I

武汉 船舶职 业技 术学 院
雷建 龙 ・
Po l 8 9 r| / 9是电子设计 自动化 ( D ) e9 E A 特别是 印制 电路 板

解决 的方法是 使用 M V A,@A+D T O C P R指令进行查表
运算。此 时, 数据指针 D T P R作为基址寄存嚣指 向数据表 的人 口, 累加器 A中数据仍 为元素序 号。磐程模式如图 3 所示 。
寝卑区 寰格 医
各种 数字或 符号 的段驱动代码列成笔划表 ,固化在 R M 中, O 以便 配合查表程序掏成字符发生器驱动散码管
地址 、 中每个元素所 占的字节数 、 表 表中元素 的总散 、 当前访问 元素 的序号四个量进行控制。本文围绕这 四个控制量 , 就如何

自定义查询功能 设计与开发

自定义查询功能 设计与开发

自定义查询功能设计与开发

在现代软件系统中,自定义查询功能成为了必备的功能之一。用户可以根据自己的需求,自由组合查询条件,并获取符合条件的数据结果。下面我们将从数据库设计、查询语言选择和开发过程三个方面,详细介绍一种自定义查询功能的设计与开发方法。

一、数据库设计

在设计自定义查询功能时,首先需要确定数据库的表结构。表结构应该能够满足用户查询的需求,并且具备较高的灵活性和扩展性。通常,可以采用以下几种方式进行表结构设计:

1. 统一表结构:将不同类型的数据存储在同一个表中,通过类型字段进行区分。这种方式适用于数据类型相对简单且查询条件较少的情况,但对于复杂的查询需求可能不够灵活。

2. 分表结构:根据不同的数据类型或业务逻辑,将数据拆分为多个表。每个表可以有自己的字段和查询条件。这种方式适用于数据类型复杂且查询条件较多的情况,但需要更多的表和数据关联操作。

3. 动态表结构:根据用户的查询条件,动态生成查询表。这种方式可以根据用户的需求灵活生成表结构,但需要额外的开发工作和数据库管理。

根据实际需求和系统架构,选择合适的表结构设计方式。

二、查询语言选择

在实现自定义查询功能时,需要选择适合的查询语言。常见的查询语言有结构化查询语言(SQL)、面向对象查询语言(OQL)等。以下是对这两种查询语言的简要介绍:

1. SQL:SQL是一种广泛应用于关系型数据库的查询语言,可用于执行各种数据库操作,如查询、插入、更新、删除等。SQL语言具有成熟的标准和丰富的功能,适用于大多数数据库系统。

2. OQL:OQL是一种面向对象的查询语言,用于查询对象数据库中的数据。与SQL相比,OQL更加灵活,可以通过对象关系进行查询,支持面向对象的特性,如继承、多态等。但OQL的标准和应用范围相对较少。

单片机 查表程序 软件实验2

单片机  查表程序 软件实验2

实验八查表程序设计

一、实验目的

1.进一步熟悉MCS-51指令系统和汇编语言程序设计。

2.学会用MOVC指令编写查表程序。

二、实验内容

1.设计并调试一个查平方表的程序,其功能为应用查表指令MOVC A,@A+PC,求累加器A中数的平方值,结果平方值送A。要求待查的(A)≤15。

2.设计并调试一个根据电压值查与其对应的温度值的查表程序,其功能为应用查表指令MOVC A,@A+DPTR,求(A)中电压值对应的温度值,将温度值送R2R3(温度值为二字节的压缩BCD码),电压值的范围为(A)≤0FFH。实验程序参考框图如2-5所示。三、实验步骤

1.敲入程序和预定表后;

2.通过修改自变量参数启动并调试程序,直至正确为止。

3.边调试边体会用PC或DPTR作指针查表的区别。

开始

表首地址→(DPTR)

(A)+(A)+(DPTR)→(DPTR)

0→(A)

查表取第一个字节→(R2)

0→(A)

(DPTR)+1→(DPTR)

查表取第二个字节→(R3)

结束

图2-5 查表程序框图

四、实验报告要求

根据实验内容和程序参考流程,编出所需查表程序,列出实验程序清单。

五、思考题

1.当表的长度〉255个字节时应选哪一条指令查表?

答:使用MOVC A,@A+DPTR置零,并且需要对DPH、DPL进行运算处理,求出表目地址

2.用PC指针查表编程时应注意什么?

答:表的长度必须在255B之内,

六、参考程序清单

1.求平方值查表程序:举例,查表13的平方

(A)=0DH

命令行区域变化备注PC指针

ADD A,#02H C:0x0000 MOVC A,@A+PC C:0x0002

利用查表法进行有限状态机编程设计

利用查表法进行有限状态机编程设计
6. 测试和调试:完成代码编写后,进行测试和调试,确保FSM的状态转换和状态动作的 正确性。
需要注意的是,利用查表法进行FSM编程设计可以简化代码的实现和维护,提高程序的可 读性和可扩展性。但在实际应用中,需要根据具体的系统需求和FSM的复杂性,灵活选择合 适的编程方法和数据结构来实现FSM的功能。
4. 处理状态动作:在状态转换的同时,可能需要执行某些特定的状态动作。根据需要,在 状态转换逻辑中添加相应的代码来处理状态动作。
5. 设计输入信号检测:在程序中,需要检测输入信号的变化,并根据当前状态和输入信号 进行状态转换。可以使用轮询或中断等方式来检测输入信号的变化。
利用查表法进行有限状态机编程设计
利用查表法进行有限状态机编程设计
利用查表法进行有限状态机(FSM)的编程设计是一种常用的方法,它通过建立状态转换 表来实现状态机的功能。以下是利用查表法进行FSM编程设计的一般步骤:
1. 确定状态和输入信号:首先确定FSM的状态和输入信号。状态是指FSM的不同工作状 态,输入信号是触发状态转换的信号。
2. 建立状态转换表:根据FSM的状态和输入信号,建立状态转换表ຫໍສະໝຸດ Baidu表格的行表示当前 状态,列表示输入信号,表格中的每个元素表示状态转换的结果,即下一个状态。
利用查表法进行有限状态机编程设计
3. 实现状态转换逻辑:根据状态转换表,编写代码实现状态转换逻辑。可以使用if-else语 句或switch-case语句来根据当前状态和输入信号进行状态转换。

matlab 查表法

matlab 查表法

Matlab 查表法

Matlab 是一种非常强大的数学软件,其中查表法是 Matlab 中一种常用的数据处理方法。在本文中,我们将介绍 Matlab 查表法的基本原理和使用方法。下面是本店铺为大家精心编写的5篇《Matlab 查表法》,供大家借鉴与参考,希望对大家有所帮助。

《Matlab 查表法》篇1

一、Matlab 查表法的基本原理

Matlab 查表法是一种通过查找表格数据来确定某个值的方法。在 Matlab 中,我们可以使用 table 函数来创建一个表格,并使用查询函数 (如 searchfun) 来查找表格中的数据。例如,我们可以使用以下代码来创建一个包含 1 到 10 的整数的表格:

```

table = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

```

然后,我们可以使用以下代码来查找表格中第三个值:

```

result = searchfun(table, 3);

```

在这里,searchfun 函数将表格作为第一个参数,并将要查找的

值作为第二个参数。如果表格中包含要查找的值,则函数将返回该值的索引;否则,函数将返回不存在的索引。

二、Matlab 查表法的使用方法

Matlab 查表法的使用方法非常简单。下面是一个基本的示例: ```

% 创建一个表格

table = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

% 查找表格中的第三个值

result = searchfun(table, 3);

% 显示结果

disp(result);

```

在上述示例中,我们首先创建了一个包含 1 到 10 的整数的表格。然后,我们使用 searchfun 函数查找表格中的第三个值,并将结果存储在变量 result 中。最后,我们使用 disp 函数将结果打印到命令行窗口中。

Access数据库程序设计

Access数据库程序设计

Access数据库程序设计

Access数据库程序设计

概述

Access数据库是微软公司开发的一款关系型数据库管理系统,它提供了一组完整的工具和功能,用于创建和管理数据库,并实现数据的存储、查询、更新等操作。Access数据库程序设计主要是指利用Access数据库编写程序,实现数据库的设计和操作。

数据库设计

数据库设计是数据库程序设计的基础,它决定了数据库的结构和关系。在Access中,可以使用表格、查询、表单和报告等工具来进行数据库设计。

表格设计

表格是Access中存储数据的基本单位,通过表格可以定义和管理数据的结构。在表格设计中,需要确定表格的字段和字段类型,并设置相应的约束和索引。

查询设计

查询是对数据库中的数据进行检索和统计的操作,它可以根据指定的条件和排序规则,从一个或多个表格中获取需要的数据。在

查询设计中,需要定义查询的字段、条件和排序规则,并选择合适的查询类型。

表单设计

表单是用户与数据库交互的界面,通过表单可以添加、修改和删除数据。在表单设计中,需要选择合适的控件和布局,以及设置相应的属性和事件。

报告设计

报告是以表格和图表的形式展示数据库中的数据,用于各种统计和分析结果。在报告设计中,需要选择合适的报告类型、布局和样式,以及设置相应的数据来源和过滤条件。

数据库操作

Access数据库可以通过编写VBA(Visual Basic for Applications)代码来实现各种数据库操作,包括数据的增删改查、事务管理和数据验证等。

连接数据库

需要通过连接字符串建立与数据库的连接,可以使用连接字符串中的用户名和密码进行身份验证。

Abap查表程序

Abap查表程序

SAP 查表程序(通过字段,元素,表名,描述)查表

对于对SAP不是很熟悉的人来说,查表是件痛苦的事,对于ABAPER菜鸟来说更是痛苦,为些我写了一个查表程序,大多数情况下我是用它来找表的。

REPORT ZKFTB.

PARAMETERS: p_tb LIKE DD02L-TABNAME, "Table Name p_tbTx LIKE DD02T-DDTEXT, "Table Name

p_fld LIKE DD03L-FIELDNAME, "Field Name

P_fldTx LIKE DD04T-DDTEXT,

p_cls LIKE DD02L-TABCLASS DEFAULT 'TRANSP', "Table category

p_ROLL LIKE DD03L-ROLLNAME, "Element

P_value(80) TYPE C, "Field Value

p_lang LIKE DD02T-DDLANGUAGE DEFAULT 'EN'. "Languag

TYPE-POOLS: SLIS.

DATA: WA_LINE TYPE SLIS_FIELDCAT_ALV.

DATA: IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV .

DATA: WA_LAYOUT TYPE SLIS_LAYOUT_ALV.

DATA: IT_SORT TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE.

DATA: BEGIN OF IT_Tab OCCURS 0,

查表程序设计

查表程序设计

查表程序设计

查表程序:所谓查表法,就是对⼀些复杂的函数运算如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进制数值等价于⼗进制数值

解:源代码⼊下:

分析结果:

寄存器结果:

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

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]

单片机的查表程序

单片机的查表程序

在单片机开发过程中。一些非线性的控制过程。最适合做一个表格来。时时改变系统的参数。达到控制的目的.最常的如产生正弦的的程。就是建一个大的数组时时改变输出的8位字节送给外部DA.由DA生成一个完整的正弦波.当然了.LED显示也是一个例子。通过建一个数组来实现段码的点亮点灭.下面就是一个LED表——-digits[0]

#define SEG_a 0x01

#define SEG_b 0x02

#define SEG_c 0x04

#define SEG_d 0x08

#define SEG_e 0x10

#define SEG_f 0x20

#define SEG_g 0x40

#define SEG_dot 0x80

unsigned char digits[10]= {

(SEG_a|SEG_b|SEG_c|SEG_d|SEG_e|SEG_f), // 0

(SEG_b|SEG_c), // 1

(SEG_a|SEG_b|SEG_d|SEG_e|SEG_g), // 2

(SEG_a|SEG_b|SEG_c|SEG_d|SEG_g), // 3

(SEG_b|SEG_c|SEG_c|SEG_f|SEG_g), // 4

(SEG_a|SEG_c|SEG_d|SEG_f|SEG_g), // 5

(SEG_a|SEG_c|SEG_d|SEG_e|SEG_f|SEG_g), // 6

(SEG_a|SEG_b|SEG_c), // 7

(SEG_a|SEG_b|SEG_c|SEG_d|SEG_e|SEG_f|SEG_g), // 8

C语言程序设计 第八章 查表

C语言程序设计 第八章 查表

何谓查找表?

查找表是由同一类型的数据元素(或记录)构成的集合。

由于“集合”中的数据元素之间存在着松散的关系,因此查找表是一种应用灵便的结构。

对查找表经常进行的操作:

•1)查询某个“特定的”数据元素是否在查找表中;

•2)检索某个“特定的”数据元素的各种属性;

•3)在查找表中插入一个数据元素;•4)从查找表中删去某个数据元素。

查找表可分为两类:

静态查找表

仅作查询和检索操作的查找表。

动态查找表

有时在查询之后,还需要将“查询”结果为“不在查找表中”的数据元素插入到查找表中;或者,从查找表中删除其“查询”结果为“在查找表中”的数据

关键字

是数据元素(或记录)中某个数据项的值,用以标识(识别)一个数据元素(或记录)。

若此关键字可以识别唯一的一个记录,则称之谓“主关键字”。

若此关键字能识别若干记录,则称之谓“次关键字”。

查找

根据给定的某个值,在查找表中确定一个

其关键字等于给定值的数据元素或(记录)。

若查找表中存在这样一个记录,则称

“查找成功”。查找结果给出整个记录的

信息,或指示该记录在查找表中的位臵;

否则称“查找不成功”。查找结果给出“空记录”或“空指针”。

如何进行查找?

查找的方法取决于查找表的结构。

由于查找表中的数据元素之间不存在明显的组织规律,因此不便于查找。

为了提高查找的效率,需要在查找表中的元素之间人为地附加某种确定的关系,换句话说,用另外一种结构来表示查找表。

9.1 静态查找表9.2 动态查找树表9.3 哈希表

9.1

静态查找表

数据对象D :数据关系R :D 是具有相同特性的数

据元素的集合。每个数据元素含有类型相同的关键字,可唯一标识数据元素。

实验三 查表与子程序设计练习

实验三 查表与子程序设计练习

实验三查表与子程序设计练习

一、实验目的

1.掌握子程序调用的原理

2.掌握主程序和子程序间的参数传递机制

3.掌握现场保护的方法

4.熟悉查表指令,会编写查表程序

二、实验内容

(1)编写程序,利用子程序实现将片内RAM中30H-3FH单元内容置为FFH。要求通过寄存器和堆栈分别传递参数实现。

寄存器:

MOV R0,#30H

MOV A,#0FFH

LOOP:LCALL L

CJNE R0,#40H,LOOP

SJMP $

NOP

L:MOV @R0,A

INC R0

RET

END

堆栈:

MOV SP,#5FH

MOV 70H,#30H

MOV 71H,#16

PUSH 70H

PUSH 71H

SJMP $

NOP

L:POP DPH

POP DPL

POP 07H

POP 00H

MOV A,#0FFH

L2:MOV @R0,A

INC R0

DJNZ R7,L2

PUSH DPL

PUSH DPH

RET

END

(2)利用查表程序,计算0~10的平方。要求分别用MOVC A,@A+DPTR和MOVC A,@A+PC

两种指令实现。

○1MOV DPTR #TABLE

MOV R1,#0

MVO R0,#40H

L:MOV A,R1

MOVC A,@A+DPTR

MOV @R0,A

INC R1

INC R0

CJNE R0,#4BH,L

SJMP $

NOP

TABLE:DB 0,1,4,9,16,25,36,49,64,81,100

END

○2MOV R1,#0

MOV R0,#30H

L:MOV A,R1

ADD A,#09H

MOVC A,@A+PC

MOV @R0,A

INC R0

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

CLR MAOV 40H, #50H LCALLCLARBC A 按照规LSCJ则AMLP包L$装ABC成.ASM
ABC: MOV R3, #30H
;?30H
MOV R1, #40H
;?40H
CLR A
L1: MOV @R1,A
INC R1
DJNZ R3, L1
RET
END
查表程序设计
START: LOOP:
查表程序设计
4.3 汇编语言实用程序设计
一个完整的源程序必备的四个要素:
❖ 有ORG 0000H,即源程序的机器码从ROM的0000H单元开 始存放。
❖ 通常源程序的存放要跳过中断向量区。实现方法:在0000H 单元存放一条转移指令,转向中断向量区后的主程序的真实 的入口地址,如START、MAIN等。
入口参的 的数电不:压同在已温R由度2R下A3/的D中转电;换压为值1数0位据二构进成制一数个x表。,根表据中测放得温 出口参度数值:y,在xR为2R电3压中值; 数据。设测得的电压值x放入 ***学习R2双R字3中节,无根符据号电数压乘值2的x,解查决找方对法应。的温度值y,仍
序存储单元的地址,然后把该地址单元中的内容送到累加
器A中。
查表程序设计
4.3 汇编语言实用程序设计-查表程序设计
例4-5 子程序的功能为:根据累加器A中的数x(0~9之间)
查x的平方表y,根据x的值查出相应的平方y。x和y均为单字节
数。
地址
子程序
Y
ADD A,#01H
Y+2
MOVC A,@A+PC
LENG EQU 10 SUM EQU 21H BLOCK EQU 22H ORG 0000 LJMP START ORG 0030H CLR A MOV R7, #LENG MOV R0, #BLOCK ADD A, @R0 INC R0 DJNZ R7, LOOP MOV SUM, A ESNJDMP $
MOVC A,@A+PC 的学习
Y+3
RET
Y+4
DB 00H,01H,04H,09H,10H
DB 19H,24H,31H,40H,51H
第1条指令 ADD A,#01H 的作用是加上偏移量,可以根 据A的内容查出X对应的平方查。表程序设计
4.3 汇编语言实用程序设计-查表程序设计
例1:求x的平方,x:0~9 特点:x、y均为一字节, y=f(x)在ROM中的地址是TAB1+x
$
ADD A, @R0
INC R0
DJNZ R7, LOOP
MOV SUM, A
RET
查表程序设计
ENDห้องสมุดไป่ตู้
4.3 汇编语言实用程序设计
4.3.3 查表程序设计
数据补偿、修正、计算、转换等各种功能,具有程序简单、 执行速度快等优点。
查表就是根据自变量x,在表格中寻找y,使y=f(x)。
首先是用DB、DW伪指令建表,把握表格中的数据的位置与x的 关系。由x来表达y在程序存储器中的地址,然后用MOVC指令 实现查表。 例如:求x平方时的表格结构。
MOV
R2, A
MOV
A, B
INC
A
MOVC A, @A+DPTR
MOV
R1, A
RET
TAB: DW 0, 1, 8, 27, 64
DW 125, 216, 343, 512, 729
查表程序设计
4.3 汇编语言实用程序设计-查表程序设计
例例 特点44-6:-感6在本y器=一例输f(的个x出)在以x的和RM电yOC均压MS为-中与5双1的温为字地度核节址为心无非的符是线温号T性度A数关B控。2系制+2,器x传及中感T,A器B温输2度+出2传x+1
第九课
复习 4.3 汇编语言实用程序设计
4.3.3 查表程序设计 4.3.7 分支转移程序设计 4.3.8 循环程序设计
查表程序设计
复习
❖ 一个源程序的四个要素 ❖ 子程序:形式、功能、入口参数、出口参数 ❖ 子程序的调用:调用过程示意图 ❖ 子程序调用及返回指令的执行过程 ❖ 子程序的现场保护和参数传递 ❖ 查表程序
执行查表指令时,发出读程序存储器选通脉冲/PSEN。
指令“MOVC A,@A+DPTR”完成把A中的内容作为一
个无符号数与DPTR中的内容相加,所得结果为某一程序存
储单元的地址,然后把该地址单元中的内容送到累加器A
中。
指令“MOVC A,@A+PC”以PC作为基址寄存器,PC的内
容和A的内容作为无符号数,相加后所得的数作为某一程
堆栈指令的使 用
4.3 汇编语言实用程序设计-查表程序设计
例2:求一个0~9的数是立方
特A点BC:: xM为O一V 字A节,、Ry0为两字节, y=f(x)在ROM中的地址
是RTLAB1+A2x及TAB1+2x+1
入口参数MMOO:VV在RD0P中TR;,
B, A #TAB
出口参数MO:V在CRA2, 、@RA1+中D,PT高R字节在R2中
❖ 有END,告知汇编程序,你的源程序结束了。 ❖ 源程序的主程序框架一定是一个顺序执行的无限循环的程序,
运行过程必须构成一个圈;子程序与主程序相对独立。
查表程序设计
4.3 汇编语言实用程序设计
ORG 0000H
LJMP MAIN
MOV O3R0GH, 0#03200H
MMAOIVN: M4O0VH,3#0H5,0H#20
AABBCC:: MMOOVV AA,, RR00
MPOUVSH DDPPTHR,#TAB;1保存DPH
MPOUVSCH AD,PL@A+DP;TR保存DPL
RMEOTV DPTR,#TAB1
MOVC A,@A+DPTR
POP DPL
;恢复DPL
POP DPH
;恢复DPH
RET
TAB1: DB 00H,01H,04H,09H,10H DB 19H,24H,查3表1程H序,设计40H,51H
END
查表程序设计
复习EQU 功能?
有错吗?
包装成子程 序?
START: LOOP:
LENG EQU 10
SUM EQU 21H
BLOCK EQU 22H
ORG 0000
LJMP START
ORG 0030H
CLR A
MOV R7, # LENG
MOV R0, #BLOCK
LCALL LOOP
SJMP
DB 00H,01H,04H,09H,10H DB 19H,24H,31H,40H,51H
举例:自编例1、例2、例3查及表程课序本设计上的例4-5、例4-6、例4-7。
4.3 汇编语言实用程序设计-查表程序设计
指令系统中给用户提供了两条极为有用的查表指令: ⑴ MOVC A,@A+DPTR ⑵ MOVC A,@A+PC
相关文档
最新文档