汇编语言程序设计X.ppt
《汇编语言程序设计X.ppt》由会员分享,可在线阅读,更多相关《汇编语言程序设计X.ppt(47页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、第三章第三章 MCS-51MCS-51单片机单片机汇编语言程序设计汇编语言程序设计内容提要:3-2汇编语言及汇编过程汇编语言及汇编过程3-1汇编语言程序设计概述汇编语言程序设计概述3-3汇编语言程序的基本结构及应用举例汇编语言程序的基本结构及应用举例3-4编程综合举例编程综合举例高级语言高级语言:3 3-1 -1 汇编语言程序设计概述汇编语言程序设计概述 一、汇编语言的特点及其语句格式一、汇编语言的特点及其语句格式汇编语言汇编语言:机器语言机器语言:程序设计语言:程序设计语言:用二进制代码表示指令和数据。用二进制代码表示指令和数据。用助记符表示指令操作功能,用标号表示操作对象。用助记符表示指令
2、操作功能,用标号表示操作对象。独立于机器独立于机器,面向过程面向过程,接近自然语言和数学表达式接近自然语言和数学表达式.助记符指令和机器指令一一对应,效率高、占用存储空助记符指令和机器指令一一对应,效率高、占用存储空间小、运行速度快,编制的程序是最优化的程序。间小、运行速度快,编制的程序是最优化的程序。使用汇编语言编程比使用高级语言编程困难,要深入了使用汇编语言编程比使用高级语言编程困难,要深入了解硬件。解硬件。汇编语言能直接管理和控制存储器及接口电路等硬件设汇编语言能直接管理和控制存储器及接口电路等硬件设备,也能处理中断。备,也能处理中断。汇编语言无通用性,程序不易移植,各种计算机的汇编汇编
3、语言无通用性,程序不易移植,各种计算机的汇编语言不能通用。语言不能通用。1汇编语言的特点汇编语言的特点标标号号语句地址的标志符号,其它语句访问该语句的地址。语句地址的标志符号,其它语句访问该语句的地址。1-8个个ASC字符组成,第一个字符必须是字母。字符组成,第一个字符必须是字母。不能使用本汇编语言已经定义了的符号作标号不能使用本汇编语言已经定义了的符号作标号(助记符伪指助记符伪指令寄存器名等令寄存器名等)。标号后为冒号标号后为冒号(:)。一个程序中的标号不能重复定义一个程序中的标号不能重复定义。标号不是必须的,其它语句访问该语句时才定义标号。标号不是必须的,其它语句访问该语句时才定义标号。操
4、作码操作码表示了该指令所能执行的操作功能表示了该指令所能执行的操作功能。操作数操作数表示参加操作的数的本身或操作数所在的地址。表示参加操作的数的本身或操作数所在的地址。标号:标号:操作码助记符操作码助记符 第一操作数第一操作数,第二操作数,第二操作数;注释;注释2汇编语言的语句格式汇编语言的语句格式MCS-51指令格式:指令格式:在程序中需对数据的存放、寄存器和工作单元的使用作出具在程序中需对数据的存放、寄存器和工作单元的使用作出具体安排。体安排。要对单片机的硬件结构有详细的了解。要对单片机的硬件结构有详细的了解。程序设计的技巧性。程序设计的技巧性。二、汇编语言程序设计的特点二、汇编语言程序设
5、计的特点3 3-2 -2 汇编语言及汇编过程汇编语言及汇编过程一、汇编程序功能一、汇编程序功能 源程序源程序 (汇编指令程序)(汇编指令程序)汇编汇编 目标程序目标程序(机器码指令程序)(机器码指令程序)汇编指令与机器码指令有一一对应的关系。汇编指令与机器码指令有一一对应的关系。汇编程序是一种翻译程序,将源程序翻译成目标程序。汇编程序是一种翻译程序,将源程序翻译成目标程序。二、汇编程序的汇编过程二、汇编程序的汇编过程 汇编有两种方法:手工汇编、机器汇编。汇编有两种方法:手工汇编、机器汇编。1 1、手工汇编:、手工汇编:第一次汇编:确定地址,翻译成各条机器码,字符标号第一次汇编:确定地址,翻译成
6、各条机器码,字符标号原样写出;原样写出;第二次汇编:标号代真,将字符标号用所计算出的具体第二次汇编:标号代真,将字符标号用所计算出的具体地址值或偏移量代换。地址值或偏移量代换。源程序源程序目标程序目标程序地址地址 ORG 1000HORG 1000H START START:MOV R0MOV R0,2FH 2FH MOV R2 MOV R2,#00H#00H MOV A MOV A,R0 R0 MOV R3 MOV R3,A A INC R3 INC R3 SJMP SJMP NEXT NEXT LOOP LOOP:INC R0 INC R0 CJNE R0 CJNE R0,#44H#44H
7、,NEXTNEXT INC R2 INC R2 NEXT NEXT:DJNZ R3DJNZ R3,LOOPLOOP MOV MOV 2AH2AH,R2 R2 SJMP$SJMP$END END第一次汇编第一次汇编第二次汇编第二次汇编1000A82F10027A001004E61005FB10060B100780NEXT100908100AB644NEXT100D0A100EDBLOOP10108A2A101280FEA82F7A00E6FB0B800508B644010ADBF98A2A80FE2 2、机器汇编、机器汇编借助微机或开发器进行单片机的程序借助微机或开发器进行单片机的程序设计,编辑
8、一个扩展名为设计,编辑一个扩展名为“.ASMASM的的ASCASC码文件码文件,然后用汇编程序进行汇编。然后用汇编程序进行汇编。单片机指令单片机指令伪指令伪指令宏指令宏指令源源程程序序编辑程序编辑程序交叉汇编程序交叉汇编程序列表文件列表文件目标文件目标文件单片机调试运行单片机调试运行编辑包含一段独立代码包含一段独立代码原程序和机器码原程序和机器码16进进制制代代码码机器汇编是一个两次扫描过程。机器汇编是一个两次扫描过程。第一次扫描:第一次扫描:检查语法错误,确定符号名字;检查语法错误,确定符号名字;建立使用的全部符号名字表;建立使用的全部符号名字表;每一符号名字后跟一对应值(地址或数)。每一符
9、号名字后跟一对应值(地址或数)。第二次扫描:第二次扫描:是在第一次扫描基础上,将符号地址转换成是在第一次扫描基础上,将符号地址转换成 地址(代真);利用操作码表将助记符转换地址(代真);利用操作码表将助记符转换 成相应的目标码。成相应的目标码。三、伪指令三、伪指令 伪指令是告诉汇编程序,如何汇编源程序的指令。伪指令是告诉汇编程序,如何汇编源程序的指令。伪指令既不控制机器的操作,也不能被汇编成机器代码,伪指令既不控制机器的操作,也不能被汇编成机器代码,故称为伪指令。故称为伪指令。1 1、起始地址伪指令、起始地址伪指令 ORGORG(ORiGin)ORG addr16ORG addr16 用于规定
10、目标程序段或数据块的起始地址,用于规定目标程序段或数据块的起始地址,设置在程序开始处。设置在程序开始处。2 2、汇编结束伪指令、汇编结束伪指令 ENDEND(END of assemblyEND of assembly)告诉汇编程序,对源程序的汇编到此结束。告诉汇编程序,对源程序的汇编到此结束。一个程序中只出现一次,在末尾。一个程序中只出现一次,在末尾。3 3、赋值伪指令、赋值伪指令 EQUEQU(EQUateEQUate)告诉汇编程序,将汇编语句操作数的值赋予本语句的标号。告诉汇编程序,将汇编语句操作数的值赋予本语句的标号。格式:格式:标号名称标号名称 EQU EQU 数值或汇编符号数值或汇
11、编符号 “标号名称标号名称”在源程序中可以作数值使用,也可以作数据地址、在源程序中可以作数值使用,也可以作数据地址、位地址使用。位地址使用。先定义后使用,放在程序开头。先定义后使用,放在程序开头。4 4、定义字节伪指令、定义字节伪指令 DBDB(Define ByteDefine Byte)告诉汇编程序从指定的地址单元开始,定义若干字节存储单告诉汇编程序从指定的地址单元开始,定义若干字节存储单 元并赋初值。(定义数据)元并赋初值。(定义数据)格式:格式:标号:标号:DB DB 字节数据或字节数据表或引号起来字节数据或字节数据表或引号起来5 5、定义字伪指令、定义字伪指令 DWDW(Define
12、 WordDefine Word)的字符串(的字符串(ASCASC)从指定地址开始,定义若干个从指定地址开始,定义若干个1616个位数据,高八位存入低地址;个位数据,高八位存入低地址;低八位存入高地址。(定义地址)低八位存入高地址。(定义地址)例、例、ORG 1000HORG 1000H PIOI PIOI:DW 7654HDW 7654H,40H40H、1212、ABAB6 6、数据地址赋值伪指令、数据地址赋值伪指令 DATADATA 将表达式指定的数据地址赋予规定的字符名称将表达式指定的数据地址赋予规定的字符名称 格式:格式:字符名称字符名称 DATA DATA 表达式表达式注:该指令与注
13、:该指令与EQUEQU指令相似,只是,可先使用后定义,指令相似,只是,可先使用后定义,放于程序开头、结尾均可。放于程序开头、结尾均可。7 7、定义空间伪指令、定义空间伪指令 DSDS 从指定地址开始,保留由表达式指定的若干字节空间作从指定地址开始,保留由表达式指定的若干字节空间作 为备用空间。为备用空间。格式:格式:标号:标号:DS DS 表达式表达式例例2 2、ORG 1000HORG 1000H DS 0AH DS 0AH DB 71H DB 71H,11H11H,11H 11H ;从从100100BHBH开始存放开始存放 ;7171H11HH11H、11H11H。注:注:DBDB、DWD
14、W、DS DS 只能用于程序存储器;只能用于程序存储器;而不能用于数据存储器。而不能用于数据存储器。8 8、位地址赋值伪指令、位地址赋值伪指令 BITBIT将位地址赋予规定的字符名称。将位地址赋予规定的字符名称。格式:格式:字符名称字符名称 BIT BIT 位地址位地址例例3 3、X1 BIT P1.2X1 BIT P1.2 相当于相当于 X1 EQU 92HX1 EQU 92H3 3-3 -3 汇编语言程序的基本结构汇编语言程序的基本结构及应用举例及应用举例程序编写做到:程序编写做到:占用存储空间少;占用存储空间少;运行时间短;运行时间短;程序的编制、调试及排错所需时间短;结构清晰,易读、易
15、于移植。程序的编制、调试及排错所需时间短;结构清晰,易读、易于移植。按结构化程序设计思想,任何复杂程序都可由按结构化程序设计思想,任何复杂程序都可由顺序结构、顺序结构、分支结构、分支结构、循环结构循环结构 子程序结构子程序结构语句 3语句 2顺序结构顺序结构入口入口语句 1出口出口分支结构分支结构入口入口条件满足否?分支 1出口出口YN 分支 2循环结构循环结构入口入口 处理 修改条件条件满足否?Y出口出口N一、顺序程序举例一、顺序程序举例例例1 1、设在片内、设在片内RAMRAM的的6060H H单元存有单元存有1 1个字节代码,要求将其分解成两个字节代码,要求将其分解成两个个4 4位字段,
16、高位字段,高4 4位存入原单元的低位存入原单元的低4 4位,其低位,其低4 4位存入位存入6161H H单元的低单元的低4 4位,且要求这两个单元的高位,且要求这两个单元的高4 4位均为位均为0 0,试编制完整程序。,试编制完整程序。分析:#¥61H60H解:核心指令解:核心指令 ANLANL ORL 1000H ORL 1000H MODE MODE:MOV R0MOV R0,#60H#60H MOV A MOV A,R0R0 MOV B MOV B,A A ANL A ANL A,#0F0H#0F0H SWAP A SWAP A MOV R0 MOV R0,A A ANL B ANL B,
17、#0FH#0FH MOV A MOV A,B B INC R0 INC R0 MOV R0 MOV R0,A A END END二、分支结构与分支程序设计二、分支结构与分支程序设计1 1 单分支程序单分支程序结构:根据不同的条件,进行相应的处理。结构:根据不同的条件,进行相应的处理。通常用条件转移指令形成简单分支结构。通常用条件转移指令形成简单分支结构。如:如:判(判(A A)=Z =Z 或或 NZ NZ,转移转移(JZ,JNZ)JZ,JNZ)判(判(CYCY)=1=1 或或 0 0 ,转移,转移(JC,JNC)JC,JNC)判(判(bitbit)=1=1 或或 0 0 ,转移,转移(JB,J
18、NB,JBC)JB,JNB,JBC)CJNE CJNE 比较不相等转移比较不相等转移DJNZ减减1条件转移条件转移单分支程序举例单分支程序举例例例1 1、设在外、设在外RAMRAM的的ST1ST1、ST2ST2和和ST3ST3共三个连续单元,其中共三个连续单元,其中ST1ST1、ST2ST2存放着两个存放着两个8 8位无符号二进制数,要求找出其中大数存入位无符号二进制数,要求找出其中大数存入ST3ST3中。中。START:CLRC;进位位清进位位清”0“MOVDPTR,#ST1;设置数据指针设置数据指针MOVXA,DPTR;取第一个数取第一个数MOVR2,A;第一个数存第一个数存R2INCDP
19、TR;数据指针加数据指针加1MOVXA,DPTR;取第二个数取第二个数SUBBA,R2;两数比较两数比较JNCBIG1;第二个数大转第二个数大转BIG1XCHA,R2BIG0:INCDPTRMOVXDPTR,A;存大数存大数RETBIG1:MOVXA,DPTRSJMPBIG0例例2 2、设、设a a存放在累加器存放在累加器A A中,中,b b存放在寄存器存放在寄存器B B中,要求按下式中,要求按下式 计算计算Y Y值,并将结果值,并将结果Y Y存于累加器存于累加器A A中,试编写程序。中,试编写程序。a-b a-b (a0a0)Y=Y=a+b a+b (a 0a 0)解:本题关键是判解:本题关
20、键是判a a是正数,还是负数;由是正数,还是负数;由ACC.7ACC.7便知。便知。ORG 1000HORG 1000H BR BR:JB ACC.7 JB ACC.7,MINUSMINUS CLR C CLR C SUBB A SUBB A,B B SJMP DONE SJMP DONE MINUS MINUS:ADD A ADD A,B B DONE DONE:SJMP SJMP ENDEND2 2 多分支程序多分支程序多分支程序结构多分支程序结构K=?转向转向0分支分支转向转向1分支分支转向转向n-1分支分支转向转向n分支分支K=0K=1K=n-1K=n指令系统中没有多分支转移指令指令系
21、统中没有多分支转移指令,无法使用单条指令完成多分支转移无法使用单条指令完成多分支转移例例3 3、某温度控制系统采集的温、某温度控制系统采集的温度值度值TaTa放在放在A A中中,内内RAM 54HRAM 54H放下放下限值限值T54,55HT54,55H放上限值放上限值T55,T55,若若TaTaT55,T55,程序转向程序转向JW,JW,若若TaTaT54,T54,程序转向程序转向SW,SW,若若T55TaT54T55TaT54程程序转向序转向FH多分支程序举例多分支程序举例(1)使用多条使用多条CJNE指令指令,连续比较连续比较,实现多分支转移实现多分支转移(A)=0?(A)=1?(A)=
22、2?转向转向0分支分支转向转向1分支分支转向转向2分支分支CJNEA,55H,LOOP1;TaT55,转转LOOP1AJMPFH;Ta=T55,返回返回LOOP1:JNCJW;若(若(CY)=0,则则TaTaT55T55,转转JWJW CJNEA,54H,LOOP2;TaT54,转转LOOP2AJMPFH;Ta=T54,返回返回LOOP2:JCSW;若(若(CY)=1,则则TaTaT54T54,转转SWSWFHFH:RET RET多分支程序举例多分支程序举例(2)使用查转移指令表的方法实现多分支转移使用查转移指令表的方法实现多分支转移也是以查表实现多分支程序转移,但表中放转移指令,转移也是以查
23、表实现多分支程序转移,但表中放转移指令,转移指令用指令用AJMP,转移范围是转移范围是2KB(128分支分支),用,用LJMP是是64K键功能键值处理程序读数据01DS写数据02XS插入03CR例例5假定键盘上有假定键盘上有3个操作键,键值已读个操作键,键值已读入入A中,其功能为:中,其功能为:.MOVDPTR,#BRTABCLRCRLCAJMPA+DPTRBRTAB:NOPNOPAJMPDSAJMPXSAJMPCR.三、循环程序三、循环程序循循环环是是为为了了重重复复执执行行一一个个程程序序段段循循环环是是为为了了重重复复执执行行一一个个程程序序段段,汇汇 编编 语语 言言 没没 有有 专专
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序设计
限制150内