第三章指令系统_第1页
第三章指令系统_第2页
第三章指令系统_第3页
第三章指令系统_第4页
第三章指令系统_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第3章 AT89C51的指令系统1单片机与嵌入式系统单片机与嵌入式系统u介绍指令系统介绍指令系统寻址方式寻址方式u对对111111条条基本指令基本指令按功能分类详细讲解按功能分类详细讲解。本章内容概要:本章内容概要:指令指令是是CPU按照人们的意图来完成某种操作的命令,它按照人们的意图来完成某种操作的命令,它以英文名称或缩写形式作为以英文名称或缩写形式作为助记符助记符。汇编语言指令汇编语言指令用助记符、符号地址、标号等表示的书写程用助记符、符号地址、标号等表示的书写程序的语言。序的语言。掌握汇编语言指令是程序设计的掌握汇编语言指令是程序设计的基础。基础。单片机与嵌入式系统单片机与嵌入式系统3第

2、第3章章 目录目录3.1 3.1 指令系统概述指令系统概述3.2 3.2 指令格式指令格式3.3 3.3 指令系统的寻址方式指令系统的寻址方式3.4 AT89C513.4 AT89C51指令系统分类介绍指令系统分类介绍 3.4.1 3.4.1 数据传送类指令数据传送类指令 3.4.2 3.4.2 算术运算类指令算术运算类指令 3.4.3 3.4.3 逻辑操作类指令逻辑操作类指令 3.4.4 3.4.4 控制转移类指令控制转移类指令 3.4.5 3.4.5 位操作类指令位操作类指令单片机与嵌入式系统单片机与嵌入式系统3.1 3.1 指令系统概述指令系统概述复杂指令集复杂指令集。按按所占字节分所占

3、字节分,分,分三种三种:(1 1)单字节指令)单字节指令4949条;条;(2 2)双字节指令)双字节指令4545条;条;(3 3)三字节指令)三字节指令1717条。条。按按执行时间来分执行时间来分,分三种:,分三种:(1 1)1 1个个机器周期(机器周期(1212个时钟振荡周期)的指令个时钟振荡周期)的指令6464条条;(2 2)2 2个个机器周期指令机器周期指令4545条条;(3 3)4 4个个机器周期机器周期乘、除指令。乘、除指令。412MHz晶振,每个机器周期为晶振,每个机器周期为1 s。单片机与嵌入式系统单片机与嵌入式系统3.2 3.2 指令格式指令格式(通常由两部分组成)(通常由两部

4、分组成)操作码操作码指令进行什么指令进行什么操作操作。操作数操作数指令操作的指令操作的对象对象。可能是一具体数据,也可能是。可能是一具体数据,也可能是指出到哪里取得数据的地址或符号。指出到哪里取得数据的地址或符号。5AT89C51一大特点一大特点是在硬件结构中有一个是在硬件结构中有一个位处理机位处理机,指令系,指令系统中设计了一个处理统中设计了一个处理位变量位变量的的指令子集指令子集。指令长度不同,格式也就不同。指令长度不同,格式也就不同。u单字节指令:操作码和操作数同在一个字节中。单字节指令:操作码和操作数同在一个字节中。u双字节指令:一个字节为操作码,另一个字节是操作数。双字节指令:一个字

5、节为操作码,另一个字节是操作数。u三字节指令:操作码占一个字节,操作数占二个字节。三字节指令:操作码占一个字节,操作数占二个字节。单片机与嵌入式系统单片机与嵌入式系统63.3 指令系统的寻址方式指令系统的寻址方式寻址方式寻址方式在指令中说明操作数所在地址的方法。在指令中说明操作数所在地址的方法。一般来说,寻址方式越多,功能就越强,灵活性则越大,一般来说,寻址方式越多,功能就越强,灵活性则越大,指令系统就越复杂。指令系统就越复杂。寻址方式所要解决的主要问题寻址方式所要解决的主要问题就是如何在整个存储器和寄就是如何在整个存储器和寄存器的寻址空间内快速地存器的寻址空间内快速地找到指定的地址单元找到指

6、定的地址单元。51系列的指令系统有系列的指令系统有7种种寻址方式。寻址方式。单片机与嵌入式系统单片机与嵌入式系统1 1寄存器寻址方式寄存器寻址方式指令中的操作数为某一寄存器的内容。指令中的操作数为某一寄存器的内容。例如:例如:MOVMOVA A,R Rn n ;(R ;(Rn n) )A A,n n =0=07 77本寻址方式的寻址范围:本寻址方式的寻址范围:(1 1)4 4组通用工作寄存区共组通用工作寄存区共3232个工作寄存器。但只对个工作寄存器。但只对当前工当前工作寄存器区作寄存器区的的8 8个工作寄存器寻址,指令中的寄存器名称只能个工作寄存器寻址,指令中的寄存器名称只能是是R0R0R7

7、R7。(2 2)部分特殊功能寄存器,如累加器)部分特殊功能寄存器,如累加器A A、寄存器、寄存器B B以及数据指以及数据指针寄存器针寄存器DPTRDPTR等。等。把把R Rn n中的源操作数送入到累加器中的源操作数送入到累加器A A中。由于指令指定了从寄存中。由于指令指定了从寄存器器R Rn n中取得源操作数,所以称为寄存器寻址方式。中取得源操作数,所以称为寄存器寻址方式。单片机与嵌入式系统单片机与嵌入式系统2 2直接寻址方式直接寻址方式指令中直接给出操作数的单元地址,该单元地址中的内容就指令中直接给出操作数的单元地址,该单元地址中的内容就是操作数,直接的操作数单元地址用是操作数,直接的操作数

