4.6查表程序[共4页]

合集下载

查表程序设计

查表程序设计

;查表程序设计;BLOCK1为始址的块长为的LEN数据块,每个储单元的高低四位分别为两个16进制数;编程把它们转换为相应的ASCII码,放入BLOCK2开始连续存储单元;低四位ASCII码在低地址,高四位ASCII码在高地址;两次使用查表指令,注意PC调整值及DATA修正值ORG 0000HLJMP MAINORG 0500HMAIN: LEN DATA 20HBLOCK1 DATA 21HBLOCK2 DATA 51HMOV R0,#BLOCK1MOV R1,#BLOCK2LOOP: MOV A, @R0ANL A, #0FH ;取低四位ADD A, #17 ;DATA值MOVC A,@A+PC ;第一次查表MOV @R1,A ;存第一次转换结果MOV A,@R0 ;再次取出被转换数SWAP A ;高低位互换位置ANL A,#0FHADD A,#09H ;DATA值MOVC A,@A+PC ;第二次查表INC R1MOV @R1,AINC R0INC R1DJNZ LEN,LOOPSJMP $ASCTAB: DB '0','1','2','3','4'DB '5','6','7','8','9'DB 'A','B','C','D','E','F'END;有一开始地址为DTATAB的数据表格,表中放1024个元素,每个元素为2个字节,编出能根据R5,R4中元素序号查找对应元素并放入R5,R4(R5中为高8位R4中为低8位);注意表格元素为两字节,查找的元素号应扩大两倍后再和DPTR中表格始址相加ORG 0000HLJMP MAINORG 0500HMAIN: MOV DPTR, #DTATAB ;表格始址MOV A,R4 ;元素低字节送ACLR CRLC A ;2*元素序号低字节XCH A,R5RLC A ;2*元素序号高字节XCH A,R5ADD A,DPLMOV DPL,A ;2*元素序号低字节+DPL存入DPL中MOV A,DPHADDC A,R5MOV DPH,A ;2*元素序号高字节+DPH 存入DPH 中CLR AMOVC A,@A+DPTRMOV R5,AMOV A,#01HMOVC A,@A+DPTRMOV R4,ARETDTATAB: DW '1','2'DW '5','P' END。

单片机的查表程序

单片机的查表程序

在单片机开发过程中.一些非线性的控制过程。

最适合做一个表格来。

时时改变系统的参数。

达到控制的目的.最常的如产生正弦的的程。

就是建一个大的数组时时改变输出的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 0x80unsigned 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(SEG_a|SEG_b|SEG_c|SEG_d|SEG_f|SEG_g) // 9};C查表就太简单了temp2 = digits[ show_data[i] ];一句搞定,C中还有一个switch语句也是一个很好的用查表语句C51汇编就相对麻烦一点。

不过MCS-51指令系统中有专用的查表指令:MOVC A,@A+DPTR和MO V A,@A+PC.MOVC A,@A+DPTR指令,DPTR作为基址寄存器时,其值为16位而且可根据需要设计,故可用于在64KROM范围内查表.编写查表程序时,首先把表的首址送入DPTR中,再将要查找的数据序号(或下表值)送入A中,然后就可以使用该指令进行查表操作,并将结果送累加器A中。

查表程序设计

查表程序设计

