片机教程第4章-汇编程序设计.ppt
《片机教程第4章-汇编程序设计.ppt》由会员分享,可在线阅读,更多相关《片机教程第4章-汇编程序设计.ppt(61页珍藏版)》请在三一办公上搜索。
1、第4章:汇编语言程序设计,本章基本要求:汇编语言的构成 源程序的设计与汇编*应用程序设计*,4.1汇编语言的构成,4.1.1程序设计语言用户要使计算机能完成各式各样的任务,就要设计各种相应的应用程序,而设计程序就要用到程序设计语言。程序设计语言有3种:机器语言汇编语言高级语言。,4.1汇编语言的构成,表4-1 机器语言和汇编语言的形式,机器语言中二进制形式不便记忆,常采用十六进制形式记忆,4.1汇编语言的构成,在Keil调试环境下反汇编程序,1、汇编源程序:,2、反汇编程序:,地址,机器码,反汇编程序,汇编源程序,4.1汇编语言的构成,1、机器语言计算机能直接识别和执行的二进制代码形式的指令称
2、为机器指令,而该类指令的集合称为计算机的机器语言,或称指令系统。机器语言是面向计算机系统的。由于各种计算机内部结构,线路的不同,每种计算机系统都有它自己的机器语言,即使执行同一操作,其指令也不相同。,4.1汇编语言的构成,2、汇编语言计算机所能执行的每条指令都对应一组二进制代码。为了容易理解和记忆计算机的指令,人们用一些英语的单词和字符以及数字作为助记符来描述每一条指令的功能。用助记符描述的指令系统,称为机器的汇编语言系统,简称汇编语言。汇编语言也是面向机器的,每种计算机系统也都有它自己的汇编语言,用汇编语言编写的程序,称为汇编语言源程序或汇编源程序。,4.1汇编语言的构成,3、高级语言 高级
3、语言(如:PASCAL、C、FORTRAN、BASIC等)克服了汇编语言的缺点,是一种面向问题或过程的语言。它是一种接近于自然语言和数学算法的语言,与机器的硬件无关,用户编程时不必仔细了解所用计算机的具体性能和指令系统。高级语言不但直观、易学、易懂,而且通用性强,可以在不同的计算机上运行,因此可移植性好。,4.1汇编语言的构成,4.1.2汇编语言格式MCS51系列单片机是用51系列单片机的指令系统来编程的,其汇编语言的语句格式,也就是单片机的指令格式,即:标号:操作码 操作数;注释说明:1、内的部分为可选项;2、标号是一条指令在存储器存放的地址,是以字母开头的字母数字串,不可以是保留字;3、操
4、作码和操作数必须按照指令格式书写;,4.1汇编语言的构成,举例:ORG0060H START:MOV A,#00H;A0MOV R2,#0AH;R210MOVR1,#03H;R13 LOOP:ADDA,R1;AA+R1 DJNZ R2,LOOP;若R2-10,则跳到LOOP NOP SJMP$END,4.1汇编语言的构成,4、操作数可以写成以下形式(5种-128页):二进制、十进制、十六进制形式工作寄存器、特殊功能寄存器地址标号带加减算符的表达式采用符,4.1汇编语言的构成,举例:MOV A,#00110101B;A53 MOV A,#20D;A20 MOV A,#20;A20 MOV R0,
5、#20H;R020HMOVR1,#0BFH;R1BFH SJMP$;原地跳转 MOV R7,R2;R7R2 MOV A,LABLE;A标号地址 MOV A,LABLE+1;A标号地址+1,4.1汇编语言的构成,4.1.3汇编语言构成汇编语言语句分为:指令性语句、指示性语句两类。1、指令性语句包括指令系统中的全部指令,每条指令有对应的机器代码,并可由CPU执行。2、指示性语句在汇编源程序的过程中,还有一些指令不要求CPU进行任何操作,也没有对应的机器码,不影响程序的执行,仅仅是能够指导汇编进行处理的一些指令,称之为伪指令。,4.1汇编语言的构成,伪指令的主要功能是:用来指定程序或数据的起始位置,
6、给出一些连续存放数据的确定地址,或为中间运算结果保留一部分存储空间以及表示源程序结束等等。不同版本的汇编语言,伪指令的符号和含义可能有所不同,但是基本用法是相似的。下面介绍几种常用的基本伪指令。,MCS-51单片机伪指令,1、起点指令 ORG,格式:,ORG H(16位地址或标号),功能:,给程序起始地址或数据块的起始地址赋值,例:,用法:,一般出现在每段源程序或数据块的开始一个源程序可多次出现ORG指令,首地址,首地址,2、结束命令 END,格式:END,功能:汇编程序结束标志,附在一个源程序的结尾 一个源程序只能出现一次END指令,用法:,MCS-51单片机伪指令,3、等值命令 EQU,格
7、式:,字符名称 EQU 数据或汇编符号,功能:,将一个数据或汇编符号赋予标号段规定的字符名称,例:,;AA与R6等值,MCS-51单片机伪指令,例:,A10 EQU 10DELY EQU 07EBH MOV A,A10 LCALL DELY,;A10=10,;DELY=07EBH,;转向入口地址 07EBH,使用EQU指令,须先赋值后使用,不能反之,4、数据地址赋值等值命令 DATA,格式:,字符名称 DATA 数据或表达式,功能:,此命令把数据/代码地址赋予标号段所规定的字符名称。定义的字符名称可先使用后定义,INDEXJ DATA 8096H,;INDEXJ这个字符名称的地址为8096H,
8、例:,等价于,MCS-51单片机伪指令,EQU与 DATA的区别,(1)DATA与EQU相似,但DATA定义的字符名称,可先使用后定义,EQU则不能,(2)EQU指令可把汇编符号赋给字符名称,DATA则不能,(3)DATA可把表达式的值赋给字符名称,EQU则不能,DATA常在程序中定义数据地址EQU常在程序中定义字符数据,MCS-51单片机伪指令,5、定义字节命令 DB,格式:,功能:,标号:DB 字节常数或字符串(8位),定义字节的内容,汇编程序把DB定义的字节依次存入标号开始的存储单元,有定义的内存单元地址,项或项表,例:,伪指令ORG 定义了TAB的起始地址为8000H,伪指令DB定义了
9、8000H8003单元的内容依次为:,(8000H)=45H,(8001H)=49H,(8002H)=35H,(8003H)=41H,(8004H)=05H,TAB,TAB1,(1)由 ORG定义,(2)跟在其他源程序之后,6、定义字命令DW,格式:,功能:,标号:DW 字或字表,定义若干个字(双字节),例:,ORG 8000H,TAB:DW 7234H,8AH,10,(8000H)=72H,(8001H)=34H,(8002H)=00H,(8003H)=8AH,(8005H)=0AH,汇编后:,(8004H)=00H,MCS-51单片机伪指令,7、定义空间命令 DS,格式:,功能:,标号:D
10、S 数据或字符及表达式,例:,(8008H)=30H,(8009H)=8AH,从指定单元地址开始,由数据或字符及表达式的值来定义应保留的单元数,备用,即:8000H8007H单元保留备用,定义空间,MCS-51单片机伪指令,8、位地址符号命令 BIT,格式:,字符名称 BIT 位地址,功能:,把位地址赋予标号段的字符名称,;P1.0,P2.0赋予位地址字符名称 A1、A2,在编程时可以直接把 A1、A2 当成位地址使用,MCS-51单片机伪指令,汇编程序的操作,分两次扫描(汇编),第一次扫描(汇编),检查语法结构,对源程序中的符号、表达式、标号进行定义,处理伪指令,建立符号表,显示 ERROR
11、,并提示行号,显示 ERROR,并提示行号,修改!,修改!,第二次扫描(汇编),汇编成目标代码和汇编程序清单,可执行的代码(机器码),4.2汇编源程序的设计与汇编,4.2.1汇编程序设计步骤1、确定方案和计算方法2、了解应用系统的硬件配置、性能指标。3、建立系统数学模型,确定控制算法和操作步骤。4、画程序流程图,表示程序结构和程序功能。5、编制源程序 合理分配存储器单元和了解I/O接口地址。按功能设计程序,明确各程序之间的相互关系。用注释行说明程序,便于阅读和修改调试和修改。6、上机调试,对程序的正确性作最后的确定。,4.2 汇编源程序的设计与汇编,程序设计步骤流程:,Y,N,Y,Y,Y,N,
12、N,N,4.2汇编源程序的设计与汇编,4.2.2源程序的汇编CPU可以执行的只能是机器码程序。称:把源程序翻译成机器码的过程为汇编。汇编可:人工汇编和机器汇编两类。1、人工汇编由人工直接将汇编源程序翻译成机器码。2、机器汇编使用计算机执行“汇编程序”来代替人工实现将汇编源程序翻译成机器码。,汇编语言源程序,机器语言,汇编,反汇编,交叉汇编,例4.1 设在内部RAM的BLOCK单元内有一无符号数据块的长度,无符号数据块起始地址是BLOCK+1。试编程求无符号数据块种数据的累加和(不考虑进位加法之和),并把它存入SUM单元。程序:ORG1000HSUMDATA1FH BLOCKDATA 20H S
13、TART:MOVR0,#BLOCK;数据块长度地址送R0MOVA,R0;数据块长度送ACJNEA,#00H,LOOP;若数据块长度0,则LOOP HERE:SJMP$;若数据块长度=0,则结束 LOOP:CLRA NEXT:INC R0;修改数据指针ADDA,R0;加一个数DJNZ BLOCK,NEXT;若(BLOCK)-1 0,则NEXT MOV SUM,A;存累加和 SJMP HERE END,汇编程序经两次汇编得机器码 第一次汇编 第二次汇编,转移地址计算,LOOP=1008H-1003H-3=02H;NEXT=1009H-100BH-3=-5=0FBH$=1006H-1006H-2=-
14、2=0FEH;HERE=1006H-1010H-2=-12=0F4H,偏移地址=指令所在地址-跳转地址-指令字节数,4.3简单程序与分支程序设计,4.3.1简单程序设计例4.2请编写能把20H单元内两个BCD数变成相应的ASCII码并放在21H(高位BCD数的ASCII码)和22H(高位BCD数的ASCII码)单元的程序。程序:ORG 0500H MOV R0,#22H;R0=22H MOV R0,#00H;(22H)=0 MOV A,20H;A(20H)BCD码 XCHD A,R0;低位BCD码与22H半字节交换 ORL 22H,#30H;加30H完成ASCII码变换 SWAP A;高位BC
15、D码高低位半字节交换 ORL A,#30H;加30H完成ASCII码变换 MOV 21H,A;存入21H单元 SJMP$,例4.3已知一个补码形式的16位二进制(低8位在NUM单元,高8位在NUM+1单元),试编写能求该16位二进制数原码的绝对值得程序。程序:ORG 0300H NUM DATA 20H MOV R0,#NUM;R0=NUM MOV R0,A;低8位送入A CPL A;A求反 ADD A,#01H;A中内容变补,保留CY MOV R0,A;存数 INC R0;地址加1,指向高8位 MOV R0,A;高8位送入A CPL A;取反 ADDC A,#00H;加进位 ANL A,#7
16、FH;去掉符号位 MOV R0,A;存数 SJMP$,4.3简单程序与分支程序设计,例4.4已知20H单元中有一个8位二进制数,请编程把它转换为3位BCD数,把百位数存入FIRST单元的低4位,十位和个位BCD数放在SECOND单元,十位BCD数在SECOND单元的高4位。程序:ORG 0200H FIRST DATA 30H SECOND DATA 31H MOV A,20H;A=(20H)MOV B,#64H;除数100 DIV AB;A/100 MOV FIRST,A;低8位送入A MOV A,B;余数送A MOV B,#0AH;除数10 DIV AB;A/10 SWAP A;十位BCD
17、送高4位 ORL A,B;完成十位和个位装配 MOV SECOND,A;存入SECOND单元 SJMP$,4.3简单程序与分支程序设计,4.3.2分支程序设计可分为无条件和有条件分支程序两类。重点以条件分支举例。例4.5 已知VAR单元内有一自变量,请按如下条件编出求函数值Y,并将它存入FUNC单元的程序。1 X0 Y=0 X=0-1 X0 解:这是一个三分支归一的条件转移问题。两种求解方法:“先分支后赋值”“先赋值后先分”,4.3简单程序与分支程序设计,“先分支后赋值”,程序:ORG 0100H VAR DATA 30H FUNC DATA 31H MOV A,VAR;AX JZ DONE;
18、若=0,则转DONE JNB ACC.7,POSI;若0,则转POSI MOV A,#0FFH;若0,则A-1 SJMP DONE;转DONE POSI:MOV A,#01H;则A 1 DONE:MOV FUNC,A;存结果 SJMP$END,Y,Y,N,N,一个判断决策框,程序有两条出路。两种分支结构:,例:求R2中补码绝对值,正数不变,负数变补。MOV A,R2 JNB ACC.7,NEXT;为正数?CPL A;负数变补 INC A MOV R2,ANEXT:SJMP NEXT;结束,例如 行李计价:当重量G5公斤,价格M=G3(元);当重量G5公斤,价格M=G3+(G-5)2(元),FR
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教程 汇编程序 设计
链接地址:https://www.31ppt.com/p-6426508.html