4.6查表程序[共4页]
- 格式:pdf
- 大小:69.64 KB
- 文档页数:1
;查表程序设计;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中。
查表,其实就是字面上的意思,先用c语言的形式解释比如用查表法计算平方根,你应该知道用单片机去求平方根的速度肯定是很慢的,但是当我们只需要求1到9的平方根时,我们可以把1到9的平方根直接保存在sqrt[]这个数组里,sqrt[1]=1;sqrt[2]=1.414;这样类推。
需要用到那个数的平方根直接sqrt[]里面放上那个数就行了,这就是查表了。
这样速度就会快很多。
单片机查表用的最多的是数码管的译码工作,就是把0-9的数字转换成对应数码管的段码。
还有就是一些需要计算的值。
因为单片机的运行速度问题,为了提高速度常用查表法。
如果是汇编其实就是把表放在数据区了,通过地址来查表。
原理是一样的。
希望对你有所帮助。
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、福利项目中标 “ *”的表示需报公司人力资源部批准的福利项目的项目,申请表格在OA中:文档管理/单位文档/人事及福利表格中调用。
2、本制度中,所有福利项目享受起始时间,除特别说明的以外,以最终审核批准日为准。
详细说明以《管理制度汇编》为准。
司根据当年需求情况指定的专
员工津
贴
员工家庭医疗保障体
系
2、符合条件的服务中心主任任职起可报往返机票,
3、其他符合条件员工可报火车(汽车)票,
员工
其
工其他福利在地长期工作生活,并选择在当地安家者可在服务中心所在地购房,除此之外,贷款购房地点只能在深圳;服务中心其他人员购
3、所购住房三年内不得出售或出
*
指公司从市场调回总部任职者,
不含从总部外派到市场后又调回
总部任职者。
2、享受此项福利的人员,不得再
6、从申请批准的下个月起享受购车补助,在员工每月工资中发放,税额由员工承担,
7、如职务变化,购车补助相应调
、汽油费、停车费、住宿费(按
销。
5、自助蜜月旅游可报销路费、住宿费(按级别标准)、公交费、门票费。
员工家庭其他福
利
5、图书费指各类儿童、学生健康读物,
6、服装费指购买子女运动服、运动鞋、校服。
汇编查表程序注意一、什么是汇编查表程序?汇编查表程序是一种利用查表的方式来进行数据处理的程序,它通常用于需要频繁进行计算的场合,可以大大提高程序的执行效率。
在汇编语言中,通过定义一张查找表,将需要计算的数据和对应的结果保存在表中,然后通过索引来快速查找结果。
二、汇编查表程序的实现原理1. 定义查找表在程序中定义一个数组作为查找表,数组元素包含需要计算的数据和对应的结果。
要计算1~10之间数的平方值,则可以定义一个长度为10的数组sqTable,其中sqTable[i]表示i+1的平方值。
2. 通过索引查找结果在程序中使用寄存器或内存变量保存需要计算数据的索引值,在运行时直接访问对应位置上的数组元素即可得到结果。
要计算3的平方值,则将3作为索引值存储在寄存器eax中,并访问sqTable[eax-1]即可得到9。
三、汇编查表程序需要注意哪些问题?1. 数组越界在定义数组时必须保证其长度足够容纳所有可能出现的索引值,并且在访问数组元素时必须确保不会超出数组范围。
2. 数据类型匹配在定义数组时必须保证其元素类型和计算数据类型匹配,否则会导致计算结果错误。
3. 查找表的构建在构建查找表时需要考虑到数据范围和计算精度等问题,避免出现误差或溢出等情况。
4. 程序效率虽然汇编查表程序可以大大提高程序的执行效率,但是在实际应用中也需要考虑到程序的可读性和可维护性等因素。
四、汇编查表程序的应用场景1. 数学计算汇编查表程序可以用于各种数学计算,如平方、立方、开方、三角函数等。
2. 图形处理汇编查表程序可以用于图形处理中的像素值计算、颜色转换等操作。
3. 数据加密汇编查表程序可以用于数据加密中的密码生成、加密解密等操作。
4. 游戏开发汇编查表程序可以用于游戏开发中的碰撞检测、物理模拟等操作。
五、汇编查表程序的示例代码下面是一个简单的示例代码,实现了1~10之间数的平方值计算:section .datasqTable dd 1, 4, 9, 16, 25, 36, 49, 64, 81, 100section .textglobal _start_start:mov eax, 3 ; 计算3的平方值sub eax, 1 ; 索引从0开始,需要减1mov ebx, sqTable[eax*4] ; 访问数组元素mov ecx, ebx ; 将结果保存到ecx中mov eax, 1 ; 退出程序int 0x80六、总结汇编查表程序是一种高效的数据处理方式,可以用于各种计算密集型应用场景。
六角头螺栓和螺钉(螺纹直径≥5mm)。
需在头部顶面用凸字或凹字标志,或在头部侧面用凹字标志。
包括性能等级、厂标。
碳钢:强度等级标记代号由“•”隔开的两部分数字组成。
标记代号中“•”前数字部分的含义表示公称抗拉强度,如4.8级的“4”表示公称抗拉强度400N/MM2 的1/100。
标记代号中“•”和点后数字部分的含义表示屈强比,即公称屈服点或公称屈服强度与公称抗拉强度之比。
如4.8级产品的屈服点为320 N/mm2。
不锈钢产品强度等级标志由“—”隔开的两部分组成。
标志代号中“—”前符号表示材料。
如:A2,A4等标志“—”后表示强度,如:A2-70(2)、等级。
碳钢:公制螺栓机械性能等级可分为:3.6、4.6、4.8、5.6、5.8、6.8、8.8、9.8、10.9、12.9共10个性能等级。
不锈钢分为 60,70,80( 奥氏体);50,70,80,110(马氏体);45,60(铁氏体)三类。
普通商品级3.6,4.6,4.8,5.6,6.8,8.8,9.8, 10.9,12.9 等等专用级:HG20613,GB9125等美标:A320,A193,A490,A325等螺栓连接预紧力:Mt=K×P0×d×10-3 N.mK:拧紧力系数 d:螺纹公称直径P0:预紧力P0=σ0×As As也可由下面表查出As=π×ds2/4 ds:螺纹部分危险剖面的计算直径ds=(d2+d3)/2 d3= d1-H/6 H:螺纹牙的公称工作高度σ0 =(0.7~0.8)σs σs――――螺栓材料的屈服极限N/mm2 (与强度等级相关,材质决定)K值查表:(K值计算公式略)摩擦表面状况 K值有润滑无润滑精加工表面 0.10 0.12一般加工表面 0.13~0.15 0.18~0.21表面氧化 0.20 0.24镀锌 0.18 0.22干燥的粗加工表面 0.26~0.3σs查表:螺纹性能等级 3.6 4.6 4.8 5.6 5.8 6.8 8.8 9.8 10.9 12.9σs 或σ0.2N/mm2 180 240 320 300 400 480 640 720 900 1080As查表:螺纹公称直径d/mm 3 3.5 4 5 6 7 8 10 12 14 16 18 20 22 24 27 30 33 36公称应力截面积As/mm2 5.03 6.78 8.78 14.2 20.1 28.9 36.6 58 84.3 115 157 192 245 303 353 459 561 694 817法兰连接中螺栓预紧力及垫片密封性的研究对压力管道法兰连接中螺栓的受力、预紧力的计算方法进行了分析,研究了垫片的密封性能,包括基本。
汇编语言程序设计 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。