片机教程第4章-汇编程序设计.ppt
《片机教程第4章-汇编程序设计.ppt》由会员分享,可在线阅读,更多相关《片机教程第4章-汇编程序设计.ppt(61页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第4章:汇编语言程序设计章:汇编语言程序设计本章基本要求:本章基本要求:汇编语言的构成汇编语言的构成源程序的设计与汇编源程序的设计与汇编*应用程序设计应用程序设计*4.14.1汇编语言的构成汇编语言的构成4.1.14.1.1程序设计语言程序设计语言用用户户要要使使计计算算机机能能完完成成各各式式各各样样的的任任务务,就就要要设设计计各各种种相相应应的的应应用用程程序序,而而设设计计程程序序就就要要用用到到程序设计语言。程序设计语言。程序设计语言有程序设计语言有3 3种种:机器语言机器语言汇编语言汇编语言高级语言。高级语言。4.14.1汇编语言的构成汇编语言的构成表表4-1 4-1 机器语言和
2、汇编语言的形式机器语言和汇编语言的形式地址地址机器语言形式机器语言形式汇编语言形式汇编语言形式二进制形式二进制形式十六进十六进制形式制形式2000H0111010000000101B7405HSTART:MOVA,#05H2002H0020010000001010B240AHADDA,#0AH2004H1111010100100000BF520HMOV20H,A2006H1000000011111110B80FEHSJMP$机机器器语语言言中中二二进进制制形形式式不不便便记记忆忆,常常采采用用十十六进制形式记忆六进制形式记忆4.14.1汇编语言的构成汇编语言的构成在在KeilKeil调试环境下
3、反汇编程序调试环境下反汇编程序1 1、汇编源程序:、汇编源程序:2 2、反汇编程序:、反汇编程序:地址地址机器码机器码反汇编程序反汇编程序汇编源程序汇编源程序4.14.1汇编语言的构成汇编语言的构成1 1、机器语言、机器语言计计算算机机能能直直接接识识别别和和执执行行的的二二进进制制代代码码形形式式的的指指令令称称为为机机器器指指令令,而而该该类类指指令令的的集集合合称称为为计计算算机机的的机机器器语语言言,或或称称指指令令系系统统。机机器器语语言言是是面面向向计计算算机机系系统统的的。由由于于各各种种计计算算机机内内部部结结构构,线线路路的的不不同同,每每种种计计算算机机系系统统都都有有它它
4、自自己己的的机机器器语语言言,即使执行同一操作即使执行同一操作,其指令也不相同。其指令也不相同。4.14.1汇编语言的构成汇编语言的构成2 2、汇编语言、汇编语言计计算算机机所所能能执执行行的的每每条条指指令令都都对对应应一一组组二二进进制制代代码码。为为了了容容易易理理解解和和记记忆忆计计算算机机的的指指令令,人人们们用用一一些些英英语语的的单单词词和和字字符符以以及及数数字字作作为为助助记记符符来来描描述述每每一一条条指指令令的的功功能能。用用助助记记符符描描述述的的指指令令系系统统,称为机器的汇编语言系统称为机器的汇编语言系统,简称汇编语言。简称汇编语言。汇汇编编语语言言也也是是面面向向
5、机机器器的的,每每种种计计算算机机系系统统也也都都有有它它自自己己的的汇汇编编语语言言,用用汇汇编编语语言言编编写写的的程程序序,称为汇编语言源程序或汇编源程序。称为汇编语言源程序或汇编源程序。4.14.1汇编语言的构成汇编语言的构成3 3、高级语言、高级语言 高高级级语语言言(如如:PASCAL:PASCAL、C C、FORTRANFORTRAN、BASICBASIC等等)克克服服了了汇汇编编语语言言的的缺缺点点,是是一一种种面面向向问问题题或或过过程程的的语语言言。它它是是一一种种接接近近于于自自然然语语言言和和数数学学算算法法的的语语言言,与与机机器器的的硬硬件件无无关关,用用户户编编程
6、程时时不不必必仔仔细细了了解解所所用用计计算算机机的的具具体体性性能能和和指指令令系系统统。高高级级语语言言不不但但直直观观、易易学学、易易懂懂,而而且且通通用用性性强强,可可以以在在不不同同的计算机上运行的计算机上运行,因此可移植性好。因此可移植性好。4.14.1汇编语言的构成汇编语言的构成4.1.24.1.2汇编语言格式汇编语言格式MCS51MCS51系系列列单单片片机机是是用用5151系系列列单单片片机机的的指指令令系系统统来来编编程程的的,其其汇汇编编语语言言的的语语句句格格式式,也也就就是是单单片机的指令格式片机的指令格式,即即:标号标号:操作码操作码 操作数操作数 ;注释注释说明:
7、说明:1 1、内的部分为可选项;内的部分为可选项;2 2、标标号号是是一一条条指指令令在在存存储储器器存存放放的的地地址址,是是以以字字母开头的字母数字串,不可以是保留字;母开头的字母数字串,不可以是保留字;3 3、操作码和操作数必须按照指令格式书写;、操作码和操作数必须按照指令格式书写;4.14.1汇编语言的构成汇编语言的构成举例:举例:ORG ORG0060H0060H START:MOV START:MOV A,#00H ;A0A,#00H ;A0MOV R2,#0AH ;R210MOV R2,#0AH ;R210MOVMOVR1,#03H ;R13R1,#03H ;R13 LOOP:A
8、DD LOOP:ADDA,R1 ;AA+R1A,R1 ;AA+R1 DJNZ R2,LOOP ;DJNZ R2,LOOP ;若若R2-10,R2-10,则跳到则跳到LOOPLOOP NOP NOP SJMP$SJMP$END END4.14.1汇编语言的构成汇编语言的构成4 4、操作数可以写成以下形式(、操作数可以写成以下形式(5 5种种-128-128页):页):二进制、十进制、十六进制形式二进制、十进制、十六进制形式工作寄存器、特殊功能寄存器工作寄存器、特殊功能寄存器地址标号地址标号带加减算符的表达式带加减算符的表达式采用采用符符4.14.1汇编语言的构成汇编语言的构成举例:举例:MOV
9、A,#00110101B ;A53 MOV A,#00110101B ;A53 MOV MOV A,#20D ;A20A,#20D ;A20 MOV A,#20 ;A20 MOV A,#20 ;A20 MOV R0,#20H ;R020HMOV R0,#20H ;R020HMOVMOVR1,#0BFH ;R1BFHR1,#0BFH ;R1BFH SJMP$;SJMP$;原地跳转原地跳转 MOV R7,R2 ;R7R2 MOV R7,R2 ;R7R2 MOV A,LABLE ;A MOV A,LABLE ;A标号地址标号地址 MOV A,LABLE+1 ;A MOV A,LABLE+1 ;A标号
10、地址标号地址+1+1 4.14.1汇编语言的构成汇编语言的构成4.1.34.1.3汇编语言构成汇编语言构成汇编语言语句分为:指令性语句、指示性语句两类。汇编语言语句分为:指令性语句、指示性语句两类。1 1、指令性语句、指令性语句包包括括指指令令系系统统中中的的全全部部指指令令,每每条条指指令令有有对对应应的机器代码,并可由的机器代码,并可由CPUCPU执行。执行。2 2、指示性语句、指示性语句在在汇汇编编源源程程序序的的过过程程中中,还还有有一一些些指指令令不不要要求求CPUCPU进进行行任任何何操操作作,也也没没有有对对应应的的机机器器码码,不不影影响响程程序序的的执执行行,仅仅仅仅是是能能
11、够够指指导导汇汇编编进进行行处处理理的的一一些些指指令令,称之为伪指令。称之为伪指令。4.14.1汇编语言的构成汇编语言的构成伪伪指指令令的的主主要要功功能能是是:用用来来指指定定程程序序或或数数据据的的起起始始位位置置,给给出出一一些些连连续续存存放放数数据据的的确确定定地地址址,或或为为中中间间运运算算结结果果保保留留一一部部分分存存储储空空间间以以及及表表示示源源程序结束等等。程序结束等等。不不同同版版本本的的汇汇编编语语言言,伪伪指指令令的的符符号号和和含含义义可可能有所不同能有所不同,但是基本用法是相似的。但是基本用法是相似的。下面介绍几种常用的基本伪指令。下面介绍几种常用的基本伪指
12、令。MCS-51MCS-51单片机伪单片机伪指令指令伪指令仅在汇编过程中起控制作用不产生伪指令仅在汇编过程中起控制作用不产生可执行可执行目标代码,又称为软指令目标代码,又称为软指令1、起点指令、起点指令 ORG格式:格式:ORG H (16位地址或标号)位地址或标号)功能:功能:给程序给程序起始地址起始地址或数据块的或数据块的起始地址起始地址赋值赋值例:例:用法:用法:一般出现在每段源程序或数据块的开始一般出现在每段源程序或数据块的开始一个源程序可多次出现一个源程序可多次出现ORG指令指令ORG 2000HSTART:MOV A,#64H ;源程序的起始地址源程序的起始地址为为2000H首地址
13、首地址首地址首地址2、结束命令、结束命令 END格式:格式:END功能:汇编程序结束标志功能:汇编程序结束标志附在一个源程序的结尾附在一个源程序的结尾 一个源程序只能出现一次一个源程序只能出现一次END指令指令用法:用法:MCS-51MCS-51单片机伪单片机伪指令指令3、等值命令、等值命令 EQU格式:格式:字符名称字符名称 EQU 数据或汇编符号数据或汇编符号功能:功能:将一个数据或汇编符号赋予标号段规定将一个数据或汇编符号赋予标号段规定的字符名称的字符名称例:例:ORG 8000H AA EQU R6MOV A,AA;AA与与R6等值等值;A (R6)MCS-51MCS-51单片机伪单片
14、机伪指令指令例例:A10 EQU 10DELY EQU 07EBH MOV A,A10 LCALL DELY;A10=10;DELY=07EBH;转向入口地址;转向入口地址 07EBH使用使用EQU指令,须先赋值后使用,不能反之指令,须先赋值后使用,不能反之4、数据地址赋值等值命令、数据地址赋值等值命令 DATA格式:格式:字符名称字符名称 DATA 数据或表达式数据或表达式功能:功能:此命令把数据此命令把数据/代码地址赋予标号段所规定的代码地址赋予标号段所规定的字符名称。定义的字符名称可先使用后定义字符名称。定义的字符名称可先使用后定义INDEXJ DATA 8096HORG 8000HIN
15、DEXJ DATA 8096H LJMP INDEXJENDORG 8000H LJMP 8096HEND;INDEXJ这个字符名称的地址为这个字符名称的地址为8096H例:例:等等价价于于MCS-51MCS-51单片机伪单片机伪指令指令 EQU与与 DATA的区别的区别(1)DATA与与EQU相似,但相似,但DATA定义的字符名称定义的字符名称,可先使用后定义可先使用后定义,EQU则不能则不能(2)EQU指令可把汇编符号赋给字符名称,指令可把汇编符号赋给字符名称,DATA则不能则不能 (3)DATA可把表达式的值赋给字符名称,可把表达式的值赋给字符名称,EQU则不能则不能 DATA常在程序中
16、定义数据地址常在程序中定义数据地址EQU常在程序中定义字符数据常在程序中定义字符数据 MCS-51MCS-51单片机伪单片机伪指令指令5、定义字节命令、定义字节命令 DB格式:格式:功能:功能:标号:标号:DB 字节常数或字符串字节常数或字符串 (8 8位)位)定义字节的内容,汇编程序把定义字节的内容,汇编程序把DB定义的定义的字节依次存入字节依次存入标号开始标号开始的存储单元的存储单元有定义的内存单元有定义的内存单元地址地址项或项表项或项表例:例:ORG 8000HTAB:DB 45H,73,5,ATAB1:DB 101B伪指令伪指令ORG 定义了定义了TAB的起始地址为的起始地址为8000
17、H,伪指令伪指令DB定义了定义了8000H8003单元的内容依次为:单元的内容依次为:(8000H)=45H(8001H)=49H(8002H)=35H(8003H)=41H(8004H)=05HTABTAB1(1)由由 ORG定义定义(2)跟在其他源程序之后跟在其他源程序之后6、定义字命令、定义字命令DW格式:格式:功能:功能:标号:标号:DW 字或字表字或字表定义若干个字(双字节)定义若干个字(双字节)例:例:ORG 8000HTAB:DW 7234H,8AH,10(8000H)=72H(8001H)=34H(8002H)=00H(8003H)=8AH(8005H)=0AH汇编后:汇编后:
18、(8004H)=00HMCS-51MCS-51单片机伪单片机伪指令指令7、定义空间命令、定义空间命令 DS格式:格式:功能:功能:标号:标号:DS 数据或字符数据或字符及及表达式表达式例:例:(8008H)=30H(8009H)=8AH从指定单元地址开始,由数据或字符及从指定单元地址开始,由数据或字符及表达式的值来定义应保留的单元数表达式的值来定义应保留的单元数,备用备用ORG 8000HDS 08HDB 30H,8AH即:即:8000H8007H单元保留备用单元保留备用定义空定义空间间MCS-51MCS-51单片机伪单片机伪指令指令8、位地址符号命令、位地址符号命令 BIT格式:格式:字符名
19、称字符名称 BIT 位地址位地址功能:功能:把位地址赋予标号段的字符名称把位地址赋予标号段的字符名称 A1 BIT P1.0A2 BIT P2.0例:例:;P1.0,P2.0赋予位地址字符名称赋予位地址字符名称 A1、A2,在编程时可以直接把,在编程时可以直接把 A1、A2 当成位地址使用当成位地址使用MCS-51MCS-51单片机伪单片机伪指令指令汇编程序的操作汇编程序的操作分两次扫描(汇编)分两次扫描(汇编)第一次扫描(汇编)第一次扫描(汇编)检查语法结构,对源程序检查语法结构,对源程序中的符号、表达式、标号中的符号、表达式、标号进行定义,处理伪指令,进行定义,处理伪指令,建立符号表建立符
20、号表显示显示 ERROR,并提示行号,并提示行号显示显示 ERROR,并提示行号,并提示行号修改!修改!修改!修改!第二次扫描(汇编)第二次扫描(汇编)汇编成目标代码和汇编程序汇编成目标代码和汇编程序清单清单可执行的代码(机器码)可执行的代码(机器码)4.2汇编源程序的设计与汇编汇编源程序的设计与汇编4.2.14.2.1 汇编程序设计步骤汇编程序设计步骤1 1、确定方案和计算方法、确定方案和计算方法2 2、了解应用系统的硬件配置、性能指标。、了解应用系统的硬件配置、性能指标。3 3、建立系统数学模型,确定控制算法和操作步骤。、建立系统数学模型,确定控制算法和操作步骤。4 4、画程序流程图,表示
21、程序结构和程序功能。、画程序流程图,表示程序结构和程序功能。5 5、编制源程序、编制源程序 合理分配存储器单元和了解合理分配存储器单元和了解I/OI/O接口地址。接口地址。按功能设计程序,明确各程序之间的相互关系。按功能设计程序,明确各程序之间的相互关系。用注释行说明程序,便于阅读和修改调试和修改。用注释行说明程序,便于阅读和修改调试和修改。6 6、上机调试,对程序的正确性作最后的确定。、上机调试,对程序的正确性作最后的确定。4.2汇编源程序的设计与汇编汇编源程序的设计与汇编程序设计步骤流程:程序设计步骤流程:拟制设计任务书拟制设计任务书建立或修改数学模型建立或修改数学模型确定算法确定算法编制
22、或修改流程图编制或修改流程图编制或修改程序编制或修改程序汇编通过?汇编通过?上机调试上机调试调试通过?调试通过?程序有大问题?程序有大问题?试运行通过?试运行通过?完成完成Y YN NY YY YY YN NN NN N4.2汇编源程序的设计与汇编汇编源程序的设计与汇编4.2.24.2.2 源程序的汇编源程序的汇编CPUCPU可可以以执执行行的的只只能能是是机机器器码码程程序序。称称:把把源源程程序序翻翻译译成成机机器器码码的的过过程程为为汇汇编编。汇汇编编可可:人人工工汇汇编编和和机机器器汇汇编编两类。两类。1 1、人工汇编、人工汇编由人工直接将汇编源程序翻译成机器码。由人工直接将汇编源程序
23、翻译成机器码。2 2、机器汇编、机器汇编使使用用计计算算机机执执行行“汇汇编编程程序序”来来代代替替人人工工实实现现将将汇汇编编源程序翻译成机器码。源程序翻译成机器码。汇编语言汇编语言源程序源程序机器语言机器语言 汇编汇编 反汇编反汇编交叉交叉汇编汇编例例4.1设设在在内内部部RAM的的BLOCK单单元元内内有有一一无无符符号号数数据据块块的的长长度度,无无符符号号数数据据块块起起始始地地址址是是BLOCK+1。试试编编程程求求无无符符号号数数据据块块种种数数据据的的累累加加和和(不不考考虑虑进进位位加法之和),并把它存入加法之和),并把它存入SUM单元。单元。程序:程序:ORG1000HSU
24、MDATA1FHBLOCKDATA20HSTART:MOVR0,#BLOCK;数据块长度地址送数据块长度地址送R0MOVA,R0;数据块长度送数据块长度送ACJNEA,#00H,LOOP;若数据块长度若数据块长度0,则LOOPHERE:SJMP$;若数据块长度若数据块长度=0,则结束束LOOP:CLRANEXT:INCR0;修改数据指针修改数据指针ADDA,R0;加一个数加一个数DJNZ BLOCK,NEXT;若(若(BLOCK)-10,则NEXTMOVSUM,A;存累加和存累加和 SJMPHEREEND汇编程序经两次汇编得机器码汇编程序经两次汇编得机器码 第一次汇编第一次汇编 第二次汇编第二
25、次汇编 地址地址指令码指令码标号标号指令助记符指令助记符1000H1000H7820H7820HSTARTSTARTMOV R0,#BLOCKMOV R0,#BLOCK1002H1002HE6HE6HMOV A,R0MOV A,R01003H1003HB400LOOPB400LOOPCJNE A,#00H,LOOPCJNE A,#00H,LOOP1006H1006H80$80$HEREHERESJMP$SJMP$1008H1008HE4HE4HLOOPLOOPCLR ACLR A1009H1009H08H08HNEXTNEXTINC R0INC R0100AH100AH26H26HADD A,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教程 汇编程序 设计
限制150内