第四章+80C51单片微机的程序设计课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第四章+80C51单片微机的程序设计课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第四 80 C51 单片 微机 程序设计 课件
- 资源描述:
-
1、第四章第四章 80C51单片微机的程序设计单片微机的程序设计 4.1概述概述4.1.1 汇编语言格式汇编语言格式 1.计算机语言计算机语言机器语言、汇编语言与高级语言机器语言、汇编语言与高级语言 程序程序:为计算某一算式或完成某一工作的若干指令的有序:为计算某一算式或完成某一工作的若干指令的有序集合。计算机的全部工作概括起来,就是执行这一指令序列的集合。计算机的全部工作概括起来,就是执行这一指令序列的过程。过程。程序设计:程序设计:为计算机准备这一指令序列前的过程。为计算机准备这一指令序列前的过程。机器语言机器语言机器语言系统机器语言系统:用二进制代码表示的指令系统,简称为机器语言。:用二进制
2、代码表示的指令系统,简称为机器语言。直接用机器语言编写的程序称为手编程序或机器语言程序。直接用机器语言编写的程序称为手编程序或机器语言程序。汇编语言汇编语言 在机器语言,这些英文字符被称为在机器语言,这些英文字符被称为助记符助记符。用这种助记符。用这种助记符表示指令系统的语言称为表示指令系统的语言称为汇编语言汇编语言或符号语言,用汇编语言编写或符号语言,用汇编语言编写的程序称为汇编语言程序。特点:的程序称为汇编语言程序。特点:助记符指令与机器指令是助记符指令与机器指令是-对应的,用汇编语言编写的程序效对应的,用汇编语言编写的程序效率高,占用存储空间小,运行速度快,而且能反映计算机的实际率高,占
3、用存储空间小,运行速度快,而且能反映计算机的实际运行情况,所以用汇编语言能编写出最优化的程序。运行情况,所以用汇编语言能编写出最优化的程序。汇编语言是汇编语言是“面向机器面向机器”的语言,编程比使用高级语言困难。的语言,编程比使用高级语言困难。汇编语言能直接访问存储器、输入与输出接口及扩展的各种芯汇编语言能直接访问存储器、输入与输出接口及扩展的各种芯片片(比如比如A/D、D/A等等),也可直接处理中断,汇编语言能直接管理,也可直接处理中断,汇编语言能直接管理和控制硬件设备。和控制硬件设备。汇编语言通用性差,汇编语言和机器语言一样,都面向一台具体汇编语言通用性差,汇编语言和机器语言一样,都面向一
4、台具体的机器,不同的单片微机具有不同的指令系统,并且不能通用。的机器,不同的单片微机具有不同的指令系统,并且不能通用。不能直接识别在汇编语言中出现的字母、数字和符号,需要不能直接识别在汇编语言中出现的字母、数字和符号,需要将其转换成用二进制代码表示的机器语言程序,才能够识别和执行。将其转换成用二进制代码表示的机器语言程序,才能够识别和执行。通常把这一转换(翻译)工作称为通常把这一转换(翻译)工作称为汇编汇编。人工汇编人工汇编:由程序员通过查指令表把汇编指令程序转换为机器语言:由程序员通过查指令表把汇编指令程序转换为机器语言程序的过程。程序的过程。由专门的程序来进行汇编,这种程序称为汇编程序。经
5、汇编程序汇由专门的程序来进行汇编,这种程序称为汇编程序。经汇编程序汇编而得到的机器语言程序,计算机能够识别和执行,这一机机器语编而得到的机器语言程序,计算机能够识别和执行,这一机机器语言程序称为目的程序或言程序称为目的程序或目标程序目标程序,而汇编语言程序称为,而汇编语言程序称为源程序源程序。这。这3者之间的关系如者之间的关系如图图41所示。所示。高级语言高级语言 比如比如BASIC、FORTRAN、COBOL及及PASCAL等,都是等,都是一些参照数学语言而设计的、近似于人们日常用语的语言。通用一些参照数学语言而设计的、近似于人们日常用语的语言。通用性强,易于移植到不同类型的机器中去。计算机
6、也不能直接识别性强,易于移植到不同类型的机器中去。计算机也不能直接识别和执行高级语言,需要将其转换为机器语言才能识别和执行。对和执行高级语言,需要将其转换为机器语言才能识别和执行。对于高级语言,这一转换工作通常称为编译或者解释。进行编译或于高级语言,这一转换工作通常称为编译或者解释。进行编译或者解释的专用程序称为编译程序或者解释程序。者解释的专用程序称为编译程序或者解释程序。由于高级语言不受具体机器的限制,而且使用了许多数学由于高级语言不受具体机器的限制,而且使用了许多数学公式和习惯用语,从而简化了程序设计的过程,因此是一种面向公式和习惯用语,从而简化了程序设计的过程,因此是一种面向问题或者面
7、向过程的语言。问题或者面向过程的语言。比如,比如,APT、PROLOG、LISP、PL/M以及以及C语言等。而语言等。而80C51系列单片微机作为工业标准地位,从系列单片微机作为工业标准地位,从1985年开始就有年开始就有C语言编译语言编译器,简称器,简称C51。汇编语言汇编语言 汇编语言语句的种类和格式汇编语言语句的种类和格式 汇编语言语句的种类汇编语言语句的种类 指令语句:每指令语句:每1个指令语句都在汇编时产生个指令语句都在汇编时产生1个目标代个目标代码,对应着机器的码,对应着机器的1种操作。种操作。例如:例如:MOV A,#0 伪指令语句:主要是为汇编语言服务的,在汇编时没有目标伪指令
8、语句:主要是为汇编语言服务的,在汇编时没有目标代码与之对应。代码与之对应。例如:例如:ONE EQU 1 宏指令语句:用以代替汇编语言源程序中重复使用的程序段宏指令语句:用以代替汇编语言源程序中重复使用的程序段的的1种语句,由汇编程序在汇编时产生相应的目标代码。种语句,由汇编程序在汇编时产生相应的目标代码。汇编语言语句的格式汇编语言语句的格式 指令语句的格式为:指令语句的格式为:【标号(名字)】:助记符【标号(名字)】:助记符(操作码)【操作数(参数)操作码)【操作数(参数)】;【注释【注释】伪指令语句的格式:伪指令语句的格式:名字名字 定义符定义符 参数参数 ;注释;注释各字段之间用各字段之
9、间用1个空格或字段定界符分隔,常用的字段定界符有个空格或字段定界符分隔,常用的字段定界符有冒号冒号“:”、逗号、逗号“,”和分号和分号“;”。其中方括号括起来的。其中方括号括起来的是可选择部分。是可选择部分。标号域标号域:说明指令的地址。标号可以作为说明指令的地址。标号可以作为LJMP、AJMP、LCALL及及ACALL等指令的操作数。等指令的操作数。在指令语句中,标号位于一个语句的开头位置,由字母和在指令语句中,标号位于一个语句的开头位置,由字母和数符组成,字母打头,冒号数符组成,字母打头,冒号“:”结束。结束。标号中的字符个数一般不超过标号中的字符个数一般不超过8个,若超过个,若超过8个,
10、则以前面的个,则以前面的8个为有效,后面字符不起作用。个为有效,后面字符不起作用。不能使用本汇编语言中已经定义了的符号作标号,比如指不能使用本汇编语言中已经定义了的符号作标号,比如指令助记符令助记符(如如ADD)、伪指令、伪指令(如如END)一条语句可以有标号,也可以没有标号一条语句可以有标号,也可以没有标号操作码域操作码域:是指令的助记符或定义符,用来表示指令的性质,规定这是指令的助记符或定义符,用来表示指令的性质,规定这个指令语句的操作类型。个指令语句的操作类型。伪指令语句中的定义符规定这个指令语句的伪操作功能。伪指令语句中的定义符规定这个指令语句的伪操作功能。对于标号缺省的语句,操作码域
11、作为一行的开始。但在书写对于标号缺省的语句,操作码域作为一行的开始。但在书写时,应与上一行的操作码对齐。时,应与上一行的操作码对齐。操作数域操作数域:给出的是参与运算或进行其它操作的数据或这些数据的地址。给出的是参与运算或进行其它操作的数据或这些数据的地址。操作数与操作码之间用空格操作数与操作码之间用空格“”“”分隔,若有两个操作数,这分隔,若有两个操作数,这两个操作数之间必须用逗号两个操作数之间必须用逗号“,”分开。分开。对于操作数域出现的常数:若采用十六进制数表示,其末尾必对于操作数域出现的常数:若采用十六进制数表示,其末尾必须加须加“H”说明;若十六进制数以说明;若十六进制数以A、B、C
12、、D、E、F开头,其开头,其前面必须添前面必须添1个个“0”进行引导说明。进行引导说明。若采用二进制数表示,其末尾必须用若采用二进制数表示,其末尾必须用“B”说明。说明。若采用十进制数表示,可以不加后缀或加若采用十进制数表示,可以不加后缀或加“D”说明。说明。注释域注释域由分号由分号“;”引导开始,是说明语句功能、性质以及执行结果引导开始,是说明语句功能、性质以及执行结果的文字。以分号的文字。以分号“;”引导。引导。例:把片外存储器例:把片外存储器2200H单元中的数送入片内单元中的数送入片内70H单元中。单元中。标号域标号域 操作码域操作码域 操作数域操作数域 注释域注释域BEGIN:MOV
13、 DPTR,#2200H ;(DPTR)=2200H MOV R0,#70H ;(R0)=70H MOVX A,DPTR ;(A)=(DPTR)MOV R0,A ;(R0)=(A)伪指令:为了便于编程和对汇编语言程序进行汇编,伪指令:为了便于编程和对汇编语言程序进行汇编,各种汇编程序都提供一些特殊的指令,供人们编程使用。各种汇编程序都提供一些特殊的指令,供人们编程使用。由伪指令确定的操作称为伪操作。由伪指令确定的操作称为伪操作。伪指令又称汇编程序控制译码指令。伪指令又称汇编程序控制译码指令。“伪伪”体现在汇编时不产生机器指令代码,不影响程序体现在汇编时不产生机器指令代码,不影响程序的执行,仅指
14、明在汇编时执行一些特殊的操作。的执行,仅指明在汇编时执行一些特殊的操作。4.1.2 伪指令语句伪指令语句 ORG(ORiGIN)汇编起始地址伪指令汇编起始地址伪指令指令格式为:指令格式为:ORG 表达式表达式 含义:向汇编程序说明,下述程序段的起始地址由表达含义:向汇编程序说明,下述程序段的起始地址由表达式指明。表达式通常为式指明。表达式通常为16进制地址码。进制地址码。一般规定,在由一般规定,在由ORG伪指令定位时,其地址应当由小到大,伪指令定位时,其地址应当由小到大,不能重叠。不能重叠。它的有效范围一直到下一条它的有效范围一直到下一条ORG伪指令出现为止。伪指令出现为止。跟在跟在ORG伪指
15、令后面的程序段或数据段是绝对地址还是浮伪指令后面的程序段或数据段是绝对地址还是浮动地址段,依赖于动地址段,依赖于ORG右边的表达式性质。右边的表达式性质。ORG 1000H START:MOV A,12H含义:通知汇编程序,从含义:通知汇编程序,从 START开始的程序段,其起始地开始的程序段,其起始地址由址由1000H开始。由于开始。由于1000H是立即数型地址码,所以还隐含地指是立即数型地址码,所以还隐含地指明该程序段是绝对地址段。明该程序段是绝对地址段。假定假定ORG右边的表达式是浮动程序段中定义的标号右边的表达式是浮动程序段中定义的标号RELOCA,则则 ORG RELOCA SUBR
16、OU:表明表明 SUBROU起始于起始于 RELOCA(它是相对地址它是相对地址)浮动地址的程序浮动地址的程序段。段。END(END of assembly)汇编结束伪指令汇编结束伪指令 汇编结束伪指令一般有以下两种格式:汇编结束伪指令一般有以下两种格式:主程序模块:标号主程序模块:标号 END 表达式表达式 子程序模块:子程序模块:标号标号 END 含义:通知汇编程序,该程序段汇编至此结束。含义:通知汇编程序,该程序段汇编至此结束。END语句应设置在整个程序(包括伪指令在内)的后面。语句应设置在整个程序(包括伪指令在内)的后面。当源程序为主程序时,当源程序为主程序时,END伪指令中可有标号,
17、这个标伪指令中可有标号,这个标号应是主程序第一条指令的符号地址。若源程序为子程序,则号应是主程序第一条指令的符号地址。若源程序为子程序,则在在 END伪指令中不需要带标号。伪指令中不需要带标号。EQU(EQUate)赋值伪指令)赋值伪指令 指令格式为:标号指令格式为:标号 EQU 表达式表达式 含义:把表达式赋值于标号,这里的标号和表达式是必含义:把表达式赋值于标号,这里的标号和表达式是必不可少的。例如:不可少的。例如:LOOP EQU 2002H是向汇编程序表明,标号是向汇编程序表明,标号LOOP的值为的值为2002H。又如:。又如:LOOP1 EQU LOOPLOOP已赋值为已赋值为200
18、2H,则相当于,则相当于LOOP1LOOP,即,即LOOPI也为也为2002H,在程序中,在程序中LOOP和和LOOP1可以互换使用。可以互换使用。用用EQU语句给一个标号赋值以后,在整个源程序中该标语句给一个标号赋值以后,在整个源程序中该标号的值是固定的,不能更改。号的值是固定的,不能更改。DLDL定义标号值伪指令定义标号值伪指令 指令格式为:指令格式为:DL 含义:说明标号等值于表达式。同样,标号和表达式是必含义:说明标号等值于表达式。同样,标号和表达式是必不可少的。例如;不可少的。例如;COUNT DL 3000H ;S定义标号定义标号COUNT的值为的值为;3000H COUNT DL
19、 COUNT十十1 ;重新定义;重新定义COUNT的值为的值为;3000Hl可用可用DL语句在同一源程序中给同一标号赋予不同的值,语句在同一源程序中给同一标号赋予不同的值,即可更改已定义的标号值;而用即可更改已定义的标号值;而用EQU语句定义的标号,在整个源语句定义的标号,在整个源程序中不能更改。程序中不能更改。DB(Define Byte)定义字节伪指令定义字节伪指令 指令格式为:标号指令格式为:标号 DB 表达式或表达式表表达式或表达式表 含义:将表达式或表达式表所表示的数据或数据串存入从标含义:将表达式或表达式表所表示的数据或数据串存入从标号开始的连续存储单元中。标号为可选项,它表示数据
20、存储单元号开始的连续存储单元中。标号为可选项,它表示数据存储单元地址。表达式或表达式表是指一个字节或用逗号分开的字节数据。地址。表达式或表达式表是指一个字节或用逗号分开的字节数据。可以是用引号括起来的字符串。字符串中的字符按可以是用引号括起来的字符串。字符串中的字符按ASCII码存于码存于连续的连续的ROM中。例如:中。例如:ORG 2000H TABLE DB 73H,04,100,32,00,2,“ABC”表示字节串数据存入由表示字节串数据存入由TABLE标号为起始地址的连续存标号为起始地址的连续存储器单元中。即从储器单元中。即从2000H存储单元开始依次连续存放数据为:存储单元开始依次连
21、续存放数据为:73H,04H,64H,20H,00H,FEH,41H,42H,43H。若不采用若不采用ORG伪指令专门规定数据区的起始地址,则数伪指令专门规定数据区的起始地址,则数据区的起始地址即根据据区的起始地址即根据DB命令前一条指令的地址确定。这时命令前一条指令的地址确定。这时DB所定义的数据字节的起始地址为所定义的数据字节的起始地址为DB命令前一条指令的地址加上命令前一条指令的地址加上该指令的字节数。该指令的字节数。DW(Define Word)定义字伪指令定义字伪指令指令格式为:标号指令格式为:标号 DW 表达式或表达式表表达式或表达式表含义:把字或字串值存入由标号开始的连续存储单元
22、中,含义:把字或字串值存入由标号开始的连续存储单元中,且把字的高字节数存入低地址单元,低字节数存入高地址单元。且把字的高字节数存入低地址单元,低字节数存入高地址单元。按顺序连续存放。按顺序连续存放。DW100H,3456H,814表示按顺序存入表示按顺序存入01H,00H,34H,56H,03H,2EH注:注:DB和和DW定义的数表,数的个数不得超过定义的数表,数的个数不得超过80个。若数据的个。若数据的数目较多时,可以使用多个定义命令。数目较多时,可以使用多个定义命令。一般以一般以DB来定义数据,以来定义数据,以DW来定义地址。来定义地址。DS(Define Storage)定义存储区伪指令
23、定义存储区伪指令 指令格式为:指令格式为:DS 含义:通知汇编程序,在目标代码中,以标号为首地址保留表达含义:通知汇编程序,在目标代码中,以标号为首地址保留表达式值的若干存储单元以备源程序使用。汇编时,对这些单元不赋式值的若干存储单元以备源程序使用。汇编时,对这些单元不赋值。例如:值。例如:BASE DS 100H通知汇编程序,从标号通知汇编程序,从标号BASE开始,保留开始,保留100H个存储单元,个存储单元,以备源程序另用。以备源程序另用。注意,对于注意,对于80C51单片微机,单片微机,DB、DW、DS等伪指令只能等伪指令只能应用于应用于程序存储器程序存储器,而不能对数据存储器使用。,而
24、不能对数据存储器使用。BIT 位定义伪指令位定义伪指令 命令格式为:命令格式为:BIT 含义:给字符名称赋予位地址。其中,位地址可以是绝含义:给字符名称赋予位地址。其中,位地址可以是绝对地址,也可以是符号地址。对地址,也可以是符号地址。例:例:ABCBITP3.1把把P3.1位地址赋值给位地址赋值给ABC,在后面的编程中,在后面的编程中,ABC即可即可作为位地址作为位地址P3.1使用。使用。例例1.伪指令应用伪指令应用ORG 8100HBUFFER DS 10H DW “A B”DW 100H,1ACH,-814说明:说明:从从8100H至至810FH为缓冲区空间为缓冲区空间(8110H)=4
25、1H(A)(8111H)=42H(B)8112H单元起存放单元起存放01H、00H、01H、ACH、FCH、D2H 4.2 80C51 4.2 80C51汇编语言程序设计汇编语言程序设计 汇编语言程序设计,就是采用汇编指令来编写计算机程序。汇编语言程序设计,就是采用汇编指令来编写计算机程序。在实际编程中,如何正确选择指令、寻址方式和合理使用工作寄在实际编程中,如何正确选择指令、寻址方式和合理使用工作寄存器,包括数据存储器单元,如何对扩展的存器,包括数据存储器单元,如何对扩展的I/O端口进行操作等,端口进行操作等,都是基本的汇编语言程序设计技巧。都是基本的汇编语言程序设计技巧。程序结构一般采用以
展开阅读全文