《最新单片机原理与应用第二章幻灯片.ppt》由会员分享,可在线阅读,更多相关《最新单片机原理与应用第二章幻灯片.ppt(145页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、单片机原理与应用第二章单片机原理与应用第二章第第2章章 MCS-51单片机指令系统与汇编语单片机指令系统与汇编语言程序设计言程序设计主要内容:主要内容: MCS-51单片机的寻址方式、指令系统、基本程序结构及汇编语言的开发和调试。重点在于寻址方式、各种指令的应用、程序设计的规范、程序设计的思想及典型程序的理解和掌握。难点在于控制转移、位操作指令的理解及各种指令的灵活应用,以及程序设计的基本方法和针对具体的硬件设计出最合理的软件。(3 3)赋值伪指令)赋值伪指令EQUEQU 格式:字符名称格式:字符名称x EQU x EQU 赋值项赋值项n n 功能:将赋值项功能:将赋值项n n的值赋予字符名称
2、的值赋予字符名称x x。程序中凡出现。程序中凡出现该字符名称该字符名称x x就等同于该赋值项就等同于该赋值项n n,其值在整个程序中有,其值在整个程序中有效。赋值项效。赋值项n n可以是常数、地址、标号或表达式。在使可以是常数、地址、标号或表达式。在使用时,必须先赋值后使用。用时,必须先赋值后使用。 “ “字符名称字符名称”与与“标号标号”的区别是的区别是“字符名称字符名称”后无后无冒号,而冒号,而“标号标号”后面有冒号。后面有冒号。3伪指令 (4)定义字节伪指令 DBDB 格式格式:标号: DB x1, x2, xn 功能功能:将8位数据(或8位数据组)x1, x2, xn顺序存放在从当前程
3、序存储器地址开始的存储单元中。xi可以是8位数据、ASCII码、表达式,也可以是括在单引号内的字符串。两个数据之间用逗号“,”分隔。 xi为数值常数时,取值范围为00HFFH。xi为ASCII码时,要使用单引号,以示区别。xi为字符串常数时,其长度不应超过80个字符。 3伪指令 (5 5)定义双字节伪指令)定义双字节伪指令 DWDW 格式:格式: 标号标号: DW x: DW x1 1, x, x2 2, x, xn n 功能:将双字节数据功能:将双字节数据 或双字节数据组或双字节数据组 顺序存放在从标顺序存放在从标号指定地址单元开始的存储单元中。其中,号指定地址单元开始的存储单元中。其中,x
4、 xi i为为1616位数位数值常数,占两个存储单元,先存高值常数,占两个存储单元,先存高8 8位(存入低位地址单位(存入低位地址单元中),后存低元中),后存低8 8位(存入高位地址单元中)。位(存入高位地址单元中)。3伪指令 (6 6)预留存储空间伪指令)预留存储空间伪指令DSDS 格式:格式: 标号标号: DS n: DS n 功能:从标号指定地址单元开始,预留功能:从标号指定地址单元开始,预留n n个存储单元,个存储单元,汇编时不对这些存储单元赋值。汇编时不对这些存储单元赋值。n n可以是数据,也可可以是数据,也可以是表达式。以是表达式。3伪指令 (7 7)定义位地址符号伪指令)定义位地
5、址符号伪指令BITBIT 格式:字符名称格式:字符名称x BIT x BIT 位地址位地址n n 功能:将位地址功能:将位地址n n的值赋予字符名称的值赋予字符名称x x。程序中凡出现。程序中凡出现该字符名称该字符名称x x就代表该位地址。位地址就代表该位地址。位地址n n可以是绝对地可以是绝对地址,也可以是符号地址。址,也可以是符号地址。 3伪指令 (8 8)数据地址赋值伪指令)数据地址赋值伪指令DATADATA 格式:字符名称格式:字符名称x DATA x DATA 表达式表达式n n 功能:把表达式功能:把表达式n n的值赋值给左边的字符名称的值赋值给左边的字符名称x x。n n可可以是
6、数据或地址,也可以是包含所定义的以是数据或地址,也可以是包含所定义的“字符名称字符名称x”x”在内的表达式,但不能是汇编符号。在内的表达式,但不能是汇编符号。 DATADATA与与EQUEQU的主要区别是:的主要区别是:EQUEQU定义的定义的“字符名称字符名称”必须先定义后使用,而必须先定义后使用,而DATADATA定义的定义的“字符名称字符名称”没没有这种限制。所以,有这种限制。所以,DATADATA伪指令通常用在源程序的伪指令通常用在源程序的开头或末尾。开头或末尾。 3伪指令 2.1.2 指令的分类指令的分类 MCS-51 MCS-51指令系统有指令系统有111111条指令,可按下列几种
7、方式分条指令,可按下列几种方式分类:类:按指令字节数分类按指令字节数分类 单字节指令(单字节指令(4949条)、双字节指令(条)、双字节指令(4646条)和三字条)和三字节指令(节指令(1616条)。条)。2. 2. 按指令执行时间分类按指令执行时间分类 单机器周期指令(单机器周期指令(6565条)、双机器周期指令(条)、双机器周期指令(4444条)条)和四机器周期指令(和四机器周期指令(2 2条)。条)。3. 3. 按功能分类按功能分类 数据传送指令(数据传送指令(2929条)、算术操作指令(条)、算术操作指令(2424条)、条)、逻辑操作指令(逻辑操作指令(2424条)、控制转移指令(条)
8、、控制转移指令(1717条)和条)和位操作指令(位操作指令(1717条)。条)。 2.1.3 指令中的常用符号指令中的常用符号 RnRn(n=0n=07 7):表示当前工作寄存器:表示当前工作寄存器R0R0R7R7中的任一个寄存器。中的任一个寄存器。 R Ri i(i=0i=0或或1 1):表示通用寄存器组中用于间接寻址的两个寄存器:表示通用寄存器组中用于间接寻址的两个寄存器R0, R1R0, R1。 #data#data:表示:表示8 8位直接参与操作的立即数。位直接参与操作的立即数。 #data16#data16:表示:表示1616位直接参与操作的立即数。位直接参与操作的立即数。 dire
9、ctdirect:表示片内:表示片内RAMRAM的的8 8位单元地址。位单元地址。 addr11addr11:表示:表示1111位目的地址,主要用于位目的地址,主要用于ACALLACALL和和AJMPAJMP指令中。指令中。 addr16addr16:表示:表示1616位目的地址,主要用于位目的地址,主要用于LCALLLCALL和和LJMPLJMP指令中。指令中。 relrel:用补码形式表示的:用补码形式表示的8 8位二进制地址偏移量,取值范围为位二进制地址偏移量,取值范围为 128128+127+127,主要用于相对转移指令,以形成转移的目的地址。,主要用于相对转移指令,以形成转移的目的地
10、址。 DPTRDPTR:数据指针,用于寄存器间接寻址方式和变址寻址方式。:数据指针,用于寄存器间接寻址方式和变址寻址方式。2.1.3 指令中的常用符号 bitbit:表示片内:表示片内RAMRAM的位寻址区,或者是可以位寻址的的位寻址区,或者是可以位寻址的SFRSFR的位地址。的位地址。 A A(或(或ACCACC)、)、 B B :表示累加器、:表示累加器、 B B寄存器。寄存器。 C C:表示:表示PSWPSW中的进位标志位中的进位标志位C Cy y。 :在间接寻址方式中,表示间接寻址寄存器指针的前缀标志。:在间接寻址方式中,表示间接寻址寄存器指针的前缀标志。 $ $:表示当前的指令地址。
11、:表示当前的指令地址。 / /:在位操作指令中,表示对该位先求反后再参与操作。:在位操作指令中,表示对该位先求反后再参与操作。 (X X):表示由:表示由X X所指定的某寄存器或某单元中的内容。所指定的某寄存器或某单元中的内容。 (X)(X):表示由:表示由X X间接寻址单元中的内容。间接寻址单元中的内容。 :表示指令的操作结果是将箭头右边的内容传送到左边。:表示指令的操作结果是将箭头右边的内容传送到左边。 :表示指令的操作结果是将箭头左边的内容传送到右边。:表示指令的操作结果是将箭头左边的内容传送到右边。 、 、 :表示逻辑或、与、异:表示逻辑或、与、异或。或。 寻址方式寻址方式:在计算机中
12、,说明操作数所在地址的方在计算机中,说明操作数所在地址的方法称为指令的寻址方式。法称为指令的寻址方式。 计算机执行程序实际上是在不断寻找操作数并进行计算机执行程序实际上是在不断寻找操作数并进行操作的过程。操作的过程。 每种计算机在设计时已决定了它具有哪些寻址方式,每种计算机在设计时已决定了它具有哪些寻址方式,寻址方式越多,计算机的灵活性越强,指令系统也就寻址方式越多,计算机的灵活性越强,指令系统也就越复杂。越复杂。 MCS-51MCS-51单片机的指令系统提供了单片机的指令系统提供了7 7种寻址方式,分种寻址方式,分别为立即寻址、直接寻址、寄存器寻址、寄存器间接别为立即寻址、直接寻址、寄存器寻
13、址、寄存器间接寻址、变址寻址、相对寻址和位寻址。一条指令可能寻址、变址寻址、相对寻址和位寻址。一条指令可能含多种寻址方式。含多种寻址方式。2.2 MCS-512.2 MCS-51单片机的寻址方式单片机的寻址方式 2.2.1 立即寻址立即寻址 定义:将立即参与操作的数据直接写在指令中,这种将立即参与操作的数据直接写在指令中,这种寻址方式称为立即寻址。寻址方式称为立即寻址。 特点:指令中直接含有所需的操作数。该操作数可以指令中直接含有所需的操作数。该操作数可以是是8 8位的,也可以是位的,也可以是1616位的,常常处在指令的第二字位的,常常处在指令的第二字节和第三字节的位置上。立即数通常使用节和第
14、三字节的位置上。立即数通常使用#data#data或或#data16#data16表示,在立即数前面加表示,在立即数前面加“#”#”标志,用以和直标志,用以和直接寻址中的直接地址(接寻址中的直接地址(direcdirec或或bitbit)相区别。)相区别。 2.2 MCS-512.2 MCS-51单片机的寻址方式单片机的寻址方式 2.2.2 直接寻址 定义:将操作数的地址直接存放在指令中,这种寻址定义:将操作数的地址直接存放在指令中,这种寻址方式称为直接寻址。方式称为直接寻址。特点:指令中含有操作数的地址。该地址指出了参与特点:指令中含有操作数的地址。该地址指出了参与操作的数据所在的字节单元地
15、址或位地址。计算机执操作的数据所在的字节单元地址或位地址。计算机执行它们时便可根据直接地址找到所需要的操作数。行它们时便可根据直接地址找到所需要的操作数。寻址范围:寻址范围:ROMROM、片内、片内RAMRAM区、区、SFRSFR和位地址空间。和位地址空间。 2.2 MCS-512.2 MCS-51单片机的寻址方式单片机的寻址方式 2.2.3 寄存器寻址寄存器寻址定义:操作数存放在定义:操作数存放在MCS-51MCS-51内部的某个工作寄存器内部的某个工作寄存器RnRn(R0R0R7R7)或部分专用寄存器中,这种寻址方式称为寄存器寻址。)或部分专用寄存器中,这种寻址方式称为寄存器寻址。特点:由
16、指令指出某一个寄存器的内容作为操作数。存放操特点:由指令指出某一个寄存器的内容作为操作数。存放操作数的寄存器在指令代码中不占据单独的一个字节,而是嵌作数的寄存器在指令代码中不占据单独的一个字节,而是嵌入(隐含)到操作码字节中。入(隐含)到操作码字节中。寻址范围:四组通用寄存器寻址范围:四组通用寄存器RnRn(R0R0R7R7)、部分专用寄存器)、部分专用寄存器( A, B, DPTR, Cy A, B, DPTR, Cy )。)。2.2 MCS-512.2 MCS-51单片机的寻址方式单片机的寻址方式 2.2.4 寄存器间接寻址寄存器间接寻址定义:指令给出的寄存器中存放的是操作数据的单元地址。
17、定义:指令给出的寄存器中存放的是操作数据的单元地址。这种寻址方式称为寄存器间接寻址,简称为寄存器间址。这种寻址方式称为寄存器间接寻址,简称为寄存器间址。特点:指令给出的寄存器中存放的是操作数地址。寄存器间特点:指令给出的寄存器中存放的是操作数地址。寄存器间接寻址是一种二次寻找操作数地址的寻址方式,寄存器前边接寻址是一种二次寻找操作数地址的寻址方式,寄存器前边必须加前缀符号必须加前缀符号“ ”。不能用于寻址特殊功能寄存器。不能用于寻址特殊功能寄存器SFRSFR。 寻址范围:内部寻址范围:内部RAMRAM低低128B128B(只能使用(只能使用R0R0或或R1R1作间址寄作间址寄存器)、外部存器)
18、、外部RAMRAM(只能使用(只能使用DPTRDPTR作间址寄存器)。对于外作间址寄存器)。对于外部低部低256256单元单元RAMRAM的访问,除可以使用的访问,除可以使用DPTRDPTR外,还可以使用外,还可以使用R0R0或或R1R1作间址寄存器。作间址寄存器。2.2 MCS-512.2 MCS-51单片机的寻址方式单片机的寻址方式 2.2.5 变址寻址变址寻址 定义定义:操作数存放在变址寄存器(累加器操作数存放在变址寄存器(累加器A)和基址寄存器)和基址寄存器(DPTR或或PC)相加形成的)相加形成的16位地址单元中。这种寻址方式称位地址单元中。这种寻址方式称为基址加变址寄存器间接寻址,
19、简称为变址为基址加变址寄存器间接寻址,简称为变址寻址。寻址。 特点特点:指令操作码中隐含作为基址寄存器用的:指令操作码中隐含作为基址寄存器用的DPTRDPTR(或(或PC PC )和)和作为变址用的累加器作为变址用的累加器A A。在执行变址寻址指令时,。在执行变址寻址指令时,MCS-51MCS-51单片机单片机先把基地址(先把基地址( DPTRDPTR或或PC PC 的内容)和地址偏移量(的内容)和地址偏移量(A A的内容)相的内容)相加,以形成操作数地址,再由操作数地址找到操作数,并完成加,以形成操作数地址,再由操作数地址找到操作数,并完成相应的操作。变址寻址方式是单字节指令。相应的操作。变
20、址寻址方式是单字节指令。2.2 MCS-512.2 MCS-51单片机的寻址方式单片机的寻址方式 寻址范围寻址范围:只能对程序存储器只能对程序存储器ROM进行寻址,主要进行寻址,主要用于查表性质的访问。用于查表性质的访问。 注意注意:累加器累加器A中存放的操作数地址相对基地址的偏中存放的操作数地址相对基地址的偏移量的范围为移量的范围为00HFFH(无符号数)。(无符号数)。MCS-51单单片机共有以下三条变址寻址指令:片机共有以下三条变址寻址指令: MOVC A, A+PC ;(A)(A)+(PC)+1 MOVC A, A+DPTR ;(A)(A)+(DPTR) JMP A+DPTR ;(PC
21、)(A)+(DPTR) 2.2 MCS-512.2 MCS-51单片机的寻址方式单片机的寻址方式 2.2.6 相对寻址相对寻址定义定义:将程序计数器:将程序计数器PCPC的当前值(取出本条指令后的的当前值(取出本条指令后的PCPC值)与指值)与指令第二个字节给出的偏移量(令第二个字节给出的偏移量(relrel)相加,形成新的转移目标地址。)相加,形成新的转移目标地址。称为相对寻址方式。称为相对寻址方式。特点特点:相对寻址方式是为实现程序的相对转移而设计的,为相对:相对寻址方式是为实现程序的相对转移而设计的,为相对转移指令所使用,其指令码中含有相对地址偏移量,能生成浮动转移指令所使用,其指令码中
22、含有相对地址偏移量,能生成浮动代码。代码。如:如: SJMP rel ; ; (PCPC)(PCPC) + 2 + rel+ 2 + rel相对转移指令的目的地址指令地址指令字节数偏移量相对转移指令的目的地址指令地址指令字节数偏移量寻址范围寻址范围:只能对程序存储器:只能对程序存储器ROMROM进行寻址。相对地址偏移量进行寻址。相对地址偏移量(relrel)是一个带符号的)是一个带符号的8 8位二进制补码,其取值范围为位二进制补码,其取值范围为 128128127127(以(以PCPC为中间的为中间的256256个字节范围)。个字节范围)。 2.2 MCS-512.2 MCS-51单片机的寻址
23、方式单片机的寻址方式 2.2.7 位寻址位寻址定义定义:指令中给出的操作数是一个可单独寻址的位地址,:指令中给出的操作数是一个可单独寻址的位地址,这种寻址方式称为位寻址方式。这种寻址方式称为位寻址方式。特点特点:位寻址是直接寻址方式的一种,其特点是对:位寻址是直接寻址方式的一种,其特点是对8 8位位二进制数中的某一位的地址进行操作。二进制数中的某一位的地址进行操作。寻址范围寻址范围:片内:片内RAMRAM低低128B128B中位寻址区、部分中位寻址区、部分SFRSFR(其中(其中有有8383位可以位寻址)。位可以位寻址)。可位寻址的位地址的表示形式如下:可位寻址的位地址的表示形式如下:(1 1
24、)直接使用位地址形式。如:)直接使用位地址形式。如: MOV 00H, C ;MOV 00H, C ;(00H00H)(C Cy y) 其中:其中:00H00H是片内是片内RAMRAM中中20H20H地址单元的第地址单元的第0 0位。位。2.2 MCS-512.2 MCS-51单片机的寻址方式单片机的寻址方式 (2 2)字节地址加位序号的形式。如:)字节地址加位序号的形式。如: MOV 20H.0, C ; ; (20H.020H.0)(C Cy y) 其中:其中:20H.020H.0是片内是片内RAMRAM中中20H20H地址单元的第地址单元的第0 0位。位。(3 3)位的符号地址(位名称)
25、的形式。对于部分特殊)位的符号地址(位名称)的形式。对于部分特殊功能寄存器,其各位均有一个特定的名字,所以可以用功能寄存器,其各位均有一个特定的名字,所以可以用它们的位名称来访问该位。如:它们的位名称来访问该位。如: ANL C, P ; ; (C C) (C C)(P P) 其中:其中:P P是是PSWPSW的第的第0 0位,位,C C是是PSWPSW的第的第7 7位。位。 (4 4)字节符号地址(字节名称)加位序号的形式。对)字节符号地址(字节名称)加位序号的形式。对于部分特殊功能寄存器(如状态标志寄存器于部分特殊功能寄存器(如状态标志寄存器PSWPSW),还),还可以用其字节名称加位序号
26、形式来访问某一位。如:可以用其字节名称加位序号形式来访问某一位。如: CPL PSW.6 ; ; (ACAC) ( ) 其中:其中: PSW.6PSW.6表示该位是表示该位是PSWPSW的第的第6 6位。位。AC 2.2 MCS-512.2 MCS-51单片机的寻址方式单片机的寻址方式 例题例题1 指出下列指令的寻址方式指出下列指令的寻址方式 MOV A,R1 ;(A)(R1) 寄存器寻址寄存器寻址 ADD A,#05H ; (A)(A)+立即数立即数 05H 立即寻址立即寻址 MOV A,R1 ; (A) (R1) 寄存器间接寻址寄存器间接寻址 MOV 30H,4AH ;( 30H )(4A
27、H) 直接寻址直接寻址 MOVC A,A+DPTR ;(A)(A)+(DPTR) 变址寻址变址寻址 SJMP LP ; (PC)(PC)+ 2 + 偏移量偏移量 相对寻址相对寻址 MOV 65H, C ;(65H)(Cy) 位寻址位寻址2.3 MCS-512.3 MCS-51单片机的指令系统单片机的指令系统 MCS-51指令系统使用指令系统使用44种助记符,它们代表着种助记符,它们代表着33种功能,可以实现种功能,可以实现51种操作。指令助记符与操作数种操作。指令助记符与操作数的各种可能的寻址方式的结合一共可构造出的各种可能的寻址方式的结合一共可构造出111条指条指令。令。 MCS-51单片机
28、指令系统按其功能可分为数据传单片机指令系统按其功能可分为数据传送类指令、算术运算类指令、逻辑运算和移位类指令、送类指令、算术运算类指令、逻辑运算和移位类指令、控制转移类指令和位操作类指令五大类。控制转移类指令和位操作类指令五大类。学习指令系统时,应注意:学习指令系统时,应注意:(1 1)指令的格式、功能)指令的格式、功能 。(2 2)操作码的含义,操作数的表示方法。)操作码的含义,操作数的表示方法。(3 3)寻址方式,源、目的操作数的范围。)寻址方式,源、目的操作数的范围。(4 4)对标志位的影响。)对标志位的影响。(5 5)指令的适用范围。)指令的适用范围。(6 6)正确估算指令的字节数。)
29、正确估算指令的字节数。 一般地一般地: : 操作码占操作码占1 1字节;操作数中,直接地址字节;操作数中,直接地址derictderict占占1 1字节,字节,#data#data占占1 1字节,字节,#data16#data16占两字节;操占两字节;操作数中的作数中的A A、B B、R0R0R7R7、 R Ri i、DPTRDPTR、 A+ DPTR A+ DPTR、 A+ PC A+ PC等均隐含在操作码中。等均隐含在操作码中。2.2 MCS-512.2 MCS-51单片机的寻址方式单片机的寻址方式 2.3.1 数据传送指令数据传送指令 CPU在进行算术和逻辑操作时,绝大多数指令都有操作数
30、,在进行算术和逻辑操作时,绝大多数指令都有操作数,所以数据传送是一种最基本、最主要的操作。所以数据传送是一种最基本、最主要的操作。 数据传送指令共数据传送指令共29条,可分为内部条,可分为内部RAM数据传送、外部数据传送、外部RAM数据传送、程序存储器数据传送、数据交换和堆栈操作等数据传送、程序存储器数据传送、数据交换和堆栈操作等五类。五类。 寻址范围寻址范围:累加器累加器A、片内、片内RAM、SFR、片外、片外RAM。 功能功能:(目的地址)(目的地址)(源地址)。(源地址)。 可表示为可表示为: 源地址单元的内容不变。源地址单元的内容不变。 对标志位的影响对标志位的影响:除以累加器除以累加
31、器A为目的操作数的数据传送指令对为目的操作数的数据传送指令对P标志位有影响外,其余均不影响标志位。标志位有影响外,其余均不影响标志位。 1内部RAM数据传送指令(16条) 格式:格式: MOV , 其中:其中: 表示目的操作数,表示目的操作数, 表示源操作数。表示源操作数。范围:范围:源、目的操作数均在片内源、目的操作数均在片内RAM、SFR中。中。指令形式:指令形式:按目的操作数可将内部数据传送指令分为以下几类。按目的操作数可将内部数据传送指令分为以下几类。(1 1)以累加器)以累加器A A为目的操作数(为目的操作数(4 4条)条) MOV A , 其中:其中: 包括包括Rn、Ri、dire
32、ct、#data。(各个符号。(各个符号的意义见的意义见2.1.3节指令中的常用符号节指令中的常用符号 ,以下同),以下同) 只影响只影响PSW中的中的P标志位,不影响其他标志位。标志位,不影响其他标志位。 (2 2)以工作寄存器)以工作寄存器RnRn为目的操作数(为目的操作数(3 3条)条) MOV Rn , 其中:其中: 包括包括A、direct、#data 。(3 3)以直接地址单元为目的操作数()以直接地址单元为目的操作数(5 5条)条) MOV direct , 其中:其中: 包括包括A、Rn、Ri、direct 、#data 。(4 4)以间址寄存器)以间址寄存器RiRi为目的操作
33、数(为目的操作数(3 3条)条) MOV Ri , 其中:其中: 包括包括A、direct 、#data 。(5 5)1616位数据传送指令(位数据传送指令(1 1条)条) MOV DPTR , #data16注:注:(2)、()、(3)、)、(4)、()、(5)均不影响)均不影响标志位。标志位。 内部数据传送指令内部数据传送指令的传送关系如右图所示。的传送关系如右图所示。2 2外部外部RAMRAM数据传送指令(数据传送指令(4 4条)条) CPUCPU与外部数据存储器之间进行数据传送时,必须使用与外部数据存储器之间进行数据传送时,必须使用外部传送指令,只能通过累加器外部传送指令,只能通过累加
34、器A A,采用寄存器间接寻址(用,采用寄存器间接寻址(用R0, R0, R1R1和和DPTRDPTR三个间接寻址的寄存器)方式完成。三个间接寻址的寄存器)方式完成。 指令格式指令格式: MOVX A , MOVX A , MOVX , AMOVX , A 其中其中: 、 包括包括DPTRDPTR、RRi i。R Ri i(R0, R1R0, R1)只能访问片外只能访问片外RAMRAM的低的低256256个单元;个单元;DPTRDPTR可以访问片外可以访问片外RAMRAM的全部的全部64KB64KB的空间。的空间。 对标志位的影响对标志位的影响: MOVX A , MOVX A , 指令只影响指
35、令只影响PSWPSW中的中的P P标标志位,不影响其他标志位;志位,不影响其他标志位; MOVX , AMOVX , A指令不影响标志指令不影响标志位。位。3 3程序存储器(程序存储器(ROMROM)数据传送指令(查表指令)()数据传送指令(查表指令)(2 2条)条) 程序存储器的数据传送是单向的,并且只能读到累加器程序存储器的数据传送是单向的,并且只能读到累加器A A中。中。这类指令专门用于查表,又称为查表指令。这类指令专门用于查表,又称为查表指令。 指令格式:MOVC A , A+DPTPMOVC A , A+DPTP ; ;(A A)(A A)+ +(DPTRDPTR) MOVC A ,
36、 A+PCMOVC A , A+PC ; ;(PCPC)(PCPC)+1 +1 (A A)(A A)+ +(PCPC) 两条指令的异同:其功能完全相同,但使用中存在着差异。其功能完全相同,但使用中存在着差异。 (1 1)查表的位置要求不同)查表的位置要求不同 采用采用DPTRDPTR作为基地址寄存器,表可以放在作为基地址寄存器,表可以放在64KB64KB程序存储器空程序存储器空间的任何地址,使用方便,故称为远程查表。间的任何地址,使用方便,故称为远程查表。 采用采用PCPC作为基地址寄存器,具体的表在程序存储器中只能在作为基地址寄存器,具体的表在程序存储器中只能在查表指令后的查表指令后的256
37、B256B的地址空间中,使用有限制,故称为近程查的地址空间中,使用有限制,故称为近程查表。表。 (2 2)偏移量的计算方法不同)偏移量的计算方法不同 采用采用DPTRDPTR作为基地址寄存器,查表地址为(作为基地址寄存器,查表地址为(A A)+ +(DPTRDPTR)。采用)。采用PCPC作为基地址寄存器,查表地址为(作为基地址寄存器,查表地址为(A A)+ +(PCPC)+1+1。因此偏移量的计算方法不同。因此偏移量的计算方法不同。 采用采用DPTRDPTR作为基地址寄存器,作为基地址寄存器,A A为欲查数值距离为欲查数值距离表首地址的值;采用表首地址的值;采用PCPC作为基地址寄存器,作为
38、基地址寄存器, A A的值必的值必须预先设置为:须预先设置为: A A的值的值= =表首地址当前指令的表首地址当前指令的PCPC值值1 1 数据传输时,若需要保存目的操作数,则经常采数据传输时,若需要保存目的操作数,则经常采用数据交换指令。用数据交换指令。(1 1)半字节数据交换指令()半字节数据交换指令(2 2条)条) 指令格式: SWAP ASWAP A ; ;(A A)3 30 0(A A)7 74 4 XCHD A , RiXCHD A , Ri ; ;(A A)3 30 0((Ri)(Ri))3 30 0 (2 2)字节交换指令()字节交换指令(3 3条)条) 指令格式:指令格式:X
39、CH A , XCH A , 其中:其中: 包括包括RnRn、RiRi、direct direct 。4 4数据交换指令(数据交换指令(5 5条)条)指令格式:指令格式: PUSH direct ; SP(SP)+1 , (SP)(direct) POP derect ;(direct)(SP) , SP(SP)1特点:特点:堆栈操作指令是一种特殊的数据传送指令,是根据栈指针SP中的栈顶地址进行数据操作。堆栈操作指令的实质是以栈指针SP为间址寄存器的间址寻址方式。堆栈区应避开使用的工作寄存器区和其他需要使用的数据区,系统复位后,SP的初始值为07H。为了避免重叠,一般初始化时要重新设置SP。
40、5 5堆栈操作指令(堆栈操作指令(2 2条)条) 功能:功能:实现RAM单元数据送入栈顶或由栈顶取出数据送至RAM单元。适用场合:适用场合:用于执行中断、子程序调用、参数传递等程序的断点保护和现场保护。书写方式:书写方式:堆栈操作指令是直接寻址指令,直接地址不能是寄存器名,因此应注意指令的书写格式。例如: PUSH ACC(不能写成PUSH A) POP 00H (不能写成POP R0)2.3.2 2.3.2 算术运算指令算术运算指令 算术运算指令的两个参与运算的操作数,一个存放在累加器A中(此操作数也为目的操作数);一个存放在R0R7或Ri(片内RAM)中,或是#data(立即数)。 算术运
41、算指令可以分为加法指令、带进位的加法指令、带借位的减法指令、十进制调整指令、加1指令、减1指令、乘除指令。 1. 1. 加法指令(加法指令(4 4条)条) 指令格式:指令格式: ADD A ,ADD A , ; (A)(A)+ 其中:其中: 包括Rn、Ri、direct、#data。对标志位的影响:对标志位的影响:ADD对PSW中的所有标志位均产生影响。 2. 2. 带进位的加法指令(带进位的加法指令(4 4条)条) 指令格式:指令格式: ADDC A ,ADDC A , ; (A)(A)+ + (Cy) 其中:其中: 包括Rn、Ri、direct、#data。对标志位的影响:对标志位的影响:
42、ADDC对PSW中的所有标志位均产生影响。 3. 3. 带借位的减法指令(带借位的减法指令(4 4条)条) 指令格式:指令格式: SUBB A ,SUBB A , ; (A)(A) (Cy) 其中:其中: 包括Rn、Ri、direct、#data。对标志位的影响:对标志位的影响:SUBB对PSW中的所有标志位均产生影响。 注意:注意:MCS-51指令系统中没有不带借位的减法指令,欲实现不带借位的减法计算,应预先置Cy=0(利用CLR C指令),然后利用带借位的减法指令SUBB实现计算。 4. 4. 十进制调整指令(十进制调整指令(1 1条)条) 功能功能:跟在加法指令ADD或ADDC后面,对运
43、算结果的十进制数进行BCD码修正,使它调整为压缩的BCD码数,以完成十进制加法运算功能。 特点特点:十进制调整指令也称为BCD码修正指令,这是一条专用指令。两个压缩的BCD码按二进制数相加后必须经本指令调整才能得到压缩的BCD码的和。源操作数只能在累加器A中,结果存入A中。 指令格式:DA A 注意注意:十进制调整指令不能对减法指令进行修正。BCD码减法必须采用BCD补码运算法则,变减法为补码加法(被减数+减数的补码,减数的补码=9AH减数)。然后对其进行十进制调整来实现。 5. 5. 加加1 1指令(指令(5 5条)条) 功能功能:加1指令又称为增量指令,其功能是使操作数所指 定的单元的内容
44、加1 。指令格式指令格式:INC INC ; + 1 其中: 即是源操作数又是目的操作数(即只有一个操作数),包括 A、Rn、direct、Ri、 DPTR 。对标志位的影响对标志位的影响:除对累加器A操作影响P标志位外,其他操作均不影响PSW的各标志位。 6. 6. 减减1 1指令(指令(4 4条)条) 功能功能:减1指令又称为减量指令,其功能是使操作数所指定的单元的内容减1 。指令格式指令格式:DEC DEC ; 1其中其中: 即是源操作数又是目的操作数(即只有一个操作数),包括 A、Rn、direct、Ri。对标志位的影响对标志位的影响:同加1指令。7. 7. 乘除指令(乘除指令(2 2
45、条)条) 功能功能:实现乘法或除法操作。特点特点:乘除指令在MCS-51指令系统中执行时间最长,均为四周期指令。指令格式指令格式: MUL ABMUL AB ;(B)(A)(A)(B) DIV ABDIV AB ; (A)(A)/(B)(B)对标志位的影响对标志位的影响:乘除指令影响PSW中的Cy, OV, P标志位。其中,Cy位总是被清0的,P是由累加器A中1的个数的奇偶性决定的。乘法运算中,若乘积大于FFH,则OV标志位置1,否则清0。除法运算中,若除数为0,则OV标志位置1,否则清0。 2.3.3 2.3.3 逻辑运算和移位指令逻辑运算和移位指令 对标志位的影响对标志位的影响:逻辑运算和
46、移位指令中除了两条带进位的循环移位指令外,其余均不影响PSW中的各标志位。但当目的操作数是累加器A时,影响PSW中的奇偶校验位P。 常用的逻辑运算和移位类指令有常用的逻辑运算和移位类指令有:逻辑与、逻辑或、逻辑异或、循环移位、清0、求反(非)等24条指令,它们的操作数都是8位的。逻辑运算都是按位进行的,除用于逻辑运算外,还可用于模拟各种数字逻辑电路的功能,进行逻辑电路的设计。1 1逻辑与运算指令(逻辑与运算指令(6 6条)条) 功能功能:实现两个操作数的逻辑与。指令格式指令格式:ANL A , ANL A , 其中其中: 包括Rn、Ri、direct、#data。 ANL direst , A
47、NL direst , 其中其中: 包括A、#data。适用场合适用场合:实现逻辑与,主要用于操作数的某些位不变(这些位与“1”),某些位置0(这些位与“0”)。 功能功能:实现两个操作数的逻辑或。指令格式指令格式:ORL A , ORL A , 其中其中: 包括Rn、Ri、direct、#data。 ORL direst , ORL direst , 其中其中: 包括A、#data。适用场合适用场合:实现逻辑或,主要用于操作数的某些位不变(这些位或“0”),某些位置1(这些位或“1”)。2 2逻辑或运算指令(逻辑或运算指令(6 6条)条)功功 能能:实现两个操作数的逻辑异或。指令格式指令格式
48、:XRL A , XRL A , 其中其中: 包括Rn、Ri、direct、#data。 XRL direst , XRL direst , 其中其中: 包括A、#data。适用场合适用场合:实现逻辑异或,主要用于操作数的某些位不变(这些位异或“0”),某些位取反(这些位异或“1”)。3 3逻辑异或运算指令(逻辑异或运算指令(6 6条)条) MCS-51单片机的循环移位指令共有不带进位的循环左、右移位(操作码为RL, RR)和带进位的循环左、右移位(操作码为RLC, RRC)指令4条。特点特点:只能对累加器A进行循环移位。指令格式指令格式: 操作码 A功能功能:累加器A中的数据逐位左移一位相当
49、于原内容乘2,而逐位右移一位相当于原内容除以2。循环移位指令示意图如下页图所示。4 4循环移位指令(循环移位指令(4 4条)条)A4 4循环移位指令(循环移位指令(4 4条)条)指令格式指令格式: CLR ACLR A ;(A)00H CPL ACPL A ;(A)( )特特 点点:可以节省存储空间,提高程序执行效率。 对标志位的影响对标志位的影响:CLR A指令只影响PSW的P标志位,CPL A指令不影响PSW各标志位。 5 5累加器清累加器清0 0与取反指令(与取反指令(2 2条)条) A2.3.4 2.3.4 控制转移指令控制转移指令 功能功能: 改变程序计数器PC中的内容,控制程序执行
50、的流向,实现程序分支转向。 为了控制程序的执行方向,MCS-51单片机提供了17条控制转移指令。对标志位的影响对标志位的影响: 除了CJNE影响PSW的进位标志位Cy外,其余均不影响PSW的各标志位。 1 1无条件转移指令(无条件转移指令(4 4条)条) 定义定义:不规定条件的程序转移称为无条件转移指令。 指令格式指令格式:长转移指令: LJMP addr16 ; (PC)addr150绝对转移指令: AJMP addr11 ;(PC)(PC)+2, PC 100addr11相对(短)转移指令:SJMP rel ;(PC)(PC)+2+rel间接(散)转移指令:JMP A+DPTR ;(PC)