例4.两个无符号数比较 例4-12 求符号函数的值。 例4-13 散转
例5 :求50H单元后30个数的累加和 例4-16 测试字符串长度的程序。 例4-17 50ms 延时程序 练习:写一个延时 10ms 的子程序。(钟频 12MHz )
4.3 汇编语言实用程序设计 -分支转移程序设计
(2)分支程序设计
1000H C A,40H A,41H LED0 P1.1
;清CY为零 ;取第一个数送A ;两数比较 ;CY=0,转至LED0 ;CY=1,(40H)<(41H),点亮P1.1 LED
SJMP FINISH ;跳转到结束
LED0: CLR P1.0 ;CY=0,40H≥(41H),点亮P1.0 LED FINISH: RET
2.多分支转移结构 程序的判别部分有两个以上的出口流向。
4.3 汇编语言实用程序设计 -分支转移程序设计
4.3 汇编语言实用程序设计 -分支转移程序设计
4.3 汇编语言实用程序设计 -分支转移程序设计
条件成立?
Y
N
N
程序段A
条件成立? Y
下条指令
程序段B
程序段A
K=0? N
K=1? N
K=2? N
开始
(40H)-(41H)
N CY = 0 ?
Y (40H)≥(41H)
P1.0灯亮
(40H)<(41H) P1.1灯亮
结束
图 两个无符号数比较流程图
4.3 汇编语言实用程序设计 -分支转移程序设计
方法1:使用SUBB指令,依据借位CY状态判断两个数的大小!
ORG CLR MOV SUBB JNC CLR
4.3 汇编语言实用程序设计
一个完整的源程序必备的四个要素:

逐批检查计数抽样程序及检查表

逐批检查计数抽样程序及检查表
4) 因而所求正常检查二次抽样方案如下:
n1=80, Ac1=0, Re1=1;
n2=80, Ac2=1, Re2=2。
5.9 样本的抽取
样本的抽取应符合GB/T2828中4.9的规定抽取。
5.10 样本的检查
样本的检查应符合GB/T2828中4.10的规定。
5.11 逐批检查合格或不合格的判断
逐批检查合格或不合格的判断方法应符合GB/T2828中4.11的规定。
a) 考虑抽样方案管理费用及平均样本大小,通常推荐采用正常检查一次抽样方案;
只要规定的合格质量水平和检查水平相同,各类抽样方案对其批质量的判别力亦基本相同,仅抽样数不同而已。
5.8 抽样方案的检索
一次、 二次抽样方案的检索应符合GB/T2828中4.8的规定。即根据样本大小字码和
合格质量水平,在附录A表A.1~表A.9中检索一次、二次抽样方案。
注:在实际使用中如超出本标准范围的抽样检查,可按GB/T2828中表3~表10检索一
次、二次抽样方案。
5.8.1 样本大小字码
使用附录A中表A.1,从提交检查批的批量所在的行和规定的检查水平所在的列相交
处读出样本大小字码。
5.8.2 一次抽样方案的检索
检索正常检查一次抽样方案使用附录A中表A.2。
检索加严检查一次抽样方案使用附录A中表A.3。
c) 注意特殊检查水平的特殊性和适用性。
5.5 检查批的形成与提出
检查批的形成与提出应符合GB/T2828中4.5的规定。
5.6 检查严格度的确定
检查严格度的确定应符合GB/T2828中4.6的规定。
5.7 抽样方案类型的选择
抽样方案类型的选择应符合GB/T2828中4.7一次、二次抽样方案的规定。特别注意:

查表法

查表法

查表,其实就是字面上的意思,先用c语言的形式解释比如用查表法计算平方根,你应该知道用单片机去求平方根的速度肯定是很慢的,但是当我们只需要求1到9的平方根时,我们可以把1到9的平方根直接保存在sqrt[]这个数组里,sqrt[1]=1;sqrt[2]=1.414;这样类推。

需要用到那个数的平方根直接sqrt[]里面放上那个数就行了,这就是查表了。

这样速度就会快很多。

单片机查表用的最多的是数码管的译码工作,就是把0-9的数字转换成对应数码管的段码。

还有就是一些需要计算的值。

因为单片机的运行速度问题,为了提高速度常用查表法。

如果是汇编其实就是把表放在数据区了,通过地址来查表。

原理是一样的。

希望对你有所帮助。

微机原理及应用

微机原理及应用

