完美版课件资料单片机原理及应用第四章.ppt
《完美版课件资料单片机原理及应用第四章.ppt》由会员分享,可在线阅读,更多相关《完美版课件资料单片机原理及应用第四章.ppt(78页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章第四章 汇编语言程序设计汇编语言程序设计4 4.1.1 概述概述 计计算算机机需需通通过过执执行行程程序序才才能能完完成成某某一一项工作。项工作。所谓程序是指为若干指令的有序集合。所谓程序是指为若干指令的有序集合。用于程序设计的语言可分为三种:用于程序设计的语言可分为三种:机器语言、汇编语言和高级语言。机器语言、汇编语言和高级语言。1、机器语言、机器语言 计计算算机机只只能能识识别别二二进进制制代代码码,此此二二进进制制代代码码指令称为机器语言指令。指令称为机器语言指令。直直接接用用机机器器语语言言编编写写的的程程序序称称为为机机器器语语言言程程序。序。2、汇编语言、汇编语言 用用助助记
2、记符符来来表表示示机机器器语语言言指指令令称称为为汇汇编编语语言言指指令。用汇编语言编写的程序称为汇编语言程序。令。用汇编语言编写的程序称为汇编语言程序。计算机能执行的是机器代码。计算机能执行的是机器代码。以上两种语言与机器本身有关,是以上两种语言与机器本身有关,是“面向面向机器机器”的语言。的语言。3、高级语言、高级语言 参参照照数数学学语语言言而而设设计计的的、近近似似于于人人们日常用语的语言。们日常用语的语言。高高级级语语言言与与机机器器无无关关,直直观观、易易学学、易懂,通用性强、易于移植。易懂,通用性强、易于移植。由由于于汇汇编编语语言言是是计计算算机机能能提提供供给给用用户户的的最
3、最快快而而又又最最有有效效的的语语言言,能能直直接接利利用用计计算算机机硬硬件件特特性性并并能能直直接接控控制制硬硬件件,在在对对程程序序的的空空间间和和时时间间要要求求较较高高的的场场合合,特特别别是是在在需需要要直直接接控控制制硬硬件件的场合,一般采用汇编语言。的场合,一般采用汇编语言。4.2 程序程序设计的方法设计的方法 程序设计的一般步骤:程序设计的一般步骤:1分析问题分析问题 2确定算法确定算法 3设计程序流程图设计程序流程图 4分配内存单元分配内存单元 5编写汇编语言源程序编写汇编语言源程序 6调试程序调试程序 当当然然,对对于于情情况况较较简简单单的的问问题题,可可直直接接由由算
4、算法法编写程序。编写程序。一一般般而而言言,对对同同一一个个问问题题,不不同同的的思思路路设设计计的的程程序序有有所所不不同同,方方法法也也不不同同。一一个个程程序序的的设设计计好好坏坏主主要要取取决决于于所所占占用用的的程程序序存存储储器器单单元元、工工作作寄寄存存器器单单元元和和程程序序执执行行的的速速度度等等因因素素,这这需需要要通通过过不不断摸索、实践才能达到。断摸索、实践才能达到。程程序序设设计计的的理理想想方方法法是是结结构构化化程程序序设设计计,通通常常采采用用五五种种基基本本结结构构:即即顺顺序序结结构构、分分支支结结构构、循循环环结结构构、子子程程序序和和中中断服务程序断服务
5、程序。4.34.3 汇编程序格式与伪指令汇编程序格式与伪指令 汇编程序:指用汇编语言编写的程序。汇编程序:指用汇编语言编写的程序。汇编语言源程序是由汇编语句(即指令)组成的。汇编语言源程序是由汇编语句(即指令)组成的。在程序中,指令书写具有如下格式:在程序中,指令书写具有如下格式:标号:操作码助记符目的操作数,源操作数;注释标号:操作码助记符目的操作数,源操作数;注释 START:MOV A,30H;A(30H)将汇编语言源程序转换为单片机能执行的机器将汇编语言源程序转换为单片机能执行的机器码形式的目标程序的过程叫汇编。利用计算机汇码形式的目标程序的过程叫汇编。利用计算机汇编,要提供一些必要的
6、信息和参数,这些提供信编,要提供一些必要的信息和参数,这些提供信息的命令叫做伪指令。息的命令叫做伪指令。源程序(汇编语言程序)源程序(汇编语言程序)目标程序(机器语言程序目标程序(机器语言程序)机器或手工汇编机器或手工汇编伪伪指令指令 伪指令伪指令是汇编程序能够识别并对汇编过是汇编程序能够识别并对汇编过程进行某种控制的汇编命令。它程进行某种控制的汇编命令。它不要求计不要求计算机做任何操作,也不产生机器码,不影算机做任何操作,也不产生机器码,不影响程序的执行,仅提供帮助汇编的一些信响程序的执行,仅提供帮助汇编的一些信息。息。MCS51单片机主要有单片机主要有8条伪指令条伪指令。一、起始地址设定伪
7、指令一、起始地址设定伪指令ORG 格式:格式:ORG 地址(十六进制表示)地址(十六进制表示)用用来来说说明明其其后后面面程程序序段段在在存存储储器器中中存存放放的的起起始始地地址址。在在一一个个源源程程序序中中,可可以以多多次次使使用用ORG指令。指令。例如程序:例如程序:ORG 0000H LJMP MAIN ORG 0030H MAIN:MOVA,#20H MOVB,#30H 在每一个汇编语言源程序的开始,在每一个汇编语言源程序的开始,都要设都要设置一条置一条ORG伪指令来指定该程序在存储器中伪指令来指定该程序在存储器中存放的起始位置。存放的起始位置。若省略若省略ORG伪指令,则该伪指令
8、,则该程序段从程序段从0000H单元开始存放。在一个源程单元开始存放。在一个源程序中,序中,可以多次使用可以多次使用ORG伪指令规定不同程伪指令规定不同程序段或数据段存放的起始地址,但序段或数据段存放的起始地址,但要求地址值要求地址值由小到大依序排列由小到大依序排列,不允许空间重叠。,不允许空间重叠。二、汇编结束伪指令二、汇编结束伪指令 END格式:格式:END 该指令的该指令的功能功能是结束汇编。是结束汇编。一个源程序只能有一个一个源程序只能有一个END命令。命令。汇编汇编程序遇到程序遇到END伪指令后即结束汇编。处于伪指令后即结束汇编。处于END之后的程序,汇编程序将不处理。之后的程序,汇
9、编程序将不处理。三、赋值伪指令三、赋值伪指令 EQU格式:变量格式:变量 EQU 数值数值 给变量标号赋予一个确定的数值。给变量标号赋予一个确定的数值。例:例:DATE EQU 30H TAB EQU 1000H MOV A,DATE MOV DPTR,TAB 例:例:LEN EQU 10 SUM EQU 21H BLOCK EQU 22H CLR A CLR C MOV R7,LEN MOV R0,BLOCK LOOP:ADDC A,R0 INC R0 DJNZ R7,LOOP MOV SUM,A END 该程序的功能是,把该程序的功能是,把BLOCK单元开始存放的单元开始存放的10个个无符
10、号数进行求和,并将结果存入无符号数进行求和,并将结果存入SUM单元中。单元中。四、四、DATA数值地址赋值伪指令数值地址赋值伪指令格式:字符名称格式:字符名称 DATA 表达式表达式功功能能:DATA与与EQU基基本本相相同同,即即将将DATA右右边边表表达达式式的的值值赋赋给给一一个个字字符符名名称称。二二者者的的区区别别是是:EQU必必须须先先定定义义,后后使使用用;而而DATA可可先先使使用用后后定定义义。因因此此,EQU一一般般放放在在程程序序的的开开始始,而而DATA可可放放在在程程序的任何地方。序的任何地方。五、字节数据定义伪指令五、字节数据定义伪指令 DB格式:标号:格式:标号:
11、DB 字节数据表。字节数据表。功功能能是是从从标标号号指指定定的的地地址址开开始始,在在ROM中中把把数数据据以以字字节节数数的的形形式式存存放放在在存存储储器器单单元元中中。一一个个数数据据占一个存储单元。占一个存储单元。例:例:FIRST:DB 73,04,53,38,00,46 SECON:DB 02H,36H,7AH,34H六、字数据定义伪指令六、字数据定义伪指令 DW格式:标号:格式:标号:DW 字数据表字数据表与与DB类类似似,但但定定义义字字,且且把把字字的的高高字字节节数数存存入入低低地地址址单单元元,低低字字节节数数存存入入高高地地址址单单元元,按按顺顺序连续存放。序连续存放
12、。例如例如:ORG 1400HTAB:DW 324AH,3CH 汇编后,(汇编后,(1400H)=32H,(,(1401H)=4AH,(1402H)=00H,(,(1403H)=3CH。七、空间定义伪指令七、空间定义伪指令 DS格式:标号:格式:标号:DS 表达式。表达式。从指定的地址单元开始,保留由表达式所指定从指定的地址单元开始,保留由表达式所指定的数量存储单元,并都填以零值。的数量存储单元,并都填以零值。例:例:ORG 3000HBUF:DS 50 汇编后,从地址汇编后,从地址3000H开始保留开始保留50个存个存储单元作为备用单元。储单元作为备用单元。八、位地址符号定义伪指令八、位地址
13、符号定义伪指令 BIT格式:变量格式:变量 BIT 位地址位地址 确确定定字字符符名名为为确确定定的的位位地地址址(数数值值地地址址或或符符号号地地址址)值。值。例:例:FLG BIT 00H FAST BIT 20H CLR FLG SETB FAST 4.4.1 顺序程序顺序程序 顺序程序是指无分支、无循环结构的程序。顺序程序是指无分支、无循环结构的程序。其执行流程是依指令在存储器中的存放顺序其执行流程是依指令在存储器中的存放顺序进行的。进行的。顺顺序序程程序序是是所所有有程程序序设设计计中中最最基基本本、最最简单,应用最多的程序结构。简单,应用最多的程序结构。4.4 基本程序基本程序结结
14、构构例例1:把片内:把片内RAM中中50H地址单元中的地址单元中的内容与内容与40H地址单元中的内容互换。地址单元中的内容互换。方法一:直接地址传送方法一:直接地址传送MOV A,50HMOV B,40HMOV 40H,AMOV 50H,BSJMP$例例1:把片内:把片内RAM中中50H地址单元中的地址单元中的内容与内容与40H地址单元中的内容互换。地址单元中的内容互换。方法二:间接地址传送方法二:间接地址传送MOV R0,40HMOV R1,50HMOV A,R0MOV B,R1MOV R1,AMOV R0,BSJMP$例例1:把片内:把片内RAM中中50H地址单元中的地址单元中的内容与内容
15、与40H地址单元中的内容互换。地址单元中的内容互换。方法三:直接地址间相互传送方法三:直接地址间相互传送MOV R7,50HMOV 50H,40HMOV 40H,R7SJMP$例例1:把片内:把片内RAM中中50H地址单元中的地址单元中的内容与内容与40H地址单元中的内容互换。地址单元中的内容互换。方法四:字节交换传送方法四:字节交换传送MOV A,50HXCH A,40HMOV 50H,ASJMP$方法五:堆栈传送方法五:堆栈传送PUSH 50HPUSH 40HPOP 50HPOP 40HSJMP$例例2:双字节无符号数加法:双字节无符号数加法 设设被被加加数数存存放放在在内内部部RAM的的
16、21H、20H单单元元,加加数数存存放放在在内内部部RAM的的31H、30H单单元元,相相加加的的结结果果存存放放在在内内部部RAM的的22H、21H、20H单元中(高字节在前)单元中(高字节在前)。程序段如下:程序段如下:ORG 0030HMOV R0,20H;被加数的低字节地址被加数的低字节地址MOV R1,30H;加数的低字节地址加数的低字节地址MOV A,R0 ;取被加数低字节取被加数低字节ADD A,R1 ;加上加数低字节加上加数低字节MOV R0,A ;保存低字节相加结果保存低字节相加结果INC R0 ;指向被加数高字节指向被加数高字节INC R1 ;指向加数高字节指向加数高字节M
17、OV A,R0 ;取被加数高字节取被加数高字节ADDC A,R1 ;加上加数高字节(带进位加)加上加数高字节(带进位加)MOV R0,A ;存高字节相加结果存高字节相加结果INCR0;修改地址;修改地址CLRA ;A清零清零ADDCA,00H;加上高位进位;加上高位进位MOVR0,A;保存最高位进位;保存最高位进位SJMP例 设设R2寄存器中保存两个压缩的寄存器中保存两个压缩的BCD码,码,试将它们拆开,并转换成试将它们拆开,并转换成ASCII码分别码分别放在片内放在片内RAM 11H(高位高位)和和10H(低低位位)单元中。单元中。根据根据ASCII码表可知,码表可知,09的的BCD数与数与
18、ASCII码表只相差码表只相差30H。因此,本题只需将因此,本题只需将R2中的两个中的两个BCD数拆开,分别加上数拆开,分别加上30H即即可。可。程序段如下:程序段如下:MOV A,R2 ;(R2)AANL A,#0FH;低位;低位BCD数送数送AORL A,#30H;低位;低位BCD数数转换成转换成ASC码码MOV 10H,A ;送送10H单元保存单元保存MOV A,R2ANL A,#0F0H;取高位;取高位BCD数数SWP A ;高位高位BCD数送低数送低4位位ORL A,#30H;完成高;完成高4位位BCD数的转换数的转换MOV 11H,A ;送;送11H单元保存单元保存SJMP4.4.
19、2 分支程序分支程序 在在程程序序设设计计过过程程中中,有有时时要要根根据据不不同同情情况况执执行行不不同同功功能能的的程程序序段段,这这种种根根据据程程序序要要求求而而改改变变程程序序执执行行顺顺序序的的设计,称为分支程序设计。设计,称为分支程序设计。分分支支程程序序设设计计分分为为无无条条件件分分支支程程序序设设计计和和条条件件分分支支程程序序设设计计两两类类。无无条条件件分分支支程程序序中中含含有有LJMP、AJMP等等无无条条件件转转移移指指令令,执执行行这这类类指指令令,程程序序将将无无条条件件转转移移。条条件件分分支支程程序序中中含含有有判判零零、比较、位控制等条件转移指令。比较、
20、位控制等条件转移指令。例例:片外片外RAM 2000H、2001H单元分别存放单元分别存放两个数,判断这两个数是否相等,如果相两个数,判断这两个数是否相等,如果相等,则位地址等,则位地址7FH置置1,否则清零。,否则清零。若判断两个数相等使用比较转移指令就若判断两个数相等使用比较转移指令就很容易实现该题中的要求,程序流程如图很容易实现该题中的要求,程序流程如图所示。所示。判断两个数相等的程序流程图判断两个数相等的程序流程图程序如下:程序如下:ORG 0100HMOV DPTR,#2000H;地址指针指;地址指针指2000H单元单元MOVX A,DPTR;(2000H)AMOV R0,A;AR0
21、MOV DPTR,#2001H;地址指针指;地址指针指2001H单元单元MOVX A,DPTR;(2001H)AMOV 30H,R0CJNEA,30H,NE;若两个数不相等,则若两个数不相等,则转转NESETB 7FH;若两个数相等,则若两个数相等,则7FH单元置单元置1AJMP OVER;转;转OVERNE:CLR7FH;7FH单元清零单元清零OVER:SJMP例例 设设VAR 单元内有一自变量单元内有一自变量X,请按如请按如下条件编程求函数值下条件编程求函数值Y并存入并存入FUNC单元单元中。中。按条件求函数按条件求函数Y的流程图的流程图程序如下:程序如下:ORG 0100HVAR EQU
22、 30HFUNC EQU 31HMOV A,VAR;XA JZ DONE ;若;若X=0,则转则转DONEJNB ACC.7,POSI;若;若X0,则转则转POSIMOV A,#0FFH;若若X0,则则-1A,FFH为为-1的补码的补码SJMP DONE ;转;转DONE POSI:MOV A,#01H;1A DONE:MOV FUNC,A;存存Y值值SJMP4.4.3 4.4.3 循环程序循环程序在程序中包含重复执行的程序段称为在程序中包含重复执行的程序段称为循环程序设计。循环程序可以使程序结构循环程序设计。循环程序可以使程序结构性强、可读性好,从而大大提高了程序质性强、可读性好,从而大大提
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完美 课件 资料 单片机 原理 应用 第四
限制150内