




已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五章汇编语言程序设计,5.1概述,5.1.1程序设计语言,1机器语言2汇编语言3高级语言,汇编语言是一种用助记符来表示的面向机器的程序设计语言。不同的机器所使用的汇编语言一般是不同的。,高级语言是一种面向过程而独立于计算机硬件结构的通用计算机语言。,机器语言是用二进制代码表示指令和数据的最原始的程序设计语言。计算机能够立即识别并执行这种语言,响应速度最快。但不易看懂,不便记忆。,用汇编语言编写的源程序,在交由计算机执行之前,必须将它翻译成机器语言程序。这一翻译过程称为汇编。,源程序(汇编语言程序),汇编程序,目的程序(机器语言程序),1汇编语言源程序的格式如下:标号:操作码操作数;注释,5.1.2汇编语言规范,标号段:1、标号是用户设定的一个符号,表示存放指令或数据的存储单元地址。2、标号是由字母开始的18个字母或数字串组成。注意,不能用指令助记符、伪指令或寄存器名来作标号名。,操作码段是指令或伪指令的助记符,用来表示指令的性质。操作数段给出的是参加运算(或其他操作)的数据或数据的地址。,注释段为便于今后阅读和交流,对本指令执行目的和所起作用所做的说明。,2、伪指令这些指令不属于指令系统,不产生机器代码,因此称为伪指令或汇编指令。利用伪指令告诉汇编程序如何进行汇编,同时它也为人们编程或修改程序提供了方便。因不同的编程软件,伪指令的格式与用法可能会有一些变化,请注意。,2、伪指令1)ORG确定目的程序在程序存储器中存放的起始地址。ORG表达式(exp)exp必须是16位的地址值2)END用在程序的末尾,表示程序已结束。汇编程序对END以后的指令不再汇编。,ORG0000HLJMPSTARTORG0100HSTART:END,2、伪指令3)DB(DefineByte)定义字节,从指定单元开始定义(存储)若干个字节的数值或ASCII码字符。DB字节常数或ASCII字符4)DW(DefineWord)定义字,从指定单元开始定义(或存储)若干个字的数据或ASCII码字符,注意:高位先行。DW字常数或ASCII字符,ORG1000HDB76H,73,C,BC;在表示ASCII字符时需要用或“”括号DB0ACH则(1000H)76H(1001H)49H(1002H)43H(1003H)42H(1004H)43H(1005H)0ACH,ORG2200HDW1246H,7BH,10,ab则(2200H)12H(2201H)46H(2202H)00H(2203H)7BH(2204H)00H(2205H)0AH(2206H)61H(2207H)62H,2、伪指令5)EQU(Equate)它的作用是把操作数段中的地址或数据赋值给标号字段中的标号。代号标号EQU地址或数据6)BIT位地址符号,把位地址赋予所规定的字符名称。位地址符号名称BIT位地址,G1EQUR1;R1与G1等值则“MOVA,G1”与“MOVA,R1”等同例:XEQU49MAIEQU0FC7DHMOVA,#X;49ALJMPMAI;FC7DHPC,2、伪指令7)DATA定义标号数值,给标号段中的标号赋以数值。字符名称DATA表达式DATA与EQU的区别:DATA可先使用后声明,并登记在符号表中EQU不登记在符号表中,必须先声明才能使用,5.1.3汇编语言程序设计步骤,1)熟悉与分析工作任务,明确其要求和要达到的工作目的、技术指标等。2)确定解决问题的计算方法和工作步骤。3)画工作流程图。(其图形符号规定均同于高级语言流程图)4)分配内存工作单元,确定程序与数据区存放地址。5)按流程图编写源程序。6)上机调试、修改及最后确定源程序。,编制程序流程图:是指用各种图形、符号、指向线等来说明程序设计的过程。国际通用的图形和符号说明如下:椭圆框:开始和结束框,在程序的开始和结束时使用。矩形框:处理框,表示要进行的各种操作。菱形框:判断框,表示条件判断,以决定程序的流向。流向线:流程线,表示程序执行的流向。圆圈:连接符,表示不同页之间的流程连接。各种几何图形符号如下图所示:,5.2顺序与循环程序设计,5.2.1顺序结构程序,是一种最简单、最基本的程序(也称为简单程序)。,特点:按编写的顺序依次往下执行每一条指令,直到最后一条。它能够解决某些实际问题,或成为复杂程序的子程序。,5.2.1顺序结构程序,1、压缩BCD码的概念2、ASCII码09为30H39H。,思路:采用把BCD数除以10H的方法,除后相当于把此数右移了4位,刚好把两个BCD码分别移到A、B的低4位,然后再各自与30H相“或”即变为ASCII码。,ORG2000HMOVA,20HMOVB,10H;用10H作除数DIVABORLB,30H;低4位BCD码变为ASCII码MOV22H,BORLA,30H;高4位BCD码变为ASCII码MOV21H,A,例1将20H单元的两个BCD码拆开并变成ASCII码,存入21H、22H单元。,例1将20H单元的两个BCD码拆开并变成ASCII码,存入21H、22H单元。,5.2.1顺序结构程序,思路2:采用先把20H中低4位BCD码交换出来加以转换、存放,然后再把高4位BCD码交换至低4位加以转换、存放。,ORG2000HMOVR0,#22HMOVR0,#00MOVA,20HXCHDA,R0ORL22H,#30HSWAPAORLA,#30HMOV21H,A,5.2.1顺序结构程序,例2设有两个4位BCD码,分别存放在23H、22H单元和33H、32H单元中,求它们的和并送入43H、42H单元中去(以上均为低位在低字节,高位在高字节)。,由于本题中BCD码是分放在高、低位两个字节中,因而要从低位字节开始相加,且每次进行加法运算,需要进行一次BCD码调整。,ORG2000HMOVA,22HADDA,32H;(22H)十(32H)ADAA;BCD码调整MOV42H,A;存结果低位MOVA,23HADDCA,33H;(33H)十(23H)十CADAAMOV43H,A;存结果高位,5.2.1顺序结构程序,例3将片内RAM30H单元中的压缩BCD码转换成二进制数送到片内RAM40H单元中。,START:MOVA,30H;取两位BCD压缩码a1a0ANLA,#0F0H;取高4位BCD码a1SWAPA;高4位与低4位换位MOVB,#0AH;将二进制数10送入BMULAB;将10a1送入A中MOVR0,A;结果送入R0中保存MOVA,30H;再取两位BCD压缩码a1a0ANLA,#0FH;取低4位BCD码a0ADDA,R0;求和10a1+a0MOV40H,A;结果送入40H保存SJMP$;程序执行完,“原地踏步”,两位压缩BCD码转换成二进制数的算法为:(a1a0)BCD=10a1a0程序流程图如右图所示。,5.2.2循环结构程序,特点:程序中含有可以重复执行的程序段(循环体),采用循环程序可以有效地缩短程序,减少程序占用的内存空间,使程序的结构紧凑、可读性好。,5.2.2循环结构程序,循环结构的程序一般包括以下几部分。1循环初态循环初态(或称初始条件)是设置循环过程中工作单元的初始值。例如,设置循环次数计数器、地址指针初值、存放和数的单元初值等。2循环体重复执行的程序段部分称循环体,完成主要的计算或操作任务,同时也包括对地址指针的修改。3循环控制部分该部分用于控制循环的执行和结束。循环次数或条件等判断。,循环程序的结构:(1)先循环处理,后循环控制(即先处理后控制)。如左下图所示。(2)先循环控制,后循环处理(即先控制后处理)。如右下图所示。,单重循环与多重循环定义:循环体内部不包括其他循环的程序称为单重循环程序。若循环中还包括有循环,称为多重循环(或循环嵌套),5.2.2循环结构程序,5.2.2循环结构程序,例4已知片内RAM30H3FH单元中存放了16个二进制无符号数,编制程序求它们的累加和,并将其和数存放在R4,R5中。,START:MOVR0,#30HMOVR2,#10H;设置循环次数(16)MOVR4,#00H;和高位单元R4清0MOVR5,#00H;和低位单元R5清0LOOP:MOVA,R5;和低8位的内容送AADDA,R0;将R0与R5的内容相加并进位CyMOVR5,A;低8位的结果送R5CLRA;A清0ADDCA,R4;将R4的内容和Cy相加MOVR4,A;高8位的结果送R4INCR0;地址递增(加1)DJNZR2,LOOP;循环结束,每次求和的过程相同,可以用循环程序实现。16个二进制无符号数求和,循环程序的循环次数应为16次(存放在R2中),它们的和放在R4,R5中(R4存高8位,R5存低8位)。程序流程图如右图所示。,5.2.2循环结构程序,例5从22H单元开始有一无符号数据块,其长度在20H单元。求出数据块中最大值,并存入21H单元。,1、先设一个最小值零2、逐个取出队列中的数与最小值相比。3、如果大于最小值,则此值与最小值交换后再继续比较4、如果小于或等于最小值,则恢复原最小值(因为使用减法指令比较后,还需恢复原值)再继续比较。当所有数据均比较完之后,则可得到最大值。,CLRA;清A作为初始最小值MOVR2,20H;数据个数初值MOVR1,22H;数据存放区首址LP:CLRC;清进位SUBBA,R1;最小值减队列中数JNCNEXT;不大于最小值则继续MOVA,R1;大于最小值,则用此值作为最小值SJMPNEXT1NEXT:ADDA,R1;不大于最小值,需恢复原最小值NEXT1:INCR1;修改地址指针DJNZR2,LP;依次重复比较,直至R20MOV2lH,A;最大值存入21H单元LP1:SJMPLP1,5.2.2循环结构程序,例6:80C51单片机使用的晶振频率为6MHZ,设计一软件延时程序,延时时间为10ms。,延时时间1+1+(1+1+2)*125+2*10+2*2s10066s,1MOVR1,#101DL2:MOVR0,#1251DL1:NOP1NOP2DJNZR0,DL12DJNZR1,DL22RET,延时程序与MCS-51指令执行时间(循环次数)和晶振频率fOSC有关。晶振确定之后,则关键在于确定循环次数。当fOSC=6MHz时,机器周期为2s,执行一条DJNZ指令需要2个机器周期,时间为4s。10ms4s255,因此单重循环程序无法实现,可采用双重循环的方法编写10ms延时程序。,5.3分支结构程序,特点:根据不同的条件,确定程序的走向。它主要靠条件转移指令、比较转移指令和位转移指令来实现。分支程序的结构如右图所示,分支程序的设计要点如下:(1)先建立可供条件转移指令测试的条件。(2)选用合适的条件转移指令。(3)在转移的目的地址处设定标号。,1无条件转移程序转移方向由设计者事先安排,与已执行程序的结果无关。使用时只需给出正确的转移目标地址或偏移量即可。2条件转移根据已执行程序对标志位、累加器或内部RAM某位的影响结果,决定程序的走向,形成各种分支。3散转根据某种已输入的“或”运算的结果,使程序转向各个处理程序中去。逐次比较和算法处理的方法。80C51单片机专门的散转指令,可以较方便地实现散转功能。,5.3.1分支结构程序综述,5.3.2无条件/条件转移程序,例1设5AH单元中有一变量X,请编写计算下述函数式的程序,结果存入5BH单元。,根据题意首先计算X2并暂存于R1中,因为X2最大值为225,可只用一个寄存器,然后根据X值的范围,决定Y的值。,ORG0000HMOVA,5AHMOVB,AMULAB;X2BAMOVR1,AMOVA,5AH;重新把X装入ACJNEA,#10,L1L1:JCL2;Xl0转L2MOVR0,#41;10:先假设X15CJNEA,#10H,L3;与16比L3:JNCL4;X15转L4MOVA,R1ADDA,#08;10X15,YX28,MOVR0,ASJMPL4L2:MOVA,R1;10的处理CLRCSUBBA,#01;Xe63,则两个存储单元中的内容交换,否则就不交换。然后使e63和e62比较,按同样的原则决定是否交换。一直比较下去,最后完成e2和e1的比较及交换,经过N1=63次比较(常用内循环63次来实现)后,e1的位置上必然得到数组中的最大值,犹如一个气泡从水低冒出来一样,如下页图所示(图中只画出了6个数的比较过程)。,第二次冒泡过程和第一次完全相同,比较次数也可以是63次(其实只需要62次,因为e1的位置上是数据块中的最大数,不需要再比较),冒泡后在e2的位置上得到数组中的次大数,如上页图所示。如此冒泡(即大循环)共63次(内循环6363次)便可完成64个数的排序。实际编程时,可通过设置“交换标志”用来控制是否再需要冒泡,若刚刚进行完的冒泡中发生过数据交换(即排序尚未完成),应继续进行冒泡;若进行完的冒泡中未发生过数据交换(即排序已经完成),冒泡应该停止。例如:对于一个已经排好序的数组:1,2,3,63,64,排序程序只要进行一次循环便可根据“交换标志”的状态而结束排序程序的再执行,这自然可以减少631=62次的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安徽省宿州市砀山县2024-2025学年高一上学期期中考试历史题库及答案
- 心有灵犀游戏题目及答案
- 心理学必背题目及答案
- 小学语文各种句型改写题目及答案
- 桃花源记人物性格分析与文学创作技巧探讨:高中语文研究性教案
- 工艺品采购及加工合同
- 农业生态合作社合同书
- 初中物理力学模型制作:力学原理与实践操作教案
- 技术解决方案标准化流程
- 时间像小马车说课课件
- 变电站巡视检查项目记录表
- 光伏发电技术项目投标书(技术标)
- (正式版)HGT 6276-2024 双酚F型环氧树脂
- Q-GDW1799.2-2013-电力安全工作规程-线路部分
- (新)外研版初中英语语法(表格式)网络结构图
- 油脂制取与加工工艺学课件
- 控油控糖控盐知识讲座
- 销售人员心态培训销售心态培训
- 志愿服务与志愿者精神知识考试题库大全(含答案)
- 养老机构入住护理、风险评估表、计划表、记录、告知书等健康档案护理记录模板
- 2024-2025年上海中考英语真题及答案解析
评论
0/150
提交评论