8、单元地址用“directdirect”表示。表示。例如:例如:MOV AMOV A,direct direct 例如:例如:MOV AMOV A,40H40H ,把内部,把内部RAM 40HRAM 40H单元的内容传送到单元的内容传送到A A指令中两个操作数都可由直接寻址方式给出。指令中两个操作数都可由直接寻址方式给出。例如:例如:MOVMOVdirect1direct1,direct2direct28本寻址方式的寻址范围:本寻址方式的寻址范围:u内部内部RAMRAM的的128128个单元个单元u特殊功能寄存器。(特殊功能寄存器。(可以单元地址或寄存器符号给出可以单元地址或寄存器符号给出)如:

9、如:MOV A,80H 等价于等价于 MOV A,P0直接寻址直接寻址是访问片内所有是访问片内所有特殊功能寄存器特殊功能寄存器的的唯一寻址方式。唯一寻址方式。单片机与嵌入式系统单片机与嵌入式系统3. 3. 寄存器间接寻址方式寄存器间接寻址方式指令中给出寄存器,寄存器中内容是操作数存放单元的地址指令中给出寄存器,寄存器中内容是操作数存放单元的地址9u在寄存器名称前面加在寄存器名称前面加前缀标志前缀标志“”。u访问访问内部内部RAM(128B),外部外部RAM的低的低256个字节个字节 。 采用采用R0或或R1作为作为间址寄存器间址寄存器例如:例如: MOV AMOV A,RiRi ;i=0i=0

10、或或1 1 MOVX AMOVX A,RiRiu访问访问外部外部RAMRAM的的64K64K字节,采用字节,采用DPTRDPTR作为作为间址寄存器间址寄存器。 例如:例如: MOVX AMOVX A,DPTRDPTR单片机与嵌入式系统单片机与嵌入式系统4 4立即数寻址方式立即数寻址方式直接在指令中给出操作数直接在指令中给出操作数也称也称立即数立即数。为了与直接寻址指令中的直接地址加以区别,为了与直接寻址指令中的直接地址加以区别,需在操作数前需在操作数前加前缀标志加前缀标志“# #”。 例如:例如: MOV AMOV A,#40H#40H第一个字节是操作码,第二字节是立即数,就是放在程序存第一个

11、字节是操作码,第二字节是立即数,就是放在程序存储器内的常数。储器内的常数。10单片机与嵌入式系统单片机与嵌入式系统5 5基址寄存器加变址寄存器间址寻址方式基址寄存器加变址寄存器间址寻址方式以以DPTRDPTR或或PCPC作为作为基址寄存器基址寄存器,以累加器,以累加器A A作为作为变址寄存器变址寄存器,以两者内容相加形成的以两者内容相加形成的1616位位操作数的单元地址。操作数的单元地址。11本寻址方式的本寻址方式的指令有指令有3 3条条: MOVCMOVC A A,A+DPTRA+DPTR MOVC MOVC A A,A+PCA+PC JMP JMPA+DPTRA+DPTR专门针对程序存储器

12、专门针对程序存储器的寻址方式,寻址范围可达到的寻址方式,寻址范围可达到64KB64KB。u前两条指令适用于读程序存储器中固定的数据。前两条指令适用于读程序存储器中固定的数据。u第第3 3条为条为散转指令散转指令,A A中内容为程序运行后的动态结果,可中内容为程序运行后的动态结果,可根据根据A A中不同内容,实现跳向不同程序入口的跳转。中不同内容,实现跳向不同程序入口的跳转。单片机与嵌入式系统单片机与嵌入式系统6 6位寻址方式位寻址方式 AT89C51AT89C51具有位处理功能,可直接对数据位实现置具有位处理功能,可直接对数据位实现置1 1、清、清0 0、求、求反、传送、判跳和逻辑运算等操作,

13、为测控系统的应用提供反、传送、判跳和逻辑运算等操作,为测控系统的应用提供了最佳代码和速度,增强了实时性。了最佳代码和速度,增强了实时性。位地址一般以位地址一般以直接位地址直接位地址给出,位地址符号为给出,位地址符号为“bitbit”。例如:例如:MOV CMOV C,bitbit 其具体指令:其具体指令: MOV CMOV C,40H40H把位地址为把位地址为40H40H的值送到进位位的值送到进位位C C。12寻址范围:寻址范围:u内部内部RAMRAM中的位寻址区:中的位寻址区:位有两种位有两种等价等价的表示方法的表示方法: 位地址直接表示,如位地址直接表示,如 MOV C,MOV C,40H

14、 40H ; 字节单元地址的某位表示,如字节单元地址的某位表示,如 MOV C,MOV C,(28H).0(28H).0 ;单片机与嵌入式系统单片机与嵌入式系统 特殊功能寄存器中的可寻址位:特殊功能寄存器中的可寻址位:在指令中有在指令中有4 4种种表示方法表示方法直接使用位地址。直接使用位地址。 例如:例如:PSW.5PSW.5的位地址为的位地址为0D5H0D5H。b. b. 单元字节地址加位数单元字节地址加位数的表示方法。的表示方法。 例如:例如:(0D0H).5(0D0H).5。c. c. 特殊功能寄存器符号加位数特殊功能寄存器符号加位数的表示方法。的表示方法。 例如:例如:PSW.5PS

15、W.5。d. d. 位名称的表示位名称的表示方法。方法。 例如:例如:PSW.5PSW.5是是F0F0标志位,可使用标志位,可使用F0F0表示该位。表示该位。单片机与嵌入式系统单片机与嵌入式系统7 7相对寻址方式相对寻址方式相对寻址的转移指令使用。相对寻址的转移指令使用。指令给出了地址偏移量指令给出了地址偏移量 “ “relrel” ” ,PCPC的当前值加上偏移量的当前值加上偏移量relrel形成形成程序转移程序转移的的目的地址目的地址: 目的地址目的地址 = = 转移指令所在的地址转移指令所在的地址+ +转移指令的字节数转移指令的字节数+rel+rel 偏移量偏移量rel是带符号是带符号8

16、位二进制补码数,范围:位二进制补码数,范围:128+127。程序转移范围程序转移范围是以转移指令的是以转移指令的下条指令首地址下条指令首地址为基准地址,相为基准地址,相对偏移在对偏移在128+127之间。之间。例如,例如, SJMP rel SJMP rel程序要转移到该指令的程序要转移到该指令的PCPC值加值加2 2再加上再加上relrel的目的地址处。编的目的地址处。编写程序时,只需在转移指令中直接写要转向的地址标号。写程序时,只需在转移指令中直接写要转向的地址标号。单片机与嵌入式系统单片机与嵌入式系统3.4 AT89C513.4 AT89C51指令系统分类介绍指令系统分类介绍共共1111

17、11条条指令,按功能分为指令,按功能分为五类五类:(1 1)数据传送类()数据传送类(2828条条)(2 2)算术运算类()算术运算类(2424条条)(3 3)逻辑操作类()逻辑操作类(2525条条)(4 4)控制转移类()控制转移类(1717条条)(5 5)位操作类()位操作类(1717条条)15单片机与嵌入式系统单片机与嵌入式系统Rn:Rn: 当前寄存器区的当前寄存器区的8 8个工作寄存器个工作寄存器R0R0R7(n=0R7(n=07)7)。Ri:Ri: 当前寄存器区中可作间接寻址寄存器的当前寄存器区中可作间接寻址寄存器的2 2个寄存器个寄存器R0R0、 R1(i=0,1)R1(i=0,1

18、)。Direct:Direct:直接地址,即直接地址,即8 8位的内部位的内部RAMRAM或特殊功能寄存器的或特殊功能寄存器的字字 节节地址。地址。#data:#data:包含在包含在指令中的指令中的8 8位立即数位立即数。#data16:#data16:包含在包含在指令中的指令中的1616位立即数位立即数。Rel:Rel:相对转移指令中的偏移量,为相对转移指令中的偏移量,为8 8位的带符号补码数。位的带符号补码数。指令中符号的意义(指令中符号的意义(1):单片机与嵌入式系统单片机与嵌入式系统DPTRDPTR:数据指针数据指针,可用作,可用作1616位的数据地址寄存器。位的数据地址寄存器。Bi

19、tBit: 内部内部RAMRAM或特殊功能寄存器中的或特殊功能寄存器中的直接寻址位直接寻址位。C C(或(或CyCy):):进位标志位或位处理机中的累加器。进位标志位或位处理机中的累加器。Addr11Addr11:1111位目的地址位目的地址Addr16:Addr16: 1616位目的地址位目的地址 :间接寻址寄存器前缀,如间接寻址寄存器前缀,如RiRi,A+DPTRA+DPTR(X)(X): 片内片内RAMRAM的地址或寄存器的地址或寄存器(X)(X):由由X X寻址的单元中的内容寻址的单元中的内容。 :箭头右边的内容被箭头左边的内容所取代。箭头右边的内容被箭头左边的内容所取代。指令中符号的

20、意义(指令中符号的意义(2):单片机与嵌入式系统单片机与嵌入式系统3.4.1 3.4.1 数据传送类指令数据传送类指令18一、内部数据存储器数据传送指令一、内部数据存储器数据传送指令 指令格式:指令格式: MOV MOV 目的操作数,源操作数目的操作数,源操作数 功能功能: 数据数据“复制复制” ” ,而,而不是不是“搬家搬家” 不影响标志位不影响标志位,只有,只有A A为目的操作数时为目的操作数时影响奇偶标志位影响奇偶标志位P P1以累加器为目的操作数的指令以累加器为目的操作数的指令寄存器寻址:寄存器寻址:MOV A,Rn; (Rn)A,n =07间接寻址:间接寻址:MOVA, R Ri i

21、 ; (R Ri i)A i =0,1直接寻址:直接寻址:MOVA,direct ; (direct)A立即寻址:立即寻址:MOVA,#data ; #dataA单片机与嵌入式系统单片机与嵌入式系统 例如:例如:MOVMOV A A,R6R6;(R6)(R6)A A,寄存器寻址,寄存器寻址MOVMOV A A,R0R0;(R0)(R0)A A,间接寻址,间接寻址MOVMOV A A,70H 70H ;(70H)(70H)A A,直接寻址,直接寻址MOVMOV A A,#78H#78H;78H78HA A,立即数寻址,立即数寻址192 2以以RnRn为目的操作数的指令为目的操作数的指令MOV M

22、OV Rn ,A A ;(A)(A)Rn ,n n =0=07 7MOV MOV Rn ,direct direct ;(direct)(direct)Rn ,n n =0=07 7MOV MOV Rn ,#data#data;#data#dataRn ,n n =0=07 7 把源操作数送入当前寄存器区的把源操作数送入当前寄存器区的R0R0R7R7中的某一寄存器。中的某一寄存器。单片机与嵌入式系统单片机与嵌入式系统3 3以直接地址以直接地址directdirect为目的操作数的指令为目的操作数的指令MOV directMOV direct,A A ; (A)(A)directdirectMO

23、V directMOV direct,R Rn n ; (R(Rn n) )directdirect,n n =0=07 7MOV direct1MOV direct1,direct2direct2 ;(direct2)(direct2)direct1direct1MOV directMOV direct,RRi i ; (R(Ri i)directdirect,i i =0=0,1 1MOV directMOV direct,#data #data ; #data#datadirectdirect20把源操作数送入直接地址指定的存储单元。把源操作数送入直接地址指定的存储单元。direct指的

24、是指的是内部内部RAM或或SFR地址。地址。单片机与嵌入式系统单片机与嵌入式系统4 4以寄存器间接地址为目的操作数的指令以寄存器间接地址为目的操作数的指令MOVMOVRRi i,A A;(A)(A)(R(Ri i), i i=0=0,1 1MOVMOVRRi i,direct direct ;(direct)(direct)(R(Ri i),i i=0=0,1 1MOVMOVRRi i,#data #data ;#data#data(R(Ri i), i i=0=0,1 1把源操作数内容送入把源操作数内容送入R0R0或或R1R1指定的存储单元中。指定的存储单元中。5 51616位数传送指令位数

25、传送指令 MOVMOVDPTRDPTR,#data16 #data16 ;#data16#data16DPTR DPTR 把把1616位立即数送入位立即数送入DPTRDPTR,用来设置数据存储器的地址指针。,用来设置数据存储器的地址指针。唯一的唯一的1616位数据的传送指令位数据的传送指令, ,立即数的立即数的高高8 8位位送入送入DPHDPH,立即,立即数的数的低低8 8位位送入送入DPLDPL。21单片机与嵌入式系统单片机与嵌入式系统例例 1 1:分析执行指令序列的每一条指令后的结果:分析执行指令序列的每一条指令后的结果: MOV A,#30HMOV A,#30H MOV 4FH,A MO

26、V 4FH,A MOV R0,#20H MOV R0,#20H MOV R0,4FH MOV R0,4FH MOV 21H,20H MOV 21H,20H 例例2 2 :将片内将片内30H30H单元内容和单元内容和40H40H单元内容交换的指令序列单元内容交换的指令序列 MOV 20H, 30HMOV 20H, 30H MOV 30H, 40H MOV 30H, 40H MOV 40H, 20H MOV 40H, 20H 说明:说明: MOVMOV指令的非法指令指令的非法指令 (1 1)一条指令出现两个寄存器)一条指令出现两个寄存器 (2 2)R0R0、R1R1作为寄存器间接寻址的寄存器作为寄

27、存器间接寻址的寄存器 (3 3)SFRSFR不能采用寄存器间接寻址不能采用寄存器间接寻址单片机与嵌入式系统单片机与嵌入式系统uDPTRDPTR为为1616位的数据指针,分为位的数据指针,分为DPHDPH和和DPLDPL。操作十分灵活方便。操作十分灵活方便。u对于所有对于所有MOVMOV类指令,累加器类指令,累加器A A是一个特别重要的是一个特别重要的8 8位寄存器位寄存器uR Rn n为所选择的寄存器组中的为所选择的寄存器组中的R0R0R7R7u直接地址直接地址directdirect为内部为内部RAMRAM的的00H00H7FH7FH和特殊功能寄存器和特殊功能寄存器(地址范围(地址范围80H

28、80HFFHFFH)u在间接地址中,用在间接地址中,用R0R0或或R1R1作为内部作为内部RAMRAM的地址指针,可访问的地址指针,可访问内部内部RAMRAM的的00H00H7FH7FH共共128128个单元。个单元。几点说明:几点说明:单片机与嵌入式系统单片机与嵌入式系统 二、外部数据存储器数据传送指令二、外部数据存储器数据传送指令 片外数据存储器和累加器之间的数据传送片外数据存储器和累加器之间的数据传送 指令格式:指令格式:MOVX MOVX 目的操作数,源操作数目的操作数,源操作数 DPTRDPTR为地址指针:为地址指针: MOVX A, DPTRMOVX A, DPTR; A (DPT

29、R),; A (DPTR),读外部读外部RAM/IORAM/IO MOVX DPTR, AMOVX DPTR, A ; (DPTR)(A); (DPTR)(A),写外部,写外部RAM/IORAM/IO RiRi为地址指针:为地址指针: MOVX A,RiMOVX A,Ri ; A (P2)(Ri),; A (P2)(Ri),读外部读外部RAM/IORAM/IO MOVX Ri,A MOVX Ri,A ; (P2)(Ri)(A),; (P2)(Ri)(A),写外部写外部RAM/IORAM/IO单片机与嵌入式系统单片机与嵌入式系统例例 : 将片外数据存储器将片外数据存储器2000H2000H单元内

30、容送到单元内容送到2100H2100H 说明:说明:片外数据存储器传送不能采用直接寻址方式片外数据存储器传送不能采用直接寻址方式 MOVX A, 2000HMOVX A, 2000H MOVX 2100H,2000H MOVX 2100H,2000H MOV DPTR,#2000HMOV DPTR,#2000H MOVX A,DPTR MOVX A,DPTR MOV DPTR,#2100H MOV DPTR,#2100H MOVX DPTR,A MOVX DPTR,A单片机与嵌入式系统单片机与嵌入式系统三、程序存储器数据传送指令三、程序存储器数据传送指令 查表指令用于读程序存储器中的数据表格查

31、表指令用于读程序存储器中的数据表格 指令格式:指令格式:MOVC AMOVC A,源操作数,源操作数 采用采用DPTRDPTR、PCPC作为基址寄存器实现变址寻址作为基址寄存器实现变址寻址 MOVC A,A+DPTR MOVC A,A+DPTR ; A(A)+(DPTR); A(A)+(DPTR),访问,访问64KB64KB程序程序 存储器任一单元的内容存储器任一单元的内容 MOVC A,A+PC MOVC A,A+PC ; A( (A)+(PC),; A( (A)+(PC),访问查表指令后面访问查表指令后面 的的256256个单元之内的内容个单元之内的内容例:(例:(A)=30H1000H:

32、 MOVC A,A+PC ;A为无符号整数为无符号整数执行结果:(执行结果:(1031H)A单片机与嵌入式系统单片机与嵌入式系统 2 2、半字节交换指令、半字节交换指令 XCHD A,Ri XCHD A,Ri ;累加器的低累加器的低4 4位与内部位与内部RAMRAM低低4 4位交换。位交换。 SWAP A SWAP A ;将累加器将累加器A A的高半字节(的高半字节(Acc.7Acc.7Acc.4Acc.4) 和低半字节(和低半字节(Acc.3Acc.3Acc.0Acc.0)互换)互换 例例1 1:将片内将片内30H30H单元内容和单元内容和40H40H单元内容交换的指令序列单元内容交换的指令

33、序列XCH A,40HXCH A,40HXCH A,30HXCH A,30HXCHXCHA,40HA,40H 四、交换指令四、交换指令 1 1、字节交换指令、字节交换指令 XCH A, Rn XCH A, Rn ;(A) (A) (Rn ) (Rn ) XCH A, direct XCH A, direct ;(A) (A) (direct ) (direct ) XCH A, Ri XCH A, Ri ;(A) (A) (Ri ) (Ri )单片机与嵌入式系统单片机与嵌入式系统例例2 2:将片内:将片内RAMRAM中中2AH2AH和和2BH2BH单元中数字的单元中数字的ASCASC码转换为压

34、缩码转换为压缩BCDBCD码后存入片内码后存入片内RAMRAM 20H20H单元。(若单元。(若2BH2BH单元的数字为高位)单元的数字为高位)要求:要求:操作:操作:AAAMOV A, #00H MOV A, #00H MOV R1, #2BH MOV R1, #2BH XCHD A, R1XCHD A, R1SWAP ASWAP A指令:指令:单片机与嵌入式系统单片机与嵌入式系统 MOV R0, #2AH MOV R0, #2AH XCHD A, R0 XCHD A, R0 XCH A, 20H XCH A, 20HAA操作:操作:指令:指令:单片机与嵌入式系统单片机与嵌入式系统6 6堆栈

35、操作指令堆栈操作指令内部内部RAMRAM中设定一个中设定一个后进先出后进先出的区域,称为的区域,称为堆栈堆栈。在特殊功。在特殊功能寄存器中有一个能寄存器中有一个堆栈指针堆栈指针SPSP,指示堆栈的栈顶位置。,指示堆栈的栈顶位置。30(1)进栈指令:)进栈指令: PUSH direct先将栈指针先将栈指针SP加加1,然后把,然后把direct中的内容送到中的内容送到SP指示的内部指示的内部RAM单元中。单元中。例如:例如:当当(SP)=60H(SP)=60H,(A)=30H(A)=30H,(B)=70H(B)=70H时,执行下列指令时,执行下列指令PUSH AccPUSH Acc;(SP)+1=

36、61H(SP)+1=61HSPSP,(A)(A)61H61HPUSH BPUSH B ;(SP)+1=62H(SP)+1=62HSPSP,(B)(B)62H62H结果:结果:(61H)=30H(61H)=30H,(62H)=70H(62H)=70H,(SP)=62H(SP)=62H。单片机与嵌入式系统单片机与嵌入式系统(2 2)出栈指令)出栈指令POPPOPdirectdirect将将SPSP指示的栈顶单元的内容送入指示的栈顶单元的内容送入directdirect字节中,字节中,SPSP减减1 1。31例如:例如:当当(SP)=62H(SP)=62H,(62H)=70H(62H)=70H,(6

37、1H)=30H(61H)=30H时,执行指令时,执行指令POP DPH POP DPH ;(SP)(SP)DPHDPH,(SP)-1(SP)-1SPSPPOP DPLPOP DPL;(SP)(SP)DPLDPL,(SP)-1(SP)-1SPSP结果为结果为(DPTR)=7030H(DPTR)=7030H,(SP)=60H(SP)=60H。单片机与嵌入式系统单片机与嵌入式系统 单字节的加、减、乘、除法指令;单字节的加、减、乘、除法指令; 执行的结果对执行的结果对CyCy、AcAc、OVOV、P P 标志位有影响。标志位有影响。 增增1 1和减和减1 1指令不影响上述标志。指令不影响上述标志。32

38、3.4.2 算术运算类指令算术运算类指令1 1不带进位加法指令不带进位加法指令 指令格式:指令格式: ADD A,ADD A,源操作数源操作数 共有共有4 4条加法运算指令:条加法运算指令: ADD A, Rn ;(A)+(Rn)AADD A, Rn ;(A)+(Rn)A,n=0n=07 7 ADD A, direct ;(A)+(direct)A ADD A, direct ;(A)+(direct)A ADD A, Ri ;(A)+(Ri)A,i=0,1 ADD A, Ri ;(A)+(Ri)A,i=0,1 ADD A, #data ; (A)+#dataA ADD A, #data ;

39、(A)+#dataA单片机与嵌入式系统单片机与嵌入式系统u8 8位加法指令的位加法指令的一个加数一个加数总是来自累加器总是来自累加器A A,而,而另一个加另一个加数数可由寄存器寻址、直接寻址、寄存器间接寻址和立即可由寄存器寻址、直接寻址、寄存器间接寻址和立即数寻址等不同的寻址方式得到。加的结果总是放在累加数寻址等不同的寻址方式得到。加的结果总是放在累加器器A A中。中。u使用本指令时,要注意累加器使用本指令时,要注意累加器A A中的运算结果中的运算结果对各个标志对各个标志位的影响:位的影响:33(1 1)如果)如果位位7 7有进位有进位,则进位标志,则进位标志CyCy置置1 1,否则,否则Cy

40、Cy清清0 0。(2)如果)如果位位3有进位有进位,辅助进位标志,辅助进位标志Ac置置1,否则否则Ac清清0。(3)如果)如果位位6有进位有进位,而,而位位7没有进位,没有进位,或者或者位位7有进位有进位,而,而位位6没有进位没有进位,则溢出标志位,则溢出标志位OV置置1,否则否则OV清清0。单片机与嵌入式系统单片机与嵌入式系统34 例:例:(A)=3BH(A)=3BH,PSW=0PSW=0,执行指令,执行指令 ADD A, #3BHADD A, #3BH后结果有关状后结果有关状态标志态标志 。 解:结果为解:结果为(A)=76H(A)=76H,Cy=Cy=0 0,Ac=Ac=1 1,OV=O

41、V=0 0,P=P=1 1, , PSW= PSW=0 01 1 000 000 0 0 0 0 1 1【例例3-23-2】(A)= 85H(A)= 85H,(R0)=20H(R0)=20H,(,(20H20H)=AFH=AFH 执行指令:执行指令:ADD AADD A,R0R0 运算式为:运算式为:结果结果:(A)=34H,Cy=1,Ac=1,OV=1,P=1。单片机与嵌入式系统单片机与嵌入式系统 4 4条指令:条指令:ADDC AADDC A,R Rn n ;(A)+(R(A)+(Rn n)+C)+CA A ,n n =0=07 7ADDC AADDC A,direct direct ;(

42、A)+(direct)+C(A)+(direct)+CA AADDC AADDC A,RRi i ;(A)+(R(A)+(Ri i)+C)+CA A,i i =0=0,1 1ADDC AADDC A,#data #data ;(A)+#data+C(A)+#data+CA A352 2带进位加法指令带进位加法指令 例:例:(A A)=9AH,=9AH,(R2R2)=E3H , PSW=0 =E3H , PSW=0 ,执行指令:,执行指令: ADDC A,R2 ADDC A,R2 后结果有关状态标志后结果有关状态标志 。 解:解:结果为结果为: :(A A)=7DH=7DH,Cy=Cy=1 1,

43、Ac=Ac=0 0,OV=OV=1 1,P=P=0 0 PSW= PSW=1 10 0 000 000 1 10 0 0 0单片机与嵌入式系统单片机与嵌入式系统例:例:1616位被加数位被加数X X和和Y Y,分别存放于片内,分别存放于片内RAM 31HRAM 31H、30H30H和和33H33H、32H32H,编写程序段求编写程序段求X X和和Y Y之和,并存放于之和,并存放于36H36H、35H35H、34H34H中。中。 31H30H33H32H0034H35H36H MOVMOVA,30HA,30H ADD ADDA,32HA,32H MOV MOV34H,A34H,A MOV A,3

44、1HMOV A,31H ADDC A,33H ADDC A,33H MOV 35H,A MOV 35H,A MOV A,#00H MOV A,#00H ADDC A,#00H ADDC A,#00H MOV 36H,A MOV 36H,A单片机与嵌入式系统单片机与嵌入式系统3 3增增1 1指令指令5 5条指令:条指令:INC AINC AINC RINC Rn n ;n n = 0= 07 7INC direct INC direct INC RINC Ri i ;i i =0=0,1 1 INC DPTRINC DPTRu把指令中所指出的变量增把指令中所指出的变量增1 1,不影响不影响PSW

45、PSW标志位标志位,INC AINC A 影响影响P P标志。标志。u指令指令“INC DPTRINC DPTR”,1616位数增位数增1 1指令。首先对低指令。首先对低8 8位指针位指针DPLDPL执行加执行加1 1,当溢出时,就对,当溢出时,就对DPHDPH的内容进行加的内容进行加1 1,不影响标志,不影响标志CyCy。37单片机与嵌入式系统单片机与嵌入式系统4 4十进制调整指令十进制调整指令(BCDBCD调整指令)调整指令)用于对用于对BCDBCD码加法运算结果的内容修正码加法运算结果的内容修正指令格式为:指令格式为: DA ADA An 只能对存放于累加器只能对存放于累加器A A中的运

46、算结果调整中的运算结果调整n 必须紧跟加法指令之后必须紧跟加法指令之后 38 例:例:有有两个压缩的两个压缩的BCDBCD数:(数:(A A)=56H,=56H,(R5R5)=67H=67H,进行,进行BCDBCD数数的加法程序段为:的加法程序段为: ADD A,R5ADD A,R5 DA A DA A 结果为:结果为: (A A)=23H=23H,Cy=1Cy=1 56+67=123 56+67=123,结果是正确的。,结果是正确的。 单片机与嵌入式系统单片机与嵌入式系统5 5带借位的减法指令带借位的减法指令(4(4条指令条指令) )SUBB ASUBB A,R Rn n ; (A)-(R(

47、A)-(Rn n)-Cy)-CyA A,n n =0=07 7SUBB ASUBB A,direct direct ; (A)-(direct)-Cy(A)-(direct)-CyA ASUBB ASUBB A,RRi i ; (A)-(R(A)-(Ri i)-Cy)-CyA A, i i =0=0,1 1SUBB ASUBB A,#data #data ; (A)-#data-Cy(A)-#data-CyA A39影响标志位影响标志位 例:例:若(若(A A)=5AH ,=5AH ,(R2R2)=5AH,Cy=0=5AH,Cy=0,执行指令,执行指令: : SUBB A,R2 SUBB A,

48、R2 结果:结果:(A A)=00H,Cy=0,Ac=0,OV=0=00H,Cy=0,Ac=0,OV=0,P=0P=0【例例3-53-5】(A)=C9H(A)=C9H,(R2)=54H(R2)=54H,Cy=1Cy=1,执行指令:,执行指令: SUBB ASUBB A,R2R2 结果:结果: (A)=74H(A)=74H,Cy=0Cy=0,Ac=0Ac=0,OV=1OV=1单片机与嵌入式系统单片机与嵌入式系统6减减1指令指令(4条)条)DEC A;(A)-1ADEC Rn ;(Rn)-1Rn,n=07DEC direct ;(direct)-1directDEC Ri ;(Ri)-1(Ri),

49、i =0,140【例例3-6】 (A)=0FH(A)=0FH,(R7)=19H(R7)=19H,(30H)=00H(30H)=00H,(R1)=40H(R1)=40H,(40H)=0FFH(40H)=0FFH,执行指令,执行指令DEC A;(A)-1ADEC R7;(R7)-1R7DEC 30H;(30H)-130HDEC R1 ;(R1)-1(R1)结果:结果:(A)=0EH(A)=0EH, P=1(R7)=18H(R7)=18H(30H)=0FFH(30H)=0FFH(40H)=0FEH(40H)=0FEH不影响标志位,不影响标志位, DEC A 影响影响P标志标志。单片机与嵌入式系统单片

50、机与嵌入式系统7乘法指令乘法指令MUL AB ;ABBA 积的低字节在累加器积的低字节在累加器A A中,高字节在中,高字节在B B中。如果积大于中。如果积大于255255,则,则OVOV置置1 1,否则,否则OVOV清清0 0。CyCy标志总是清标志总是清0 0。41 DIV AB DIV AB ;A/BAA/BA(商),余数(商),余数B B 影响影响OVOV、P P标志位,置标志位,置Cy=0Cy=0,若除数,若除数B B的内容为的内容为0 0,OVOV置置“1”1”,表示除法无意义。,表示除法无意义。 例例 (A)=FBH(A)=FBH,(B)=12H(B)=12H,执行指令:,执行指令

51、:DIV ABDIV AB 结果结果:(A)=0DH:(A)=0DH,(B)=11H(B)=11H,Cy=0Cy=0,OV=0OV=0,P=1P=18除法指令除法指令例:例:(A)=60H(A)=60H,(B)=C0H(B)=C0H,执行指令,执行指令 MUL MUL AB AB 结果结果:(A)=00H:(A)=00H,(B)=48H(B)=48H,Cy=0Cy=0,OV=1OV=1,P=0P=0单片机与嵌入式系统单片机与嵌入式系统1. 1. 简单逻辑操作指令简单逻辑操作指令 (1) CLR A (1) CLR A ; A A 0 0累加器累加器A A清清0 0。不影响。不影响CyCy、Ac

52、Ac、OVOV,只影响只影响P P标志标志P P。423.4.3 逻辑操作类指令逻辑操作类指令 (2) CPL A (2) CPL A ; A A A A 不影响状态标志不影响状态标志2. 2. 移位指令移位指令 (1) 8(1) 8位循环指令(小循环指令)位循环指令(小循环指令) 不影响状态标志不影响状态标志 左环移左环移 RL ARL A 右环移右环移 RR ARR A单片机与嵌入式系统单片机与嵌入式系统 (2) 9(2) 9位循环指令(大循环指令)位循环指令(大循环指令) 只影响只影响CyCy、P P状态标志状态标志带进位左环移带进位左环移: : RLC ARLC A带进位右环移带进位右

53、环移: RRC A 例例1: 1: 若若( A )=11000101,Cy=0( A )=11000101,Cy=0。执行指令。执行指令CPLA ; RLA ; RLCA ;(A)= (A)= (A)= Cy = Cy = Cy =0011101000111010011101000111010011101000111010000 00 00 0单片机与嵌入式系统单片机与嵌入式系统 例例2 2:采用移位指令将采用移位指令将21H21H和和20H20H单元的单元的1616位数扩大位数扩大2 2倍。倍。 数左移一位为原数的数左移一位为原数的2 2倍倍21H20H0020H20H.7Cy20H.721

54、HCLR CMOV A,20HRLC AMOV 20H,AMOV A,21H RLC A MOV 21H,A单片机与嵌入式系统单片机与嵌入式系统 ANL A,Rn ; ANL A,Rn ; (A A)(RnRn)A A,n=0n=07 7 ANL A,direct ; ANL A,direct ; (A A)(directdirect)A A ANL A,#data ; ANL A,#data ; (A A)#dataA#dataA ANL A,Ri ANL A,Ri ; ; (A A)( ((RiRi))A)A,i=0i=01 1 ANL direct,A ; ANL direct,A ;

55、(directdirect)(A)direct(A)direct ANL direct,#data ; ANL direct,#data ; (directdirect)#datadirect#datadirect3. 逻辑运算指令逻辑运算指令 不影响标志位不影响标志位,只有,只有A为目的操作数的指令为目的操作数的指令影响标志位影响标志位P。(1) 逻辑与指令逻辑与指令单片机与嵌入式系统单片机与嵌入式系统ORL A,Rn ORL A,Rn ;(A)(A)(RnRn)A A ,n=0n=07 7ORL A,direct ORL A,direct ;(A)(A)(directdirect)A AO

56、RL A,#data ORL A,#data ;(A) dataA(A) dataAORL A,Ri ORL A,Ri ; (A)(Ri)A(A)(Ri)A,i=0,1i=0,1ORL direct,A ORL direct,A ;(;(directdirect)(A)direct(A)directORL direct,#dataORL direct,#data ;(;(directdirect)#datadirect#datadirect(2)逻辑或指令)逻辑或指令单片机与嵌入式系统单片机与嵌入式系统 XRL A,Rn XRL A,Rn ;(A)(Rn)A(A)(Rn)A XRL A,dir

57、ect XRL A,direct ;(A)(A)(directdirect)A A XRL A,Ri XRL A,Ri ;(A)(A)((RiRi))A ,i=0,1)A ,i=0,1 XRL A,#data XRL A,#data ;(A)#dataA(A)#dataA XRL direct,A XRL direct,A ;(;(directdirect)(A A)directdirect XRL direct,#data XRL direct,#data ;(;(directdirect) #data direct#data direct(3) 逻辑异或指令逻辑异或指令单片机与嵌入式系统单

58、片机与嵌入式系统若若要将要将某位某位清清0 0,则应将则应将该位该位和和0 0相与;相与;要将要将某位某位置置1 1,则应将则应将该位该位和和1 1相或;相或;要将要将某位某位取反,取反,则应将则应将该位该位和和1 1相异或;相异或;要保持要保持某位某位不变,不变,则应将则应将该位该位和和1 1相与、相与、和和0 0相或、相或、和和0 0相异或相异或例例1 1:A=01A=01 , ,执行指令执行指令 XRL A, #0C0HXRL A, #0C0H ORL A, #03H ORL A, #03H ANL A, #0E7H ANL A, #0E7H 结果结果 A = A = 例例2 2:将片内

59、将片内RAMRAM中中2AH 2AH 和和2BH2BH单元中数字的单元中数字的ASCASC码转换为压码转换为压缩缩BCDBCD码后存入片内码后存入片内RAM 20HRAM 20H单元。(若单元。(若2BH2BH单元的数字为高位)单元的数字为高位)10X00X11BANL 2BHANL 2BH,#0FH#0FHANL 2AHANL 2AH,#0FH#0FHMOV AMOV A,2BH2BHRL ARL ARL ARL ARL ARL ARL ARL AORL AORL A,2AH2AHMOV 20HMOV 20H,A A单片机与嵌入式系统单片机与嵌入式系统3.4.4 控制转移类指令控制转移类指令

60、不影响状态标志位不影响状态标志位1无条件转移指令无条件转移指令(1 1)短转移)短转移 AJMP addrllAJMP addrll 转移的目标地址为转移的目标地址为AJMPAJMP下一条指令地址下一条指令地址的的高高5 5位位地址码地址码A15-A11A15-A11和和addrlladdrll拼接为拼接为1616位的地址位的地址 转移范围为转移范围为2K2K字节字节(2 2) 长跳转长跳转 LJMP addr16LJMP addr16 目标地址由目标地址由addr16addr16指出指出 转移范围为转移范围为64K64K字节字节单片机与嵌入式系统单片机与嵌入式系统(3 3)相对转移)相对转移

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论