先使用后定义,而EQU定义的标识符在汇编时不登记在
符号表中,因此必须先定义后使用。
DATA指令在程序中常用来定义数据地址。
2020/11/14
18
4.1.3 程序设计的一般步骤
1.分析问题:熟悉和明确要求,建立数学模型。
2.确定算法:根据实际问题的要求和指令系统的特点,选择 解决问题的方法。
3.设计程序流程图:程序流程图是程序结构的一种图解表示 法,体现了程序设计思想,是把算法转化成程序的准备阶 段。
编写程序。因此,要想很好地掌握和应用单片机,就必须学会和掌
握汇编语言。
2020/11/14
6
4.1.2 汇编语言的语句结构
一、汇编语言的指令类型
MCS-51单片机汇编语言,包含两类不同性质的指 令。 1.基本指令:即指令系统中的指令。它们都是机器 能够执行的指令。
2.伪指令:汇编时用于控制汇编的指令。它们都 是机器不能够执行的指令。
10
4.1.3 伪指令
伪指令是非执行指令,只是在对源程序进行汇编的过 程中起某种控制作用。例如,设置目标程序或数据存储区 的起始地址,给程序分配一定的存储单元、定义符号、判 断源程序是否结束等。伪指令汇编后不产生目标代码,它 不影响程序的执行,所以有伪指令之称。常用的伪指令如 下。
2020/11/14
2020/11/14
17
八、DATA
DATA是数据地址赋值指令。它的功能是,将数据 地址或代码地址赋予给所规定的字符名称。其格式如下

字符名称 DATA 表达式
例如, MN DATA 1000H
汇编后,MN的值为1000H。
伪指令DATA与EQU的主要区别在于:用DATA定义
的标识符在汇编时作为标号登记在符号表中,所以可以

4.6双字词词频统计

4.6双字词词频统计

4.6双字词词频统计双字(连续)词同现频率统计的任务是:统计给定语料中有多少个不同的字对( Character pair),每个字对各出现多少次。

例如“发展中国家的”这个汉字串中就有“发展”、“展中中国”“国家”、“家的”共5个字对,每个字对各出现了一次。

字对不一定是双字词,例如“展中”、“家的”不是词,“中国”虽然是词,但在这个汉字串中不是词。

用任一字对在语料中的出现次数,除以所有字对出现的总次数,就可以得到这个字对的频率,即双字同现频率。

如果语料规模充分大并且分布均匀,就可以根据双字同现频率和单字频率来估计其中某个汉字的条件概率。

例如,用字对“中国”的频率除以汉字“国”的频率,可以得到条件概率P(Z1=中|Z2=国),即,当后一字已确定为“国”字时,前字为“中”的可能性有多大类似地,也可以得到条件概率P(Z2=国|Z1=中),即,当前一字已确定为“中”时,后一字为“国”的可能性有多大。

如果考察汉字的条件概率时需要看更长些的上下文,就需要做三字同现、四字同现…的频率统计双字字频统计一般是为了计算单字出现的条件概率或者双字的相关性计算中必然要用到单字出现的概率,因此做双字字频统计往往同时统计单字频率,除非单字频率已经统计过。

对一个文件进行双字字频统计,仍然是循环地读出文件中的每一个汉字,登记其出现次然后查它和前面一个汉字是否在双字字表中出现过:如果已经出现,同现次数加1;否则在双字字表中插入这对汉字,并置同现次数为1。

4.6.1双字字表结构的三种方案双字字表的数据结构是一个更需要仔细斟酌的问题。

国标码汉字6763个,那么所有可能的双字有6763×6763=45738169种。

如果全部放在内存中,每种用2个字节表示同现次数,大约需要占用87兆内存。

日前的微机一般是16兆或32兆内存,面且不是全部内存都能使用。

一般的微机上用的是 WINDOWS系统,允许多个程序同时运行;如果一个程序占用太多内存,别的程序就无法运行了。

检验检测机构程序文件-内部审核程序(含附属表单)

检验检测机构程序文件-内部审核程序(含附属表单)

XXX检验检测中心程序文件内部审核程序编号:XXX/PD20-2015编制:批准:颁布日期:2015年11月1日实施日期:2016年1月1日副本控制:受控发放登记号持有人(或部门):1 目的中心应根据预定的日程表和程序,定期地对中心管理体系进行内部审核,以验证中心运作持续符合管理体系和认可准则的要求。

