资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第四章 汇编语言程序设计知识,概述,1.机器语言,2.汇编语言,3.高级语言,4.1,编制程序的步骤、方法和技巧,(P89.),4.1.1,编程的步骤,一、分析问题,二、确定算法,三、画程序流程图,四、编写程序,一、分析问题,对需要解决的问题进行分析,以求对问题由正确的理解。如:,解决问题的任务是什么?,工作过程?,现有的条件,已知数据,对运算的精度和速度方面的要求?,设计的硬件结构是否方便编程?,二、确定算法,算法是如何将实际问题转化成程序模块来处理。,在编程以前,先要对几种不同的算法进行分析、比较,找出最适宜的算法,三、画程序流程图,程序流程图是使用各种图形、符号、有向线段等来说明程序设计过程的一种直观的表示。,流程图步骤分得越细致,编写程序是也越方便。,画流程图是程序结构设计是采用的一种重要手段。,一个系统软件有总的流程图(主程序框图)和局部的流程图。,1.标号,标号,是用户定义的符号地址。,一条指令的,标号,是该条指令的符号名字,,标号的值,是汇编这条指令时指令的,地址,。,标号,由以英文字母开始的,1,8,个字母或数字组成,以冒号“,:,”结尾。,标号,可以由,赋值伪指令,赋值,如果没有赋值,汇编程序把存放该指令目标码第一字节的存储单元的地址赋给该标号,所以,,标号又叫指令标号。,操作码,操作数,注释段等,以在前面学习过。,流程图,例:,如图所示:,P3.2,和,P3.3,上各接有一只按键,要求它们分别按下,时(,P3.2=0,或,P3.3=0),分别使,P1,口为0或,FFH。,试画出程序流程图并编,写程序。,这是“查询”法编写的程序,问:,P3.2,、,P3.3,引脚的第,2,功能是什么?,P3.2,、,P3.3,引脚的第,2,功能分别是:外部中断,0,方式和外部中断,1,方式。,故,也可以采用“中断法”编写该原程序。,思考题:,如图所示,开关,K1,和,K2,未按下,时,两只发光二极管均不亮。当,按下,K1,时,使发光二极管,LED1,亮,,而发光二极管,LED2,不亮;当,按下,K2,时,,LED2,亮,而,LED1,不亮,如果按下,K1,、,K2,,则,LED1,和,LED2,均亮。,试编写程序实现上述功能。,4.1.2,编程的方法和技巧,(P91.),模块化设计(,按功能分:显示、打 印、输入、发送等),实际的应用程序一般都由一个主程序和多个子程序构成。每一程序模块都能完成一个明确的任务。,模块长度通常为,20,100,条较为合适。,2.,编程技巧,1,、,尽量采用循环结构和子程序,,以节省内存。,2,、,尽量少用无条件转移指令。以使程序条理更加清楚,减少错误。,3,、对于通用的子程序,考虑到其通用性,除了用于存放子程序入口参数的寄存器外,子程序中用到的其他寄存器的内容应压入堆栈(返回前再弹出),,即保护现场。,4,、在中断处理程序中,除了要保护处理程序中用到的寄存器外,还要保护标志寄存器。,5,、用累加器传递入口参数或返回参数比较方便,,在子程序中,一般不必把累加器内容压入堆栈。,4.2 汇编语言源程序的编辑和汇编,(P106.),4.2.1 源程序编辑,4.2.2 源程序的汇编,4.2.,3,伪指令,4.2.1 源程序编辑,单片机的程序设计通常在微型计算机上,借助编辑软件(,如行编辑或屏幕编辑软件,),编写或修改汇编语言源程序。最终把汇编得到的目标程序(机器码)传送到单片机内并进行程序调试和运行。,4.2.2 源程序的汇编,汇编:,将汇编语言源程序转换为机器码表示的目标程序的过程。对单片机有:,一、手工汇编,二、机器汇编,三、反汇编,一、手工汇编,通过手工方式查指令编码表,逐个把助记符指令“翻译”成机器码,然后把得到的机器码程序键入单片机,进行调试和运行。,手工汇编的缺点:,1、,偏移量的计算容易出错,2、,程序的修改会引起后面指令地址的变化,转移指令的偏移量也要重新计算。,二、机器汇编,机器汇编是在计算机上使用交叉汇编程序进行源程序的汇编。汇编工作由机器自动完成,最后得到以,机器码表示的目标程序,。,三、反汇编,将二进制机器语言程序翻译成汇编语言程序的过程称反汇编。,汇编和反汇编的过程如图4-10所示,源程序,(汇编语言),目标码,(机器语言),汇编(汇编程序),反汇编(汇编程序),图4-10 汇编和反汇编过程,4.2,汇编语言程序编辑和汇编,1.编辑(源程序,以,.ASM,扩展名存盘);,2.汇编(手工或,机器汇编,);,例:,地址 目标码,源程序,ORG 1000H,1000H 747F,MOV A,#7FH,1002H 7944,MOV R1,#44H,END,4.2.3 常用的伪指令(,P108),伪指令:,不是真正的指令,无对应的机器码,在汇编时不产生目标程序,,只是用来对汇编过程进行某种控制。,4.2.3 常用的伪指令(,P108),ORG,(Origin,),汇编起始命令,功能:,定位目的程序的起始地址,,即汇编后生成目标程序存放的起始地址。,格式:,ORG 16,位地址,规定了,START,的地址是,0100H,,又规定了汇编后的第一条指令码从,0100H,开始存放。,机器码:,74H 64H,END,汇编语言程序结束伪指令。,功能:,通知汇编程序结束汇编。,在,END,之后所有,的汇编指令均不予以处理。,注:“,END”,指令一定要放在程序末尾!,“ORG”,在程序段中可多次使用,.,机器汇编时的格式,ORG 0000H ;,引导地址,AJMP MAIN ;,跳转到标号为“,MAIN”,的程序,,;,目的是避开,5,个中断源所用的空间,ORG 0030H ;,程序的第,1,条指令从,0030H,单元开始存放,MAIN:;,程序,END,未使用中断源时,ORG 0000H,AJMP MAIN ;,跳转到标号为“,MAIN”,的程序,ORG 000BH ;T0,的中断入口地址,LJMP INSER ;,跳转到标号为“,INSER”,的中断服务程序,ORG 0030H ;,程序的第,1,条指令从,0030H,单元开始存放,MAIN:;,主程序,INSER,:,;,中断服务程序,END,机器汇编时的格式,使用到,T0,中断源时,4.2.3 常用的伪指令(,P108),EQU,(,EQU,ate,),赋值伪指令。,格式:,字符名称,EQU,项(数值或汇编符号),功能:,把,“,项,”,赋给,“,字符名称,”,。,注意:,字符名称不等于标号(,其后没有冒号,);其中的项,可以是数,也可以是汇编符号。,EQU,赋值过的符号名可以用作数据、代码地址、位地址或一个立即数。可以是,8,位的,也可以是,16,位的。,4.2.3 常用的伪指令(,P108),DATA,数据地址赋值命令,格式:,字符名称,DATA,表达式,DATA,命令功能与,EQU,类似。,DATA,命令与,EQU,的差别:,4.2.3 常用的伪指令(,P108),DB,(,D,efine,B,yte),定义字节命令,格式:,DB,字节常数或,ASCII,字符,功能:,通知汇编程序从当前,ROM,地址开始,保留一个字或字节串的存储单元,并存入,DB,后的数据。,4.2.3 常用的伪指令(,P108),DW,(,D,efine,W,ord),定义字命令,格式:,DW,16,位数据项,或,项表,功能:,把,DW,后的,16,位数据项或项表从当前地址连续存放。每项数值为,16,位二进制数,高,8,位先放,低,8,位后存放。,DW,用于定义一个地址表,。,4.2.3 常用的伪指令(,P108),DS,定义存储空间命令,格式:,DS,表达式,功能:,在汇编时,从指定地址开始保留,DS,之后表达式的值所规定的存储单元以备后用。,课堂练习,P87.,题,35,4.2.3 常用的伪指令(,P108),BIT,位地址符号指令。,格式:,字符名称,BIT,位地址,功能:,把,BIT,后的位地址值赋给字符名。其中字符名不是标号,,其后没有冒号,,但字符名是必需的。,4.1.3,汇编语言程序的基本结构,(P92.),一、顺序程序,二、分支程序,三、循环程序,4.1.3,汇编语言程序的基本结构,一、顺序程序,顺序程序是最简单的程序结构,即顺序结构。,程序按顺序一条一条地执行指令,。,一、顺序程序,对,R0R3,清,0,,,R4,、,R5,置,1,,对,P1,口清,0,,片内,RAM,中,30H,、,40H,单元清,0,。,1).,采用立即数寻址方式,若采用寄存器寻址,则可大大减少占用存储单元。,2).,采用寄存器寻址方式,P95.,例,4-3,拆字。将片内,RAM 20H,单元的内容拆成两段,每,段四位。并将它们分别存入,21H,与,22H,单元中。,例如,(,20H,),=35H,,拆字后,(21H)=05H,(22H)=03H.,例,1,:,变量存放在内部,RAM,的,20H,单元中,其取值范围:,0,5,,查表法求其平方值,试编写程序。,解:,二、分支程序,程序分支是通过条件转移指令实现的,,即根据条件对程序的执行进行判断、满足条件则进行程序转移,不满足条件就顺序执行程序。,分支程序又分为,单分支,和,多分支结构,。,多分支程序,是首先把分支程序按序号排列,然后按序号值进行转移。,(一般用“散转指令”),二、分支程序,在,MCS-51,指令系统中,,通过条件判断实现单分支程序转移的指令有,:,JZ,、,JNZ,、,CJNE,、,DJNZ,等。此外还有,以位状态作为条件进行程序分支的指令,,如,JC,、,JNC,、,JB,、,JNB,、,JBC,等。使用这些指令可以完成,0,、,1,、正、负,以及相等、不相等作为各种条件判断依据的程序转移。,二、分支程序,P97.,例,4-6,128,种分支转移程序。,功能:,根据入口条件转移到,128,个目的地址。,入口:,(,R3,),=,转移目的地址的序号,00H,7FH,。,出口:,转移到相应子程序入口。,二、分支程序,二、分支程序,P99.,例,4-9,:,片内,RAM ONE,和,TWO,两个单元中存有两个无符号数,将两个数中的小者存入,30H,单元。,三、循环程序,在程序运行时,有时需要连续重复执行某段程序,可以使用循环程序。其结构包括四部分:,1、置循环初值,2、循环体(循环工作部分),3、修改控制变量,4、循环控制部分,其组织方式如下图4-6所示。,置初值,循环体,循环修改,循环控制,退出循环,未完,完,(a),置初值,循环体,循环修改,循环控制,退出循环,未完,完,(b),图4-6 循环组织方式流程图,1、置循环初值,对于循环程序中所使用的工作单元,在循环开始时应置初值。,例如,工作寄存器设置计数初值,累加器,A,清0,以及设置地址指针、长度等。,2、循环体(循环工作部分),重复执行的程序段部分,分为循环工作部分和循环控制部分。,循环控制部分每循环一次,检查结束条件,当满足条件时,就停止循环,往下继续执行其他程序,3、修改控制变量,在循环程序中,必须给出循环结束条件。,常见的是计数循环,当循环了一定的次数后,就停止循环。,在单片机中,一般用一个工作寄存器,Rn,作为计数器,对该计数器赋初值作为循环次数。每循环一次,计数器的值减1,即修改循环控制变量,当计数器的置件为0时,就停止循环。,4、循环控制部分,根据循环结束条件,判断是否结束循环。,89,C51,可采用,DJNZ,指令来自动修改控制变量并能结束循环。,X,P86.,习题,33.,阅读下列程序,说明该程序段的功能。,功能:,将片内,RAM,中,50H,59H,单元的内容清,0,。,软件延时程序(P101),当单片机的晶振确定后,每条指令的指令周期,就确定了。在指令表中(,P307.,附录,A),中可查,出每条指令的机器周期,故根据程序执行所用的,总的机器周期数,就可以较准确地计算程序执行,完所用的时间。,1.采用循环程序进行软件延时子程序,DELAY:MOV R2,#data ;,置循环控制常数,DELAY1:DJNZ R2,DELAY1,;,当(,R2),0,时,转向本身,RET,根据,R2,的不同初值,可实现3513(#,data=1255),个,机器周期的延时。,(第1条指令为1周期指令,第2条指令为2周期指令),2.采用双重循环的延时子程序,TIME:MOV R1,#0FAH ;1MC,L1:MOV R0,#0FFH ;1MC,W1:DJNZ R0,W1 ;2MC,内循环255次,DJNZ R1,L1 ;2MC,NOP ;1MC,NOP ;1MC,RET ;2MC,外循环 次,250,计算延时时间,t:,N=1+(1+2,X255+2)X250+1+1+2=128 255,个机器周期。,若采用的晶振为,f,osc,=6MHz,T=12/f,osc,=2,微秒,,则:,t=N,X,T=128255,X2=256510,微秒=256.51毫秒。,解:,晶振频率为,12MHz,,则机器周期为,1s,。设,R6=X,。,DELY:MOV R7,#200 ;1MC,,即,1s,L1:MOV R6,#,X,;1MC,,即,1s,L2:NOP ;1MC,,即,1s,DJNZ R6,L2 ;2MC,,即,2s,DJNZ R7,L1 ;2MC,,即,2s,RET ;2MC,,即,2s,内循环,例,1,:,编写,50ms,延时子程序。设晶振频率为,12MHz,。,外循环,下面分别计算,内循环,和,外循环,的延时时间,:,1.,内循环:内循环的循环次数为,X,次,循环一次内容为以下两条指令:,NOP ;1s,DJNZ R6,L2 ;2s,内循环延时时间为:,X,(1+2)=3,X,s,。,2.,外循环:外循环的循环次数为,200,,循环一次内容如下:,MOV R6,#,X,;1s,内循环,;3,X,s,DJNZ R7,L21 ;2s,外循环一次时间为,1s+3,X,s+2s=(3+3,x,)s,,,循环,200,次,另外加上第一条指令,“,MOV R7,#200”,为,1s,。,因此总的循环时间为:,1s+,(,3s+3,X,s,),200,。,1+(3+3,X,)200=50000,x,124,。,所以,50ms,延时子程序为:,DELY:MOV R7,#200,L1:MOV R6,#,124,L2:NOP,DJNZ R6,L2,DJNZ R7,L1,RET,例,2,:,要求二个,LED,交替“亮”与“灭”。亮、灭的时间为,50ms,。试画出硬件电路图和编写程序。,解:,1,)、硬件电路图如左图所示。,阅读程序:,P93,例,4-1,P95,例,4-3,P98,例,4-8,P99,例,4-9,、例,4-10,P102,例,4-12,。,作业,P85.,题,21,,,25,,,26,,,27,,,31,。,第4章,完,
展开阅读全文