第4章MCS51汇编语言程序设计.ppt
《第4章MCS51汇编语言程序设计.ppt》由会员分享,可在线阅读,更多相关《第4章MCS51汇编语言程序设计.ppt(102页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第 4 章 汇编语言程序设计简介 第4章MCS51汇编语言程序设计 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望第 4 章 汇编语言程序设计简介 4.1 汇编语言概述4.1.1 程序设计语言的分类及特点程序设计语言的分类及特点 能能够够完完成成一一定定功功能能的的指指令令序序列列称称为为程程序序,用用来来设设计计计计算算机机程程序序的的语语言言称称为为程程序序设设计计语语言言,按按照照语语言言的的结结构构及及功功能能程程序设计语言可分为:序设计语言可分为:机器语
2、言机器语言、汇编语言汇编语言和和高级语言高级语言。第 4 章 汇编语言程序设计简介 1机器语言机器语言 是是计计算算机机所所能能识识别别的的唯唯一一语语言言,由由二二进进制制代代码码0和和1构构成成指令和数据。指令和数据。其其具具有有效效率率高高、响响应应速速度度快快的的特特点点,但但由由于于机机器器语语言言编编写写的的程程序序依依赖赖于于计计算算机机的的结结构构,可可移移植植性性差差,繁繁琐琐且且难难于于记记忆、识别和调试,通常编程时,不采用机器语言。忆、识别和调试,通常编程时,不采用机器语言。第 4 章 汇编语言程序设计简介 2汇编语言汇编语言 是一种是一种符号语言符号语言,指令由,指令由
3、助记符表示助记符表示。与与机机器器语语言言相相比比,汇汇编编语语言言具具有有指指令令容容易易记记忆忆、理理解解、识识别别和和可可读读性性好好的的优优点点,但但实实质质上上由由于于汇汇编编语语言言也也是是面面向向机机器器的的语语言言,是是机机器器语语言言程程序序的的符符号号表表示示,所所以以用用户户必必须须熟熟悉悉机机器器的的硬硬件件结结构构和和指指令令系系统统,掌掌握握计计算算机机的的工工作作过过程程才才能能熟熟练编程。练编程。另另外外,汇汇编编语语言言所所编编写写的的源源程程序序与与经经过过汇汇编编所所产产生生的的机机器器代代码码程程序序之之间间有有明明显显的的一一一一对对应应关关系系,所所
4、以以汇汇编编语语言言编编写写的程序同样也存在通用性差,程序不能移植的缺点。的程序同样也存在通用性差,程序不能移植的缺点。第 4 章 汇编语言程序设计简介 3高级语言高级语言 高高级级语语言言是是接接近近于于人人的的自自然然语语言言形形式式的的计计算算机机编编程程语语言言的总称,例如的总称,例如C语言、语言、BASIC语言等都是高级语言。语言等都是高级语言。和和汇汇编编语语言言相相比比,高高级级语语言言指指令令简简单单易易学学,用用户户容容易易掌掌握握,且且高高级级语语言言程程序序不不依依赖赖于于具具体体的的硬硬件件结结构构和和指指令令系系统统,程程序序可可移移植植性性好好,但但是是高高级级语语
5、言言编编写写的的源源程程序序必必须须经经过过编编译译或或解解释释程程序序翻翻译译成成目目标标程程序序,机机器器才才能能执执行行,而而生生成成的的目目标标程程序序需需占占用用较较多多的的存存储储单单元元,执执行行时时间间较较长长,运运行行效效率较低率较低。第 4 章 汇编语言程序设计简介 4.1.2 单片机汇编语言源程序的编辑和汇编单片机汇编语言源程序的编辑和汇编汇编语言的指令类型汇编语言的指令类型 汇汇编编语语言言源源程程序序由由两两种种类类型型的的汇汇编编语语言言语语句句(即即指指令令)构构成成。语语句句按按性性质质不不同同分分为为两两类类:指指令令性性语语句句(机机器器指指令令)和和指示性
6、语句(伪指令)指示性语句(伪指令)。(1)机器指令)机器指令 指指令令系系统统中中的的全全部部指指令令,每每条条指指令令都都有有对对应应的的机机器器代代码码,是机器真正能够执行的指令。是机器真正能够执行的指令。(2)伪指令伪指令 为为汇汇编编程程序序在在汇汇编编过过程程中中提提供供控控制制或或指指示示信信息息,并并不不直直接接产生机器代码,属于机器不能执行的指令类型。产生机器代码,属于机器不能执行的指令类型。第 4 章 汇编语言程序设计简介 汇编汇编 计计算算机机不不能能直直接接识识别别和和执执行行源源程程序序。因因此此源源程程序序必必须须经经过过汇汇编编程程序序汇汇编编产产生生机机器器码码目
7、目标标程程序序文文件件,程程序序才才能能执执行行。这种将汇编语言源程序转换成机器语言程序的过程称为这种将汇编语言源程序转换成机器语言程序的过程称为汇编汇编。汇编语言汇编语言源程序源程序汇编程序汇编程序目标文件和源程序列表目标文件和源程序列表经过经过汇编后汇编后第 4 章 汇编语言程序设计简介 汇编语言源程序的汇编过程分为汇编语言源程序的汇编过程分为手工汇编手工汇编和和机器汇编机器汇编。所所谓谓手手工工汇汇编编,即即采采用用人人工工查查指指令令表表的的方方法法将将汇汇编编指指令令翻翻译成相应机器代码。译成相应机器代码。通通常常源源程程序序的的人人工工汇汇编编需需要要两两次次才才能能完完成成,第第
8、一一次次汇汇编编查查找每条指令的机器代码,第二次汇编完成地址偏移量的计算。找每条指令的机器代码,第二次汇编完成地址偏移量的计算。由由于于手手工工汇汇编编需需要要计计算算和和查查找找,繁繁琐琐而而且且容容易易出出错错,而而且且程程序序修修改改时时可可能能会会引引起起指指令令的的地地址址变变化化,转转移移指指令令的的偏偏移移量量也也随随之之改改变变,需需要要重重新新计计算算,所所以以手手工工汇汇编编主主要要应应用用于于设设计计短短小小程序或调试程序的场合。程序或调试程序的场合。第 4 章 汇编语言程序设计简介 所所谓谓机机器器汇汇编编,即即采采用用汇汇编编程程序序对对源源程程序序进进行行自自动动汇
9、汇编编,由由于于单单片片机机软软硬硬件件资资源源的的限限制制,该该过过程程通通常常借借助助于于PC系系统统机机实实现现,象象这这种种借借助助于于一一种种计计算算机机而而为为另另一一种种计计算算机机产产生生目目标标代代码的汇编方式又称为码的汇编方式又称为交叉汇编交叉汇编。交交交交叉叉叉叉汇汇汇汇编编编编的的原原理理类类似似于于手手工工汇汇编编,在在汇汇编编程程序序中中通通常常存存入入了了两两张张表表,即即MCS-51单单片片机机的的指指令令代代码码表表和和伪伪指指令令表表。汇汇编编程程序序通通常常通通过过两两次次扫扫描描完完成成汇汇编编,第第一一次次扫扫描描查查找找源源程程序序中中每每条条指指令
10、令的的机机器器代代码码,第第二二次次扫扫描描完完成成地地址址偏偏移移量量的的计计算算,汇汇编后生成目标文件和列表文件。这是目前应用较广的汇编方法。编后生成目标文件和列表文件。这是目前应用较广的汇编方法。第 4 章 汇编语言程序设计简介 汇编的主要功能为:汇编的主要功能为:(1)确定程序中每条汇编语言指令的指令机器码。)确定程序中每条汇编语言指令的指令机器码。(2)确定每条指令在程序存储器中的存放地址。)确定每条指令在程序存储器中的存放地址。(3)提提供供语语法法、编编辑辑等等方方面面的的错错误误信信息息,但但不不能能提提供供程程序序的的逻辑错误。逻辑错误。(4)产生目标执行文件()产生目标执行
11、文件(*.OBJ/*.HEX)和列表文件(和列表文件(*.LST)。)。第 4 章 汇编语言程序设计简介 4.1.3 伪伪 指指 令令 一、一、汇编起始指令汇编起始指令 ORG 指令格式为指令格式为:ORG 16位地址位地址 该该指指令令的的作作用用是是指指明明后后面面的的程程序序或或数数据据块块的的起起始始地地址址,它总是出现在每段源程序或数据块的开始。它总是出现在每段源程序或数据块的开始。16 位位地地址址,确确定定了了此此语语句句后后面面第第一一条条指指令令或或第第一一个个数数据据的的地地址址,此此后后的的源源程程序序或或数数据据块块就就依依次次连连续续存存放放在在以以后后的的地地址内址
12、内,直到遇到另一个直到遇到另一个ORG指指令为止。令为止。第 4 章 汇编语言程序设计简介 例例:ORG 2000H MOV SP,60H MOV R0,2FH MOV R2,0FFH ORG伪伪指指令令说说明明其其后后面面程程序序的的目目标标代代码码在在存存储储器器中中存存放放的的起始地址是起始地址是2000H,即即 存储器地址存储器地址 目标程序目标程序 2000H 75 81 60 2003H 78 2F 2005H 7A FF 第 4 章 汇编语言程序设计简介 二、等值指令二、等值指令EQU 指令格式指令格式:字符名称字符名称 EQU 数字或汇编符号数字或汇编符号 功能功能:使指令中的
13、字符名称等价于给定的数字或汇编符号。使指令中的字符名称等价于给定的数字或汇编符号。使使用用等等值值指指令令可可给给程程序序的的编编制制、调调试试、修修改改带带来来方方便便:如如果果在在程程序序中中要要多多次次使使用用到到某某一一地地址址,由由EQU指指令令将将其其赋赋值值给给一一个个字字符符名名称称,一一旦旦需需要要对对其其进进行行变变动动,只只要要改改变变EQU命命令令后后面面的的数数字字即即可可,而而不不需需要要对对程程序序中中涉涉及及到到该该地地址址的的所所有有指令逐句进行修改。指令逐句进行修改。第 4 章 汇编语言程序设计简介 注注意意,由由EQU等等值值的的字字符符名名称称必必须须先
14、先赋赋值值后后使使用用,且且在同一个源程序中,同一个标号只能赋值一次。在同一个源程序中,同一个标号只能赋值一次。例例:PA8155 EQU 8001H即给标号即给标号PA8155赋值为赋值为8001H。第 4 章 汇编语言程序设计简介 三、三、定义字节指令定义字节指令DB 指令格式指令格式:标号标号:DB 8位二进制数表位二进制数表 功功能能:把把 8 位位二二进进制制数数表表依依次次存存入入从从标标号号开开始始的的连连续续的的存存储单元中。储单元中。格格式式中中,标标号号区区段段可可有有可可无无,DB指指令令之之后后的的 8 位位二二进进制制数数表表是是字字节节常常数数或或用用逗逗号号隔隔开
15、开的的字字节节串串,也也可可以以是是用用引引号号括括起起来的来的ASCII码字符串码字符串 (一个一个 ASCII字符相当于一个字节字符相当于一个字节)。例例:第 4 章 汇编语言程序设计简介 ORG 1000HBUF1:DB 38H,7FH,80HBUF2:DB 45H,66H ORG伪伪指指令令指指定定了了标标号号BUF1的的地地址址为为1000H,而而DB伪伪指指令令是是将将其其后后的的二二进进制制数数表表38H,7FH,80H依依次次存存放放在在1000H,1001H,1002H 3 个个连连续续单单元元之之中中,BUF2也也是是一一个个标标号号,其其地地址址与与前前一一条条伪伪指指令
16、令连连续续,即即1003H,1004H地地址址单单元元中依次存放中依次存放 45H,66H。第 4 章 汇编语言程序设计简介 四、四、定义字指令定义字指令DW 指令格式指令格式:标号标号:DW 16 位数据表位数据表 该该指指令令的的功功能能与与DB相相似似,区区别别仅仅在在于于从从指指定定地地址址开开始始存存放放的的是是指指令令中中的的 16 位位数数据据,而而不不是是字字节节串串。每每个个 16 位位数数据据要要占占两两个个存存储储单单元元,高高8 位位先先存存,低低 8 位位后后存存,这这和和MCS-51指令中的指令中的16位数据存放顺序是一致的。位数据存放顺序是一致的。第 4 章 汇编
17、语言程序设计简介 五、五、DS(Define Store)定义存储区指令定义存储区指令功功能能为为:从从指指定定的的单单元元地地址址开开始始,保保留留一一定定数数量量的的存存储储单单元元,以备使用。以备使用。指令格式:指令格式:标号:标号:DS 表达式表达式其中,表达式指定保留的内存单元个数。其中,表达式指定保留的内存单元个数。例如,例如,ORG 1000H DS 10TAB:DB 10H 汇汇编编结结果果:从从1000H地地址址处处开开始始,保保留留10个个字字节节单单元元。(100AH)=10H。第 4 章 汇编语言程序设计简介 六、六、BIT位地址符号指令位地址符号指令指指令令功功能能为
18、为:将将位位地地址址赋赋值值给给指指定定的的符符号号名名称称,通通常常用用于于位位符符号地址的定义。号地址的定义。指令如下:指令如下:字符名称字符名称BIT 位地址位地址例如,例如,X1 BIT P1.0 汇汇编编结结果果为为将将位位地地址址P1.0赋赋给给变变量量X1,即即在在程程序序中中便便可可使用使用X1代替位地址代替位地址P1.0。第 4 章 汇编语言程序设计简介 七、七、DATA数据地址赋值指令数据地址赋值指令 指指令令功功能能:将将数数据据地地址址或或指指令令代代码码地地址址赋赋值值给给所所指指定定的标号。通常在程序中用于定义数据地址。指令格式如下:的标号。通常在程序中用于定义数据
19、地址。指令格式如下:标号:标号:DATA 表达式表达式例如,例如,AA:DATA 2000H汇编结果为:汇编结果为:AA=2000H。第 4 章 汇编语言程序设计简介【注意】:【注意】:DATA与与EQU的区别在于的区别在于:(1)EQU定定义义的的标标识识符符在在汇汇编编时时不不在在符符号号表表中中登登记记,因因此此必须先定义后使用;必须先定义后使用;(2)DATA定定义义的的标标识识符符汇汇编编时时在在符符号号表表中中登登记记,所所以以可可以先使用后定义。以先使用后定义。第 4 章 汇编语言程序设计简介 八、八、汇编结束指令汇编结束指令END 指令格式指令格式:标号标号:END 地址或标号
20、地址或标号 格式中标号以及格式中标号以及END后面的地址或标号可有可无。后面的地址或标号可有可无。功能功能:提供汇编结束标志。提供汇编结束标志。汇汇编编程程序序遇遇到到 END后后就就停停止止汇汇编编,对对 END以以后后的的语语句句不予处理不予处理,故故 END应放在程序的结束处。应放在程序的结束处。第 4 章 汇编语言程序设计简介 4.2 汇编语言程序设计汇编语言程序设计 4.2.0 程序设计步骤程序设计步骤4.2.1 顺序结构顺序结构4.2.2 分支结构分支结构4.2.3 循环结构循环结构4.2.4 子程序调用子程序调用第 4 章 汇编语言程序设计简介 4.2.0 程序设计程序设计 步骤
21、步骤 对对于于简简单单程程序序的的编编写写,程程序序设设计计者者往往往往能能够够立立即即完完成成软软件件的的构构思思与与编编写写,而而对对于于比比较较复复杂杂的的程程序序设设计计问问题题,则则需需要要科科学学合合理理的的程程序序设设计计步步骤骤。从从软软件件工工程程角角度度来来说说,开开发发一一个个应用程序,一般需要经过以下几个步骤:应用程序,一般需要经过以下几个步骤:第 4 章 汇编语言程序设计简介 第 4 章 汇编语言程序设计简介 4.2.1 顺序程序设计顺序程序设计 顺序程序是程序设计中最基本的结构,又称为简单程顺序程序是程序设计中最基本的结构,又称为简单程序。特点为顺序执行每一条指令,
22、直到最后。其执行过程序。特点为顺序执行每一条指令,直到最后。其执行过程如图如图4-3所示。所示。S1S2图4-3 顺序结构第 4 章 汇编语言程序设计简介 【例【例 1】两个无符号双字节数相加。两个无符号双字节数相加。设设被被加加数数存存放放于于内内部部RAM的的40H(高高位位字字节节),41H(低低位位字字节节),加加数数存存放放于于50H(高高位位字字节节),51H(低低位位字字节节),和数存入和数存入 40H和和41H单元中。单元中。第 4 章 汇编语言程序设计简介 程序如下程序如下:START:CLR C ;将将Cy清零清零 MOV R0,41H ;将被加数地址送数据指针将被加数地址
23、送数据指针R0 MOV R1,51H ;将加数地址送数据指针将加数地址送数据指针R1 AD1:MOV A,R0 ;被加数低字节的内容送入被加数低字节的内容送入AADD A,R1 ;两个低字节相加两个低字节相加MOV R0,A ;低字节的和存入被加数低字节中低字节的和存入被加数低字节中 DEC R0 ;指向被加数高位字节指向被加数高位字节 DEC R1 ;指向加数高位字节指向加数高位字节 MOV A,R0 ;被加数高位字节送入被加数高位字节送入AADDC A,R1 ;两个高位字节带两个高位字节带Cy相加相加 MOV R0,A ;高位字节的和送被加数高位字节高位字节的和送被加数高位字节 RET 第
24、 4 章 汇编语言程序设计简介 4.2.2 分支程序设计分支程序设计1.分支程序结构分支程序结构2.一般分支程序设计一般分支程序设计3.分支表法实现多向分支程序的设计分支表法实现多向分支程序的设计第 4 章 汇编语言程序设计简介 条条件件S1S2YN条件条件S1条件条件NS2S1Sn(a)单分支)单分支 (b)双分支)双分支 (c)多分支)多分支1.分支程序结构分支程序结构第 4 章 汇编语言程序设计简介【例【例5】x,y均为均为8位二进制数位二进制数,设设 x存入存入R0,y存入存入R1,求解求解:2.一般分支程序结构实例一般分支程序结构实例第 4 章 汇编语言程序设计简介 程序如下程序如下
25、:START:CJNE R0,00H,SUL1;R0中的数与中的数与00比较不等转移比较不等转移MOV R1,00H;相等相等,R1 0 SJMP SUL2 SUL1:JC NEG ;两数不等两数不等,若若(R0)0,则则 R101H SJMP SUL2 NEG:MOV R1,0FFH;(R0)0,则则 R10FFH SUL2:RET 第 4 章 汇编语言程序设计简介【例例 6】比比较较两两个个无无符符号号数数的的大大小小。设设外外部部 RAM 的的存存储储单单元元ST1和和 ST2中中存存放放两两个个不不带带符符号号的的二二进进制制数数,找找出出其其中中的的大大数数存存入入外外部部 RAM
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MCS51 汇编语言 程序设计
限制150内