第4章89C51汇编语言程序的设计与调试.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第4章89C51汇编语言程序的设计与调试.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 89 C51 汇编语言 程序 设计 调试
- 资源描述:
-
1、第4章 汇编程序的设计与调试一、汇编语言程序设计概述二、实用程序设计三、C51介绍程序设计语言1.1.机器语言机器语言(Machine Language)(Machine Language)这是一种用二进制代码这是一种用二进制代码“0”0”和和“1”1”表示指令和数据的表示指令和数据的程序设计语言。计算机只能识别二进制代码,这种语言是程序设计语言。计算机只能识别二进制代码,这种语言是能被计算机能被计算机直接识别直接识别和和执行执行的的机器级机器级语言。语言。特点:机器语言能够被计算机立即识别并加以执行,具有执行特点:机器语言能够被计算机立即识别并加以执行,具有执行速度快、占用内存少等优点。但对
2、于使用者来说,用机器速度快、占用内存少等优点。但对于使用者来说,用机器语言编写程序具有编写难、识别难、记忆难、查错难、交语言编写程序具有编写难、识别难、记忆难、查错难、交流难等缺点。流难等缺点。2.2.汇编语言汇编语言(Assembly Language)(Assembly Language)汇编语言是一种用助记符来表示的汇编语言是一种用助记符来表示的面向机器面向机器的程序设计的程序设计语言。不同的机器所使用的汇编语言一般是不同的。但计语言。不同的机器所使用的汇编语言一般是不同的。但计算机的算机的CPUCPU不能直接识别汇编语言,所以计算机不能立即执不能直接识别汇编语言,所以计算机不能立即执行
3、汇编语言程序。用汇编语言编写的源程序,在由计算机行汇编语言程序。用汇编语言编写的源程序,在由计算机执行之前,必须将它执行之前,必须将它翻译翻译成机器语言程序。成机器语言程序。特点:这种语言弥补了机器语言的不足,用汇编语言编写程序特点:这种语言弥补了机器语言的不足,用汇编语言编写程序比用机器语言方便、直观、易懂、易用、易记。可以编写比用机器语言方便、直观、易懂、易用、易记。可以编写出结构紧凑、运行时间精确的程序。所以,这种语言非常出结构紧凑、运行时间精确的程序。所以,这种语言非常适合于实时控制的需要。适合于实时控制的需要。3.3.高级语言高级语言(High-Level Language)(Hig
4、h-Level Language)高级语言是高级语言是面向过程面向过程并能独立于计算机硬件结构的通用并能独立于计算机硬件结构的通用程序设计语言,是一种接近人类语言和数学表达式的计算机程序设计语言,是一种接近人类语言和数学表达式的计算机语言。比如:语言。比如:BASICBASIC、FORTRANFORTRAN、COBOLCOBOL、PASCALPASCAL、C C语言等。语言等。高级语言不能被计算机直接识别和执行,需要用高级语言不能被计算机直接识别和执行,需要用编译程序编译程序或或解释程序解释程序将高级语言编写的源程序翻译为机器语言。将高级语言编写的源程序翻译为机器语言。特点:它比汇编语言易学、
5、易懂,具有通用性强、易于移植等特点:它比汇编语言易学、易懂,具有通用性强、易于移植等优点。高级语言的语句功能强,它的一条语句往往相当于许优点。高级语言的语句功能强,它的一条语句往往相当于许多条指令,因而用于翻译的程序要占用较多的存储空间,而多条指令,因而用于翻译的程序要占用较多的存储空间,而且执行时间长,且不易精确掌握,故在高速实时控制中一般且执行时间长,且不易精确掌握,故在高速实时控制中一般是不适用的。是不适用的。基本概念基本概念n在目前单片机的开发应用中,经常采用在目前单片机的开发应用中,经常采用C51C51语言语言和和汇编语言汇编语言共同编共同编写程序。要想很好地掌握和应用单片机写程序。
6、要想很好地掌握和应用单片机首先要掌握汇编语言首先要掌握汇编语言。n汇编语言是汇编语言是面向机器面向机器的程序设计语言,对于的程序设计语言,对于CPUCPU不同的单片机,其不同的单片机,其汇编语言一般是不同的。用汇编语言编写的程序称为汇编语言一般是不同的。用汇编语言编写的程序称为汇编语言源汇编语言源程序程序。n汇编语言源程序是由汇编语言语句构成的。汇编语言语句可分为汇编语言源程序是由汇编语言语句构成的。汇编语言语句可分为两大类:指令性语句和指示性语句。两大类:指令性语句和指示性语句。指令性语句指令性语句是由指令组成的由是由指令组成的由CPUCPU执行的语句,执行的语句,指示性语句指示性语句是由是
7、由伪指令伪指令组成的,它不被组成的,它不被CPUCPU执行,用来告诉汇编程执行,用来告诉汇编程序如何对程序进行汇编的指令;由于它不能生成机器语言,故又序如何对程序进行汇编的指令;由于它不能生成机器语言,故又被称为被称为伪指令语句伪指令语句。一、汇编语言程序设计概述1.1.指令性语句格式指令性语句格式 标号标号:操作码助记符操作码助记符 目的操作数目的操作数,源操作数源操作数;注释注释 每条汇编语句一般由若干部分组成,每一部分称为一个每条汇编语句一般由若干部分组成,每一部分称为一个字段字段。每个字段之间应该严格地用每个字段之间应该严格地用分界符分界符加以分隔。加以分隔。分界符包括分界符包括冒号冒
8、号、空格符空格符、逗号逗号、分号分号等。标号段与操作码之间要加等。标号段与操作码之间要加冒号冒号“:”:”;操作码与操作数之间要用空格相隔;各操作数之间要用;操作码与操作数之间要用空格相隔;各操作数之间要用逗号逗号“,”相隔;操作数与注释段之间要加分号相隔;操作数与注释段之间要加分号“;”相隔。相隔。标号是语句所在地址的标志符号标号是语句所在地址的标志符号(1 1)标号后边必须跟以冒号)标号后边必须跟以冒号“:”(2 2)由)由1-81-8个个ASCIIASCII字符组成字符组成(3 3)同一标号在一个程序中只能定义一)同一标号在一个程序中只能定义一次次 (4 4)不能使用汇编语言已经定义的符
9、号)不能使用汇编语言已经定义的符号作为标号作为标号必须以分号必须以分号“;”开头,换行书写,开头,换行书写,但必须注意也要以分号但必须注意也要以分号“;”开头。开头。汇编时,注释字段不会产生机器代码汇编时,注释字段不会产生机器代码。操作字段:(1)十六进制,后缀“H”例:MOV A,#23H 二进制,后缀“B”例:MOV A,#01010101B 十进制,后缀“D”,也可省略。(2)若十六进制的操作数以字符A-F中的某个开头时,则需在它前面加一 个“0”,以便在汇编时把它和字符A-F区别开来。例:MOV A,#0FCH(3)采用工作寄存器和特殊功能寄存器的代号来表示,也可用其地址来 表示。例:
10、程序状态子可用PSW表示,也可用D0H来表示(4)美元符号$的使用 用于表示该转移指令操作码所在的地址。例如,如下指令:HERE:SJMP HERE 可写为:SJMP$2.2.伪指令的指示性语句格式伪指令的指示性语句格式 标号标号:伪操作伪操作 操作数操作数,操作数操作数,.;,.;注释注释 伪指令不是真正的指令,是在汇编时供汇编程序识别的指令,又称为伪指令不是真正的指令,是在汇编时供汇编程序识别的指令,又称为汇编指令汇编指令。它不属于指令系统,也无对应的机器码,只是用来对汇编过程进行某它不属于指令系统,也无对应的机器码,只是用来对汇编过程进行某种控制。利用伪指令告诉汇编程序如何进行汇编,为编
11、程提供方便。种控制。利用伪指令告诉汇编程序如何进行汇编,为编程提供方便。ORG(Origin)ORG(Origin)汇编起始指令汇编起始指令 ORGORG是程序汇编起始地址定位伪指令,是程序汇编起始地址定位伪指令,功能:是规定对汇编语言源程序进行汇编时,目的程序在程序存储器中存放功能:是规定对汇编语言源程序进行汇编时,目的程序在程序存储器中存放的起始地址。的起始地址。格式:格式:标号标号:ORG 16:ORG 16位地址或标号位地址或标号注意:在一个源程序中,可多次使用注意:在一个源程序中,可多次使用ORGORG指令,以规定不同程序段的起始位指令,以规定不同程序段的起始位置,地址应从小到大顺序
12、排列,不允许重叠。置,地址应从小到大顺序排列,不允许重叠。例如:例如:ORGORG 0000H 0000HSTARTSTART:SJMPSJMP MAIN MAIN ORGORG0030H0030HMAINMAIN:MOV SPMOV SP,#30H#30H END(End)END(End)汇编结束指令汇编结束指令 ENDEND是汇编语言程序结束伪指令。是汇编语言程序结束伪指令。功能:是表示程序已结束,汇编程序对功能:是表示程序已结束,汇编程序对ENDEND后面的指令不再汇编。后面的指令不再汇编。格式:格式:标号标号:END:END注意:在一个源程序中,只能有一条注意:在一个源程序中,只能有一
13、条ENDEND指令,而且必须放在整个程序的末指令,而且必须放在整个程序的末尾。尾。EQU(Equate)EQU(Equate)赋值指令赋值指令 EQUEQU是赋值是赋值(也称等值也称等值)伪指令伪指令 。功能:把操作数段中的数据或地址赋值给标号字段中的字符名称功能:把操作数段中的数据或地址赋值给标号字段中的字符名称 。格式:格式:字符名称字符名称 EQU EQU 数值或汇编符号数值或汇编符号 注意:字符名称必须先赋值后使用,故注意:字符名称必须先赋值后使用,故EQUEQU指令通常放在源程序指令通常放在源程序 的开头。的开头。EQUEQU可定义可定义8 8位或位或1616位的数据或地址,位的数据
14、或地址,例如:例如:ORGORG 8500H 8500H AAAA EQU EQUR1R1A10A10 EQU EQU10H10HDELAY EQUDELAY EQU87E6H87E6HMOVMOVR0R0,A10A10;R0R0(10H10H)MOVMOVA A,AAAA;AA(R1R1)LCALLLCALL DELAY DELAY;调用起始地址为;调用起始地址为87E6H87E6H的子程序的子程序ENDEND DATA(Data)DATA(Data)数据地址赋值指令数据地址赋值指令 DATADATA是数据地址赋值伪指令是数据地址赋值伪指令 。功能:把操作数段中的表达式的值赋给标号字段中的字
15、符名称。功能:把操作数段中的表达式的值赋给标号字段中的字符名称。格式:格式:字符名称字符名称 DATA DATA 表达式表达式 注意:注意:DATADATA指令功能与指令功能与EQUEQU指令类似,它们的主要区别如下:指令类似,它们的主要区别如下:lDATADATA定义的字符名称可以先使用后定义,定义的字符名称可以先使用后定义,DATADATA指令可以放在源程序的任何指令可以放在源程序的任何位置,使用灵活。位置,使用灵活。lDATADATA只能用来定义只能用来定义8 8位的数据或地址。位的数据或地址。lEQUEQU可以把汇编符号赋给字符名称,而可以把汇编符号赋给字符名称,而DATADATA只能
16、把数据赋给字符名称。只能把数据赋给字符名称。lDATADATA可以把表达式的值赋给字符名称,这个表达式是可以进行求值运算可以把表达式的值赋给字符名称,这个表达式是可以进行求值运算例:A1 DATA 345H A1 DATA A1+1 XDATAXDATA数据地址赋值指令数据地址赋值指令 XDATAXDATA是数据地址赋值伪指令是数据地址赋值伪指令 。功能:把操作数段中的表达式的值赋给标号字段中的字符名称功能:把操作数段中的表达式的值赋给标号字段中的字符名称 。格式:格式:字符名称字符名称 XDATA XDATA 表达式表达式 注意:注意:XDATAXDATA指令功能与指令功能与DATADATA
17、指令类似,它们的主要区别是指令类似,它们的主要区别是XDATAXDATA可定义可定义1616位的数据或地址。位的数据或地址。BIT(Bit)BIT(Bit)位地址赋值指令位地址赋值指令 BITBIT是位地址赋值伪指令是位地址赋值伪指令 。功能:把位地址赋给字符名称功能:把位地址赋给字符名称 。格式:格式:字符名称字符名称 BIT BIT 位地址位地址例如:例如:AB AB BIT BIT 30H30H ;AB;AB与与30H30H等值等值 AC AC BIT BIT P1.0P1.0 ;AC ;AC与与P1.0P1.0等值等值 MOV MOV C,ABC,AB ;把位地址区把位地址区30H30
18、H单元中的数据送入单元中的数据送入 位累加器位累加器C C中中 CLR CLR ACAC ;把把P1.0P1.0中的内容清零中的内容清零 DB(Define Byte)DB(Define Byte)定义字节指令定义字节指令 DBDB是定义字节伪指令是定义字节伪指令 。功能:从程序存储器指定地址单元开始存放若干个字节的数值或功能:从程序存储器指定地址单元开始存放若干个字节的数值或ASCIIASCII码字符码字符 。格式:格式:标号标号:DB :DB 字节数据或字节数据或ASCIIASCII码字符码字符 注意:多个字节数据或注意:多个字节数据或ASCIIASCII码字符之间要用逗号相隔,码字符之间
19、要用逗号相隔,DBDB指令常用于指令常用于定义定义8 8位的数据常数表。位的数据常数表。例如:例如:ORG 7F00HORG 7F00H TAB:DB TAB:DB 01110010B 01110010B,16H16H,4545,88,AA汇编后存贮单元内容为:汇编后存贮单元内容为:(7F00H7F00H)=72H=72H、(7F01H7F01H)=16H=16H、(7F02H7F02H)=2DH=2DH(7F03H7F03H)=38H=38H、(7F04H7F04H)=41H=41HDW(Define Word)DW(Define Word)定义字指令定义字指令 DWDW是定义字伪指令是定义
20、字伪指令 。功能:从程序存储器指定地址单元开始存放若干个字的数值功能:从程序存储器指定地址单元开始存放若干个字的数值 。格式:格式:标号标号:DW :DW 字节数据或字节数据或ASCIIASCII码字符码字符 注意:多个字数据之间要用逗号相隔,注意:多个字数据之间要用逗号相隔,DWDW指令常用于定义指令常用于定义1616位的地址表。位的地址表。例如:例如:ORGORG 6000H 6000H TAB TAB:DWDW1254H1254H,32H32H,161161 汇编后存贮单元内容为:汇编后存贮单元内容为:(6000H6000H)=12H =12H (6001H6001H)=54H=54H(
21、6002H6002H)=00H =00H (6003H6003H)=32H=32H(6004H6004H)=00H =00H (6005H6005H)=0A1H=0A1HDS(Define Space)DS(Define Space)定义存储空间指令定义存储空间指令 DSDS是定义存储空间伪指令是定义存储空间伪指令 。功能:从程序存储器指定地址单元开始保留表达式的值所规定的存储单功能:从程序存储器指定地址单元开始保留表达式的值所规定的存储单元元 。格式:格式:标号标号:DS :DS 表达式表达式 例如:例如:ORG 1000HORG 1000H TAB:DS 06H TAB:DS 06H DB
22、 25H,35H DB 25H,35H 在上述源程序中,程序存储器从在上述源程序中,程序存储器从1000H1000H单元开始保留单元开始保留6 6个单元,个单元,1006H1006H单元存放单元存放25H25H,1007H1007H单元存放单元存放35H35H。注:对8051单片机,DB、DW、DS等伪指令只能用于程序存储器,而不能对数据存储器使用。3.3.汇编语言源程序的汇编汇编语言源程序的汇编 汇编语言源程序必须要转换为机器码汇编语言源程序必须要转换为机器码(即目的程序即目的程序),计算机才能,计算机才能执行,这个转换过程称为执行,这个转换过程称为汇编汇编。汇编语言源程序的汇编可分为手工汇
23、编和机器汇编两类。汇编语言源程序的汇编可分为手工汇编和机器汇编两类。手工汇编手工汇编是指用人脑通过查指令编码表是指用人脑通过查指令编码表(见附录中的指令表见附录中的指令表)把汇编语把汇编语言源程序翻译成机器码的过程,又称为言源程序翻译成机器码的过程,又称为人工代真人工代真。机器汇编机器汇编是用机器代替人脑并由专门的程序来进行的,这种程序称为是用机器代替人脑并由专门的程序来进行的,这种程序称为汇编程序汇编程序(不同的指令系统汇编程序不同不同的指令系统汇编程序不同)。机器汇编由计算机自动完。机器汇编由计算机自动完成,汇编程序把用汇编语言编写的源程序翻译成由机器语言表示的目成,汇编程序把用汇编语言编
24、写的源程序翻译成由机器语言表示的目的程序。用编辑软件进行源程序的编辑。编辑完成后,生成一个的程序。用编辑软件进行源程序的编辑。编辑完成后,生成一个ASCIIASCII码文件,扩展名为码文件,扩展名为“.ASM”.ASM”。反汇编反汇编是在分析程序存储器已有的程序时,将机器语言翻译成汇编语是在分析程序存储器已有的程序时,将机器语言翻译成汇编语言的转换过程。言的转换过程。无论是高级语言还是汇编语言写的源程序都必须转换成目标程序,单片机才能执行。目前很多公司都将编辑器、汇编器、编译器、连接/定位器、符号转换程序做成了软件包,称为集成开发环境,如Keil uVision、Silicon Laborat
25、ories IDE等。二、实用程序设计n程序设计方法和技巧n源程序的基本格式n汇编语言程序设计举例程序设计方法和技巧程序设计方法和技巧 1.1.程序设计的一般步骤程序设计的一般步骤(1)(1)分析工作任务,明确要达到的分析工作任务,明确要达到的工作目的工作目的、技术、技术指标指标等。等。(2)(2)确定解决问题的确定解决问题的算法算法。算法就是如何将实际问题转化成程序模块来处理,。算法就是如何将实际问题转化成程序模块来处理,要对不同的算法进行分析、比较,找出最适宜的算法。要对不同的算法进行分析、比较,找出最适宜的算法。(3)(3)画画程序流程图程序流程图。其图形的符号规定均与高级语言流程图相同
展开阅读全文