资源预览内容
第1页 / 共116页
第2页 / 共116页
第3页 / 共116页
第4页 / 共116页
第5页 / 共116页
第6页 / 共116页
第7页 / 共116页
第8页 / 共116页
第9页 / 共116页
第10页 / 共116页
亲,该文档总共116页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第2章 MCS-51单片机指令系统与汇编语言程序设计,主要内容:MCS-51单片机的寻址方式、指令系统、基本程序结构及汇编语言的开发和调试。重点在于寻址方式、各种指令的应用、程序设计的规范、程序设计的思想及典型程序的理解和掌握。难点在于控制转移、位操作指令的理解及各种指令的灵活应用,以及程序设计的基本方法和针对具体的硬件设计出最合理的软件。,指令系统:一台计算机所能识别、执行的指令的集合就是它的指令系统。机器语言:指令系统是一套控制计算机执行操作的二进制编码,称为机器语言。机器语言指令是计算机惟一能识别和执行的指令。 汇编语言:指令系统是利用指令助记符来描述的,称为汇编语言。计算机的指令系统一般都是利用汇编语言描述的,是由计算机硬件设计所决定的。指令系统没有通用性。单片机一般是空机,未含任何系统软件。因此在第一次使用前,必须对其进行编程,,2.1 概述,2.1.1 汇编语言指令格式与伪指令,1常用单位与术语位(bit):位是计算机所能表示的最小的、最基本的数据单位,位通常是指一个二进制位。字节(Byte):一个连续的8位二进制数码称为一个字节,即1Byte=8bit。字(Word):通常由16位二进制数码组成,即1Word=2Byte。字长:字长是指计算机一次处理二进制数码位的多少。MCS-51型单片机是8位机,所以说它的字长为8位。 MCS-51系列单片机都是以Intel公司最早的典型产品8051为核心,增加了一定的功能部件后构成的。本章以8051为主介绍MCS-51系列单片机 。,2汇编语言指令格式,指令格式:指令的表示方式称为指令格式,它规定了指令的长度和内部信息的安排。完整的指令格式如下: 标号: 操作码 操作数 ,操作数 ;注释 其中: 项是可选项。 标号:指本条指令起始地址的符号,也称为指令的符号地址。代表该条指令在程序编译时的具体地址。 操作码:又称助记符,它是由对应的英文缩写构成的,是指令语句的关键。它规定了指令具体的操作功能,描述指令的操作性质,是一条指令中不可缺少的内容。 操作数:它既可以是一个具体的数据,也可以是存放数据的地址。 注释:注释也是指令语句的可选项,它是为增加程序的可读性而设置的,是针对某指令而添加的说明性文字,不产生可执行的目标代码。,伪指令(也称为汇编程序的控制命令)是程序员发给汇编程序的命令,用来设置符号值、保留和初始化存储空间、控制用户程序代码的位置。伪指令只出现在汇编前的源程序中,仅提供汇编用的某些控制信息,不产生可执行的目标代码,是CPU不能执行的指令。(1)定位伪指令ORG格式:ORG n其中:n通常为绝对地址,可以是十六进制数、标号或表达式。功能:规定编译后的机器代码存放的起始位置。在一个汇编语言源程序中允许存在多条定位伪指令,但每一个n值都应和前面生成的机器指令存放地址不重叠。例如程序: ORG 1000HSTART: MOV A,#20HMOV B,#30H,3伪指令,(2)结束汇编伪指令END格式:标号: END 表达式功能:放在汇编语言源程序的末尾,表明源程序的汇编到此结束,其后的任何内容不予理睬。,(3)赋值伪指令EQU格式:字符名称x EQU 赋值项n功能:将赋值项n的值赋予字符名称x。程序中凡出现该字符名称x就等同于该赋值项n,其值在整个程序中有效。赋值项n可以是常数、地址、标号或表达式。在使用时,必须先赋值后使用。“字符名称”与“标号”的区别是“字符名称”后无冒号,而“标号”后面有冒号。,(4)定义字节伪指令DB格式:标号: DB x1, x2, xn功能:将8位数据(或8位数据组)x1, x2, xn顺序存放在从当前程序存储器地址开始的存储单元中。xi可以是8位数据、ASCII码、表达式,也可以是括在单引号内的字符串。两个数据之间用逗号“,”分隔。xi为数值常数时,取值范围为00HFFH。xi为ASCII码时,要使用单引号,以示区别。xi为字符串常数时,其长度不应超过80个字符。 (5)定义双字节伪指令DW格式:标号: DW x1, x2, xn功能:将双字节数据或双字节数据组顺序存放在从标号指定地址单元开始的存储单元中。其中,xi为16位数值常数,占两个存储单元,先存高8位(存入低位地址单元中),后存低8位(存入高位地址单元中)。,(6)预留存储空间伪指令DS格式:标号: DS n功能:从标号指定地址单元开始,预留n个存储单元,汇编时不对这些存储单元赋值。n可以是数据,也可以是表达式。(7)定义位地址符号伪指令BIT格式:字符名称x BIT 位地址n功能:将位地址n的值赋予字符名称x。程序中凡出现该字符名称x就代表该位地址。位地址n可以是绝对地址,也可以是符号地址。(8)数据地址赋值伪指令DATA格式:字符名称x DATA 表达式n功能:把表达式n的值赋值给左边的字符名称x。n可以是数据或地址,也可以是包含所定义的“字符名称x”在内的表达式,但不能是汇编符号。 DATA与EQU的主要区别是:EQU定义的“字符名称”必须先定义后使用,而DATA定义的“字符名称”没有这种限制。所以,DATA伪指令通常用在源程序的开头或末尾。,2.1.2 指令的分类,MCS-51指令系统有111条指令,可按下列几种方式分类: 按指令字节数分类单字节指令(49条)、双字节指令(46条)和三字节指令(16条)。 2. 按指令执行时间分类单机器周期指令(65条)、双机器周期指令(44条)和四机器周期指令(2条)。 3. 按功能分类数据传送指令(29条)、算术操作指令(24条)、逻辑操作指令(24条)、控制转移指令(17条)和位操作指令(17条)。,2.1.3 指令中的常用符号,Rn(n=07):表示当前工作寄存器R0R7中的任一个寄存器。Ri(i=0或1):表示通用寄存器组中用于间接寻址的两个寄存器R0, R1。#data:表示8位直接参与操作的立即数。#data16:表示16位直接参与操作的立即数。direct:表示片内RAM的8位单元地址。addr11:表示11位目的地址,主要用于ACALL和AJMP指令中。addr16:表示16位目的地址,主要用于LCALL和LJMP指令中。rel:用补码形式表示的8位二进制地址偏移量,取值范围为128+127,主要用于相对转移指令,以形成转移的目的地址。DPTR:数据指针,用于寄存器间接寻址方式和变址寻址方式。,2.1.3 指令中的常用符号,bit:表示片内RAM的位寻址区,或者是可以位寻址的SFR的位地址。A(或ACC)、 B :表示累加器、 B寄存器。C:表示PSW中的进位标志位Cy。:在间接寻址方式中,表示间接寻址寄存器指针的前缀标志。$:表示当前的指令地址。/:在位操作指令中,表示对该位先求反后再参与操作。(X):表示由X所指定的某寄存器或某单元中的内容。(X):表示由X间接寻址单元中的内容。:表示指令的操作结果是将箭头右边的内容传送到左边。:表示指令的操作结果是将箭头左边的内容传送到右边。、 、 :表示逻辑或、与、异或。,寻址方式:在计算机中,说明操作数所在地址的方法称为指令的寻址方式。计算机执行程序实际上是在不断寻找操作数并进行操作的过程。每种计算机在设计时已决定了它具有哪些寻址方式,寻址方式越多,计算机的灵活性越强,指令系统也就越复杂。MCS-51单片机的指令系统提供了7种寻址方式,分别为立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址。一条指令可能含多种寻址方式。,2.2 MCS-51单片机的寻址方式,2.2.1 立即寻址,定义:将立即参与操作的数据直接写在指令中,这种寻址方式称为立即寻址。特点:指令中直接含有所需的操作数。该操作数可以是8位的,也可以是16位的,常常处在指令的第二字节和第三字节的位置上。立即数通常使用#data或#data16表示,在立即数前面加“#”标志,用以和直接寻址中的直接地址(direc或bit)相区别。,2.2.2 直接寻址,定义:将操作数的地址直接存放在指令中,这种寻址方式称为直接寻址。 特点:指令中含有操作数的地址。该地址指出了参与操作的数据所在的字节单元地址或位地址。计算机执行它们时便可根据直接地址找到所需要的操作数。 寻址范围:ROM、片内RAM区、SFR和位地址空间。,2.2.3 寄存器寻址 定义:操作数存放在MCS-51内部的某个工作寄存器Rn(R0R7)或部分专用寄存器中,这种寻址方式称为寄存器寻址。 特点:由指令指出某一个寄存器的内容作为操作数。存放操作数的寄存器在指令代码中不占据单独的一个字节,而是嵌入(隐含)到操作码字节中。 寻址范围:四组通用寄存器Rn(R0R7)、部分专用寄存器( A, B, DPTR, Cy )。 2.2.4 寄存器间接寻址 定义:指令给出的寄存器中存放的是操作数据的单元地址。这种寻址方式称为寄存器间接寻址,简称为寄存器间址。,特点:指令给出的寄存器中存放的是操作数地址。寄存器间接寻址是一种二次寻找操作数地址的寻址方式,寄存器前边必须加前缀符号“”。不能用于寻址特殊功能寄存器SFR。 寻址范围:内部RAM低128B(只能使用R0或R1作间址寄存器)、外部RAM(只能使用DPTR作间址寄存器)。对于外部低256单元RAM的访问,除可以使用DPTR外,还可以使用R0或R1作间址寄存器。2.2.5 变址寻址定义:操作数存放在变址寄存器(累加器A)和基址寄存器(DPTR或PC)相加形成的16位地址单元中。这种寻址方式称为基址加变址寄存器间接寻址,简称为变址寻址。,特点:指令操作码中隐含作为基址寄存器用的DPTR(或PC )和作为变址用的累加器A。在执行变址寻址指令时,MCS-51单片机先把基地址( DPTR或PC 的内容)和地址偏移量(A的内容)相加,以形成操作数地址,再由操作数地址找到操作数,并完成相应的操作。变址寻址方式是单字节指令。寻址范围:只能对程序存储器ROM进行寻址,主要用于查表性质的访问。注意:累加器A中存放的操作数地址相对基地址的偏移量的范围为00HFFH(无符号数)。MCS-51单片机共有以下三条变址寻址指令:MOVC A, A+PC ;(A)(A)+(PC)+1MOVC A, A+DPTR ;(A)(A)+(DPTR)JMP A+DPTR ;(PC)(A)+(DPTR),2.2.6 相对寻址 定义:将程序计数器PC的当前值(取出本条指令后的PC值)与指令第二个字节给出的偏移量(rel)相加,形成新的转移目标地址。称为相对寻址方式。 特点:相对寻址方式是为实现程序的相对转移而设计的,为相对转移指令所使用,其指令码中含有相对地址偏移量,能生成浮动代码。 如: SJMP rel ; (PC)(PC) + 2 + rel 相对转移指令的目的地址指令地址指令字节数偏移量 寻址范围:只能对程序存储器ROM进行寻址。相对地址偏移量(rel)是一个带符号的8位二进制补码,其取值范围为128127(以PC为中间的256个字节范围)。,2.2.7 位寻址 定义:指令中给出的操作数是一个可单独寻址的位地址,这种寻址方式称为位寻址方式。 特点:位寻址是直接寻址方式的一种,其特点是对8位二进制数中的某一位的地址进行操作。 寻址范围:片内RAM低128B中位寻址区、部分SFR(其中有83位可以位寻址)。 可位寻址的位地址的表示形式如下: (1)直接使用位地址形式。如:MOV 00H, C ;(00H)(Cy)其中:00H是片内RAM中20H地址单元的第0位。,(2)字节地址加位序号的形式。如:MOV 20H.0, C ; (20H.0)(Cy) 其中:20H.0是片内RAM中20H地址单元的第0位。 (3)位的符号地址(位名称)的形式。对于部分特殊功能寄存器,其各位均有一个特定的名字,所以可以用它们的位名称来访问该位。如:ANL C, P ; (C) (C)(P)其中:P是PSW的第0位,C是PSW的第7位。 (4)字节符号地址(字节名称)加位序号的形式。对于部分特殊功能寄存器(如状态标志寄存器PSW),还可以用其字节名称加位序号形式来访问某一位。如:CPL PSW.6 ; (AC) ( )其中: PSW.6表示该位是PSW的第6位。,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号