1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,第3章 程序设计基础,上海电子信息职业技术学院 何永艳主编,程序设计语言使实现人机互相交换信息(对话)的基本工具,它可分为机器语言、汇编语言和高级语言。单片机的指令系统由111条指令构成。,1.机器语言,机器语言编写的程序不易阅读,难记、难学。,3.1 指令系统基本概念,3.1.1 编程语言,2.汇编语言,汇编语言是以人们易于理解和记忆的英文名称或缩写形式(助记符)来表示二进制指令。,MOV A,#0AH,ADD A,#14H,汇编语言必机器语言更易于理解、记忆和交流。,用汇编语言编写的程序称为汇编
2、语言程序,或称源程序。,把汇编语言程序译成机器语言程序单片机才能执行,这一翻译工作又称为汇编,汇编一般是借助专用软件由单片机自动完成。汇编后的机器语言程序也称为目标程序。,用汇编语言编写单片机程序的特点是占用资源少、运行速度快。,3,.高级语言,高级语言接近于人类自然语言,用高级语言编写的程序与人们通常解题的步骤比较相近,而且不依赖单片机结构和指令系统,是面向过程而独立于机器的通用语言。,用高级语言编写的源程序,也需要翻译生成目标程序机器才能执行。高级语言的特点是易学、通用性好、便于移植。,3.1.2 汇编语言的指令基本格式,80C51单片机的汇编指令由操作码和操作数两大部分组成,其基本格式表
3、示为,标号:操作码 操作数;注释,1.标号:指令的符号地址,2.操作码:表示指令的操作功能。,3.操作数:参加操作的数据或数据地址,1).操作数可以是数据,也可以是数据的地址、数据地址的地址或操作数的其他信息。,2).操作数可分为目的操作数和源操作数。,3).操作数可用二进制数、十进制数或十六进制数表示,4).操作数的个数可以是03个,5).操作数与操作码之间用空格分隔,操作数与操作数之间用逗号“,”分隔。,4.注释:指令功能说明,。,3.1.3 伪指令,1.伪指令与80C51指令的不同点,1)伪指令是在汇编过程中起作用的指令,2)伪指令不产生可执行的目标代码,2.常用的伪指令,1)起始伪指令
4、 ORG(Origin),格式:ORG 16位地址,ORG伪指令的功能是规定源程序或数据的起始地址。,2)结束伪指令 END,格式:END,结束伪指令END的功能是指汇编程序汇编到此结束。,3)等值伪指令 EQU(Equate),格式:字符名称 EQU 数据或汇编符号,EQU伪指令的功能是将一个常数或特定的符号赋值给规定的字符串。,4)数据地址赋值伪指令 DATA,格式:字符名称 DATA 表达式,功能:将数据地址或代码地址赋予规定的字符名称。,5)定义字节伪指令DB(Define Byte),格式:DB 8位二进制数表,定义字节伪指令DB的功能是规定从程序存储器的某地址单元开始,存入一组8位
5、二进制常数。,6)定义字伪指令DW(Define Word),格式:DW 16位二进制数表 DW伪指令的功能是按字的形式(双字节),把数据存放在存储单元中。,7)定义位地址伪指令BIT,格式:字符名称 BIT 位地址,BIT伪指令的功能是将位地址赋予所规定的字符名称。,8)表示目前的地址伪指令$,伪指令$表示目前的地址,程序计数值不变,。,3.2 指令分类,单片机的指令系统由111条指令构成,按不同方法分类如下:,1.按指令长度分类:可分为1字节、2字节和3字节指令。2.按指令执行时间分类:可分为1机周、2机周和4机周指令。3.按指令功能分类:可分为数据传送类、算术运算类、逻辑运算类、位操作类
6、和控制转移类五大类指令。,3.3 指令系统中的常用符号,1.#:立即数符。,2.direct:8位直接地址,代表内RAM 00H7FH或SFR的80HFFH。,3.:间接寻址符。,4.addr11:11位目的地址。,5.rel:带符号的8位偏移地址。,6.bit:位地址。,3.4 指令的寻址方式,3.4.1 寻址的概念,把寻找操作数所在单元的地址称之为寻址。,3.4.2 寻址方式,1.立即寻址(Immediate Addressing),如:MOVA,#30H,2.寄存器寻址(Register Addressing),在指令选定的某寄存器中存放或读取操作数,以完成指令规定的操作,称为寄存器寻址
7、。,规定的寄存器有:(1)工作寄存器R0R7;(2)累加器A;(3)双字节AB;(4)数据指针DPTR;(5)位累加器Cy,如:MOVA,R1,3.寄存器间接寻址(Register Indirect Addressing),由指令指出某一寄存器的内容作为操作数地址的寻址方法,称为寄存器间接寻址。,如:MOV A,R1指令的源操作数是寄存器间接寻址。,说明:,(1)为了区别寄存器寻址和寄存器间接寻址,在寄存器寻址前加“”,(2)可作间接寻址的寄存器有R0、R1、DPTR,(3)它的寻址范围包括内部RAM低128B,内部高128B(52系列)和外部RAMR的64KB。,4.直接寻址(Direct
8、Addressing),直接给出操作数所在的存储器地址,以供取数或存数的寻址方式称为直接寻址。,如:MOV A,40H指令中的源操作数就是直接寻址,40H为操作数的地址。,5.相对寻址(Relative Addressing),相对寻址是以当前程序计数器PC值加上指令中给出的偏移量rel,而构成实际操作数地址的寻址方法。,在使用相对寻址时要注意以下两点:,(1)当前PC值是指相对转移指令的存储地址加上该指令的字节数。,(2)偏移量rel是有符号的单字节数,以补码表示。,目的地址=当前PC值+rel=指令存储地址+指令字节数+rel,6.变址寻址,将基址寄存器与变址寄存器的内容相加,结果作为操作数的地址。,DPTR和PC是基址寄存器,累加器A是变址寄存器。该类寻址方式主要用于查表操作。,7.位寻址(Bit Addressing),位寻址是在位操作指令中直接给出位操作数的地址,可以对片内RAM中的128位和特殊功能寄存器SFR中的93位进行寻址。,例如:SETB3AH,3AH这一位是片内RAM中27H单元中的第3位,现假设27H中的原内容为00H,那么执行此指令后,它就将内部RAM位寻址区中的3AH位置1,所以27H中的内容变为04H。,