第5章80C51单片机汇编语言程序设计.ppt
《第5章80C51单片机汇编语言程序设计.ppt》由会员分享,可在线阅读,更多相关《第5章80C51单片机汇编语言程序设计.ppt(46页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第5 5章章 汇编语言程序设计简介汇编语言程序设计简介 5.1 5.1 单片机程序设计语言概述单片机程序设计语言概述5.2 5.2 汇编语言基本结构汇编语言基本结构12/20/2022第5章 汇编语言程序设计简介 5.1 5.1 单片机程序设计语言概述单片机程序设计语言概述第第5 5章章 汇编语言程序设计简介汇编语言程序设计简介 12/20/2022第5章 汇编语言程序设计简介 5.1.1 5.1.1 单片机常用的三种程序设计语言单片机常用的三种程序设计语言机器语言机器语言 指直接用机器码编写程序、能够被计算机直接执指直接用机器码编写程序、能够被计算机直接执行的语言。行的语言。汇编语言汇编语
2、言 指用指令助记符代替机器码的编程语言指用指令助记符代替机器码的编程语言 高级语言高级语言 广泛应用的高级语言是广泛应用的高级语言是C语言,每当有新型单片语言,每当有新型单片机推出时,都有相配套的机推出时,都有相配套的C编译器加以支持。高编译器加以支持。高级语言编写程序的缺点是实时性不高,结构不紧级语言编写程序的缺点是实时性不高,结构不紧凑,编译后占用存储空间比较大,这一点在存储凑,编译后占用存储空间比较大,这一点在存储器有限的单片机应用系统中没有优势。器有限的单片机应用系统中没有优势。12/20/2022第5章 汇编语言程序设计简介 5.1.2 5.1.2 汇编语言语句的种类和格式汇编语言语
3、句的种类和格式1.指令种类指令种类(1)指令语句)指令语句 每一条指令语句在汇编时都产生一个指令代码每一条指令语句在汇编时都产生一个指令代码机器码。机器码。(2)伪指令语句)伪指令语句 伪指令语句是为汇编服务的。在汇编时没有机器伪指令语句是为汇编服务的。在汇编时没有机器代码与之对应。伪指令语句是控制汇编程序如何代码与之对应。伪指令语句是控制汇编程序如何完成汇编工作的指示,包括控制汇编程序的输入完成汇编工作的指示,包括控制汇编程序的输入/输出,定义数据和符号,条件汇编,分配存储空输出,定义数据和符号,条件汇编,分配存储空间等。这些指示信息就是伪指令。间等。这些指示信息就是伪指令。12/20/20
4、22第5章 汇编语言程序设计简介 伪指令伪指令 是是 对汇编过程对汇编过程 起控制作用,但本身并没有对起控制作用,但本身并没有对应的机器代码的指令。应的机器代码的指令。(1 1)汇编起始指令)汇编起始指令 ORGORG 指令格式为指令格式为:ORG nn 该该指指令令的的作作用用是是指指明明后后面面的的程程序序或或数数据据块块的的起起始始地地址址,它它总总是是出出现现在在每每段段源源程程序序或或数数据据块块的的开开始始。式式中中,nn为为 16 位位地地址址,汇汇编编时时nn确确定定了了此此语语句句后后面面第第一一条条指指令令或或第第一一个个数数据据的的地地址址,此此后后的的源源程程序序或或数
5、数据据块块就就依依次次连连续续存存放放在在以以后后的的地址内地址内,直到遇到另一个直到遇到另一个ORG指指令为止。令为止。2.伪指令伪指令 12/20/2022第5章 汇编语言程序设计简介 例例:ORG 2000H MOV SP,60H MOV R0,2FH MOV R2,0FFH ORG伪伪指指令令说说明明其其后后面面程程序序的的目目标标代代码码在在存存储储器器中存放的起始地址是中存放的起始地址是2000H,即即 存储器地址存储器地址 目标程序目标程序 2000H 75 81 60 2003H 78 2F 2005H 7A FF 12/20/2022第5章 汇编语言程序设计简介 (2 2)等
6、值指令)等值指令EQUEQU 指令格式指令格式:字符名称字符名称 EQU 数字或汇编符号数字或汇编符号 例例:PA8155 EQU 8001H;即给标号即给标号PA8155赋值为赋值为8001H 使指令中的字符名称等价于给定的数字或汇编符号。使指令中的字符名称等价于给定的数字或汇编符号。如如果果在在程程序序中中要要多多次次使使用用到到某某一一地地址址,由由EQU指指令令将将其其赋赋值值给给一一个个字字符符名名称称,一一旦旦需需要要对对其其进进行行变变动动,只只要要改改变变EQU命令后面的数字即可。命令后面的数字即可。注注意意:由由 EQU等等值值的的字字符符名名称称必必须须先先赋赋值值后后使使
7、用用,且且在在同一个源程序中同一个源程序中,同一个标号只能赋值一次。同一个标号只能赋值一次。12/20/2022第5章 汇编语言程序设计简介 (3 3)定义字节指令)定义字节指令DBDB 指令格式指令格式:标号标号:DB 8位二进制数表位二进制数表 功功能能:把把 8 位位二二进进制制数数表表依依次次存存入入从从标标号号开开始始的的连连续续的存储单元中。的存储单元中。标标号号区区段段可可有有可可无无,DB指指令令之之后后的的 8 位位二二进进制制数数表表是是字字节节常常数数或或用用逗逗号号隔隔开开的的字字节节串串,也也可可以以是是用用引引号号括括起起来来的的ASCII码码字字符符串串 (一一个
8、个 ASCII字字符符相相当当于于一个字节一个字节)。12/20/2022第5章 汇编语言程序设计简介 例:例:ORG 1000H BUF1:DB 38H,7FH,80H BUF2:DB 45H,66H ORG伪伪指指令令指指定定了了标标号号BUF1的的地地址址为为1000H,而而DB伪伪指指令令是是将将其其后后的的二二进进制制数数表表38H,7FH,80H依依次次存存放放在在1000H,1001H,1002H 3 个个连连续续单单元元之之中中,BUF2也也是是一一个个标标号号,其其地地址址与与前前一一条条伪伪指指令令连连续续,即即1003H,1004H地址单元中依次存放地址单元中依次存放 4
9、5H,66H。12/20/2022第5章 汇编语言程序设计简介 (4 4)定义字指令)定义字指令DWDW 指令格式指令格式:标号标号:DW 16 位数据表位数据表 该该指指令令的的功功能能与与DB相相似似,区区别别仅仅在在于于从从指指定定地地址址开开始始存存放放的的是是指指令令中中的的 16 位位数数据据,而而不不是是字字节节串串。每每个个 16 位位数数据据要要占占两两个个存存储储单单元元,高高8 位位先先存存,低低 8 位位后后存存,这和这和MCS-51指令中的指令中的16位数据存放顺序是一致的。位数据存放顺序是一致的。12/20/2022第5章 汇编语言程序设计简介 DW 定义字命令定义
10、字命令 ORG 1500HTABLE:DW 7234H,8AH,10H 经汇编后(经汇编后(1500H)=72H,(1501H)=34H,(1502H)=00H,(1503H)=8AH,(1504H)=00H,(1505H)=10H,12/20/2022第5章 汇编语言程序设计简介 DS 定义存储空间命令定义存储空间命令q格式:格式:DS 表达式表达式q功能:在汇编时,从指定地址开始保留功能:在汇编时,从指定地址开始保留DS之后表达式之后表达式的值所规定的存储单元以备后用。的值所规定的存储单元以备后用。q例如:例如:ORG 1000H DS 08H DB 30H,8AH汇编后,从汇编后,从10
11、00H保留保留8个单元,然后从个单元,然后从1008H按按DB命令命令给内存赋值,给内存赋值,即(即(1008H)=30H (1009H)=8AH12/20/2022第5章 汇编语言程序设计简介 BIT 位地址符号命令位地址符号命令格式:字符名格式:字符名 BIT 位地址位地址功能:把功能:把BIT后的位地址值赋给字符名。其中字符名不后的位地址值赋给字符名。其中字符名不是标号,其后没有冒号,但字符名是必须的。是标号,其后没有冒号,但字符名是必须的。例如:例如:A1 BIT P1.0 A2 BIT 02H汇编后,汇编后,P1口第口第0位的位地址位的位地址90H就赋给了就赋给了A1,而而A2的值则
12、为的值则为02H。12/20/2022第5章 汇编语言程序设计简介 例:分析下段程序,试求例:分析下段程序,试求2008H200FH单元的内容单元的内容ORG 2000HDS 08HDB 30H,8AH,10,BDW 54H,1F80H(2008H)=30H(2009H)=8AH(200AH)=0AH(200BH)=42H(200CH)=00H(200DH)=54H(200EH)=1FH(200FH)=80H12/20/2022第5章 汇编语言程序设计简介 (5 5)汇编结束指令)汇编结束指令ENDEND 指令格式指令格式:标号标号:END 地址或标号地址或标号 格格式式中中标标号号以以及及E
13、ND后后面面的的地地址址或或标标号号可可有有可可无无。功功能能:提提供供汇汇编编结结束束标标志志。汇汇编编程程序序遇遇到到 END后后就就停停止止汇汇编编,对对 END以以后后的的语语句句不不予予处处理理,故故 END应应放放在程序的结束处。在程序的结束处。12/20/2022第5章 汇编语言程序设计简介 5.2 5.2 汇编语言基本结构汇编语言基本结构第第5 5章章 汇编语言程序设计简介汇编语言程序设计简介 12/20/2022第5章 汇编语言程序设计简介 5.2.1 5.2.1 顺序程序设计顺序程序设计 例例 1 两个无符号双字节数相加。两个无符号双字节数相加。设设被被加加数数存存放放于于
14、内内部部RAM的的40H(高高位位字字节节),41H(低低位位字字节节),加加数数存存放放于于50H(高高位位字字节节),51H(低位字节)低位字节),和数存入和数存入 40H和和41H单元中。单元中。12/20/2022第5章 汇编语言程序设计简介 程序如下程序如下:START:CLR C ;将将Cy清零清零 MOV R0,41H ;将被加数地址送数据指针将被加数地址送数据指针R0 MOV R1,51H ;将加数地址送数据指针将加数地址送数据指针R1 AD1:MOV A,R0 ;被加数低字节的内容送入被加数低字节的内容送入AADD A,R1 ;两个低字节相加两个低字节相加MOV R0,A ;
15、低字节的和存入被加数低字节中低字节的和存入被加数低字节中 DEC R0 ;指向被加数高位字节指向被加数高位字节 DEC R1 ;指向加数高位字节指向加数高位字节 MOV A,R0 ;被加数高位字节送入被加数高位字节送入AADDC A,R1 ;两个高位字节带两个高位字节带Cy相加相加 MOV R0,A ;高位字节的和送被加数高位字节高位字节的和送被加数高位字节 RET 12/20/2022第5章 汇编语言程序设计简介 例例2 三字节无符号数相加,被加数在内部三字节无符号数相加,被加数在内部RAM的的50H,51H,52H单元中,加数在内部单元中,加数在内部RAM的的53H,54H,55H单元中,
16、和存放在单元中,和存放在50H,51H 和和52H单元中,进位存放在位寻址区的单元中,进位存放在位寻址区的00H位中。位中。MOV R0,#52HMOV R1,#55HMOV A,R0ADD A,R1MOV R0,ADEC R0DEC R1MOV A,R0ADDC A,R1MOV R0,ADEC R0DEC R1MOV A,R0ADDC A,R1MOV R0,ACLR AADDC A,#00HMOV R0,#00HMOV R0,A12/20/2022第5章 汇编语言程序设计简介 例例 3 将两个半字节数合并成一个一字节数。将两个半字节数合并成一个一字节数。设内部设内部RAM 40H#,41H单
17、元中分别存放着单元中分别存放着 8 位二进制数位二进制数,要求取出两个单元中的低半字节要求取出两个单元中的低半字节,并并成一个字节后成一个字节后,存入存入 50H单元中。单元中。程序如下程序如下:START:MOV R1,40H ;设置设置R1为数据指针为数据指针 MOV A,R1 ;取出第一个单元中的内容取出第一个单元中的内容 ANL A,0FH ;取第一个数的低半字节取第一个数的低半字节 SWAP A ;移至高半字节移至高半字节 INC R1 ;修改数据指针修改数据指针 XCH A,R1 ;取第二个单元中的内容取第二个单元中的内容 ANL A,0FH ;取第二个数的低半字节取第二个数的低半
18、字节 ORL A,R1 ;拼字拼字 MOV 50H,A ;存放结果存放结果 RET 12/20/2022第5章 汇编语言程序设计简介 5.2.2 5.2.2 分支程序设计分支程序设计 (a)单分支流程单分支流程;(b)多分支流程多分支流程 12/20/2022第5章 汇编语言程序设计简介 例例 3 x,y均为均为8位二进制数位二进制数,设设 x存入存入R0,y存入存入R1,求解求解:MOV A,R0 JZ loop1 ;(A)=0时转移时转移 JB ACC.7,loop2 ;ACC.7=1转移转移 MOV R1,#1 loop1 :MOV R1,#0 SJMP ENDFloop2:MOV R1
19、,#0FFHENDF:RET 12/20/2022第5章 汇编语言程序设计简介 例例 4 比比较较两两个个无无符符号号数数的的大大小小。设设外外部部 RAM 的的存存储储单单元元 ST1和和ST2中中存存放放两两个个不不带带符符号号的的二二进进制制数数,找找出出其其中中的的大大数数存存入入外外部部 RAM 中中的的 ST3单单元中。元中。12/20/2022第5章 汇编语言程序设计简介 程序如下:程序如下:ORG 1000H ST1 EQU 2000H ST2 EQU 2100H ST3 EQU 2200H START:CLR C ;清零清零Cy MOV DPTR,ST1 ;第一个数的指针第一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 80 C51 单片机 汇编语言 程序设计
限制150内