内部审核计划应涉及管理体系的全部要素,包括检验检测活动。

以确保中心的运作持续符合其要求,并为质量改进提供依据。

2 适用范围本程序适用于中心内部审核及附加审核。

3 职责质量负责人负责内部审核工作,技术部负责具体组织与策划。

4 工作程序4.1 制定《内部审核方案》4.1.1 由技术部在每年年初提出内部审核方案,特殊需要的内部审核可及时提出。

经质量负责人批准后,下发给各部门。

4.1.2 内部审核方案的内容包括:a)审核目的——常规的年度审核;——实验室认可前的自我评价审核;——管理体系有重大变化后进行的内部审核;——中心的组织结构有重大调整时进行的内部审核;——发生特殊情况需要临时进行的内部审核。

b)审核范围审核目的为其前三项时,应包括全部要素和部门及检验检测活动;其余二项根据需要可安排对部分要素和部门审核及部分检验检测活动;c)审核依据的标准和文件依据中心的管理体系文件和法律法规及相应技术标准d)审核时间安排集中审核要规定时间范围;滚动审核要制定审核进度时间表。

e)审核方式按要素进行审核需涉及所有相关部门;按部门审核要涉及全部要素。

f)对组建内审组、审核的实施及审核报告等的原则要求。

4.2 组建内审组4.2.1 由质量负责人根据需要组织若干人的内审组,确定组长。

4.2.2 内审组成员应具有内审员资格。

4.2.3 内审组成员的分工应是与被审核部门无直接责任者。

4.3 审核的准备:内审组长组织成员编制审核专用文件。

4.3.1 制定《内部审核实施计划》根据《内部审核方案》的要求来制定。

内容包括:审核目的、审核范围、审核依据、内审组组成及分工、审核项目及时间安排等,报质量负责人审批后下发各部门。

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

汇编语言程序设计 96 第4章 ADDC
A , R6 DA
A MOV
R6,A ;R6乘2并调整后送回 MOV
A , R5 ADDC
A , R5 DA
A MOV
R5,A ;R5乘2并调整后送回
MOV
A ,R4 ADDC
A ,R4 DA
A MOV
R4,A ;R4乘2并调整后送回 DJNZ R7,LOOP 设计循环程序时应注意的问题如下。

① 循环程序是一个有始有终的整体,它的执行是有条件的,所以要避免从循环体外直接转到循环体内部。

② 多重循环程序是从外层向内层一层一层进入,循环结束时是由内层到外层一层一层退出的。

③ 编写循环程序时,首先要确定程序结构,处理好逻辑关系。

在一般情况下,一个循环体的设计可以从第一次执行情况入手,先画出重复执行的程序流程图,然后再加上循环控制和置循环初值部分,使其成为一个完整的循环程序。

④ 循环体是循环程序中重复执行的部分,应仔细推敲,合理安排,从改进算法、选择合适的指令入手对其进行优化,以达到缩短程序执行时间的目的。

4.6 查表程序
查表是程序设计中经常遇到的事,对于一些复杂参数的计算,不仅程序长,难以计算,而且要耗费大量时间。

尤其是一些非线性参数,用一般算术运算解决是十分困难的。

它涉及对数、指数、三角函数以及微分和积分运算。

对于这些运算,用汇编语言编程都比较复杂,有些甚至无法建立数学模型,如果采用查表法解决就容易多了。

所谓查表,就是把事先计算或测得的数据按一定顺序编制成表格,存放在程序存储器中。

查表程序的任务就是根据被测数据,查出最终所需要的结果。

因此查表比直接计算简单得多,尤其是对非数值计算的处理。

利用查表法可完成数据运算、数据转换和数据补偿等工作。

并具有编程简单,执行速度快,适合于实时控制等优点。

编程时可以方便地利用伪指令DB 或DW 把表格的数据存入程序存储器ROM 中。

MCS-51指令系统中有两条指令具有极强的查表功能。

① MOVC A ,@A+DPTR
② MOVC A ,@A+PC。

相关文档
最新文档