单片微机原理与接口技术(第2版):第4章 80C51的指令系统

上传人:夏** 文档编号:569514510 上传时间:2024-07-30 格式:PPT 页数:118 大小:2.58MB
返回 下载 相关 举报
单片微机原理与接口技术(第2版):第4章 80C51的指令系统_第1页
第1页 / 共118页
单片微机原理与接口技术(第2版):第4章 80C51的指令系统_第2页
第2页 / 共118页
单片微机原理与接口技术(第2版):第4章 80C51的指令系统_第3页
第3页 / 共118页
单片微机原理与接口技术(第2版):第4章 80C51的指令系统_第4页
第4页 / 共118页
单片微机原理与接口技术(第2版):第4章 80C51的指令系统_第5页
第5页 / 共118页
点击查看更多>>
资源描述

《单片微机原理与接口技术(第2版):第4章 80C51的指令系统》由会员分享,可在线阅读,更多相关《单片微机原理与接口技术(第2版):第4章 80C51的指令系统(118页珍藏版)》请在金锄头文库上搜索。

1、2024/7/301第第4 4章章 80C5180C51的指令系统的指令系统指令的基本格式指令的基本格式及及常用符号常用符号 4.180C5180C51的的寻址方式寻址方式4.2数据传送数据传送指令指令 (2929条)条)4.3算数运算算数运算指令指令 (2424条)条)4.4逻辑运算与循环类指令(逻辑运算与循环类指令(2424条)条)4.5控制转移类指令控制转移类指令 (1717条条)4.6布尔变量操作布尔变量操作类指令类指令 (1717条)条)4.72024/7/302v指令指令: : 指示计算机执行某种操作的命令。指示计算机执行某种操作的命令。v指令系统指令系统: : 一台计算机能所能具

2、有的全部一台计算机能所能具有的全部指令的集合。指令的集合。v机器语言机器语言: : 以二进制代码来描述指令功能以二进制代码来描述指令功能的语言。的语言。v对每条机器语言指令用助记符号来形象表对每条机器语言指令用助记符号来形象表示,这就形成了示,这就形成了汇编语言汇编语言。2024/7/303v80C5180C51单片机指令系统共有单片机指令系统共有111111条条指令,具指令,具有如下有如下特点特点。(1)执行时间短)执行时间短(2)指令编码字节少)指令编码字节少(3)位操作指令丰富)位操作指令丰富2024/7/304MCS-51MCS-51指令助记符的一些符号约定指令助记符的一些符号约定 R

3、nRn(n=0n=07 7)- -当当前前工工作作寄寄存存器器组组中中的的寄寄存存器器R0R0R7R7之一之一RiRi(i=0,1i=0,1)- -当当前前工工作作寄寄存存器器组组中中的的寄寄存存器器R0R0或或R1R1 - -间址寄存器前缀间址寄存器前缀#data -8#data -8位立即数位立即数#data16-16#data16-16位立即数位立即数direct-direct-片内低片内低128128个个RAMRAM单元地址及单元地址及SFRSFR地址地址addr11-addr11-1111位目的地址位目的地址addr16-16addr16-16位目的地址位目的地址rel-rel-8

4、8位地址偏移量位地址偏移量,范围:,范围:128128127127bit-bit-片内片内RAMRAM位地址、位地址、SFRSFR的位地址的位地址()-表示表示 地址单元或寄存器中的内容地址单元或寄存器中的内容()-表表示示以以单单元元或或寄寄存存器器内内容容为为地地址址的存储单元的内容;的存储单元的内容;/ -/ -位操作数的取反操作前缀位操作数的取反操作前缀 -数据传送方向。数据传送方向。 ()RAMRAM或(或()ROM-ROM-下缀表示取数区域下缀表示取数区域2024/7/3052024/7/3064.1 4.1 指令的基本格式及常用符号指令的基本格式及常用符号v基本格式:基本格式:操

5、作码操作码 + + 操作数操作数操作码:指令将要做什么样的操作操作码:指令将要做什么样的操作操作数:指令操作的对象操作数:指令操作的对象,一般是操作所需一般是操作所需要的数或所需要的数的存放地址。要的数或所需要的数的存放地址。2024/7/3074.1.1 4.1.1 指令的字节数指令的字节数 8 8位编码仅为操作码位编码仅为操作码即:即:04H04H8 8位编码含操作码和寄存器编码位编码含操作码和寄存器编码位号位号7 6 5 4 3 2 1 0 字节字节opcoder r r如:如:MOV AMOV A,Rn Rn 编码为:编码为:1 1 1 0 1 0 0 0即:即:E8HE8H有有单字节

6、指令、双字节指令和三字节单字节指令、双字节指令和三字节指令指令三种。三种。 0 0 0 0 0 1 0 0位号位号7 6 5 4 3 2 1 0字节字节opcode如:如:INC A INC A 编码为:编码为: 单字节指令单字节指令(4949条)条)2024/7/308 双字节指令双字节指令(4545条)条)位号位号7 6 5 4 3 2 1 0字节字节opcodedata或或direct 三字节指令(三字节指令(1717条)条)位号位号7 6 5 4 3 2 1 0字节字节opcodedata或或directdata或或direct如:如:MOV R2MOV R2,#0F0H #0F0H

7、编码为:编码为:0 1 1 1 1 0 1 01 1 1 1 0 0 0 0即:即:7AH7AH F0H F0H如:如:ANL 30HANL 30H,#66H #66H 编码为:编码为:01 1 1 0 0 1 100 1 1 0 0 0 001 1 0 0 1 1 0即:即:73H73H 30H 30H 66H 66H2024/7/3094.1.2 4.1.2 指令的执行时间指令的执行时间v5151单片机指令执行时间有单片机指令执行时间有单周期指令(单周期指令(6464条)条),双周期指令(双周期指令(4545条)条)和和四周期指令(四周期指令(2 2条)条)。(1)(1)单周期单周期:执行

8、时间为一个机器周期。:执行时间为一个机器周期。 例如:例如:ADD AADD A,R1R1(2)(2)双周期双周期:执行时间为执行时间为2 2个机器周期。个机器周期。 例如:例如: DJNZDJNZ R3 R3,relrel(3)(3)四周期四周期:执行时间为:执行时间为4 4个机器周期。个机器周期。 例如:例如:MUL ABMUL AB2024/7/3010一般格式:一般格式:标标号号: : 操操作作助助记记符符 目目的的操操作作数数,源操作数源操作数;注释;注释 4.1.3 4.1.3 汇编语言的语句结构汇编语言的语句结构 例如:例如:LOOP: MOV R3 LOOP: MOV R3 ,

9、 #08H #08H ;执行数据传送操;执行数据传送操作,将立即数作,将立即数08H08H送给寄存器送给寄存器R3R3。2024/7/3011(1)方括号方括号:表示该项是可选项表示该项是可选项,可有可无。可有可无。(2)标号标号:是用户设定的地址符号是用户设定的地址符号, , 它代表该指令它代表该指令机器码存放在存储器中第一个字节的地址。机器码存放在存储器中第一个字节的地址。标号标号必须以字母开头必须以字母开头, , 其后跟其后跟1 18 8个字母或数字个字母或数字, , 并并以以“: :”结尾。结尾。 (3)操作助记符操作助记符:该指令功能的英文缩写,该指令功能的英文缩写, 表明本表明本条

10、指令完成什么样的功能操作条指令完成什么样的功能操作, , 不得省略。不得省略。(4)目的操作数目的操作数:提供操作的对象:提供操作的对象,并指出一个目并指出一个目标地址标地址,表示操作结果将要存放的地址。表示操作结果将要存放的地址。2024/7/3012(5)源操作数源操作数:指出的是一个源地址(或立即数)指出的是一个源地址(或立即数), , 表示操作的对象或操作数来自何处。表示操作的对象或操作数来自何处。 它与目的操作它与目的操作数之间要用数之间要用“, ,”号隔开。号隔开。 (6)注释注释:在编写程序时在编写程序时, , 为了增加程序的可读性为了增加程序的可读性, , 由用户对该条指令或该

11、段程序功能进行的说明。由用户对该条指令或该段程序功能进行的说明。它以它以分号分号“; ;”开头开头, ,由于由于“;”以后部分计算机不予处理,以后部分计算机不予处理,故可以用中文、故可以用中文、英文的某些符号来表示英文的某些符号来表示,但要注意在但要注意在非注释部分的所有字符,都必须是非注释部分的所有字符,都必须是英文英文的,的,例如例如: :标点符号标点符号“,”、“:”只能用半角输入,只能用半角输入,而不能用全角输入。而不能用全角输入。2024/7/30134.2.1 4.2.1 立即寻址立即寻址 操作数就在指令代码中操作数就在指令代码中,在操作码之后,是一在操作码之后,是一个个8 8位二

12、进制数或位二进制数或1616位二进制数,称为立即数,这种位二进制数,称为立即数,这种寻址方式称为立即寻址。寻址方式称为立即寻址。 v操作数在指令代码中操作数在指令代码中v寻址空间:寻址空间:ROMROM4.24.2 80C5180C51的寻址方式的寻址方式 寻址方式:寻址方式:寻找(源)操作数或指令转移地址的寻找(源)操作数或指令转移地址的方式。方式。 80C5180C51单片机有单片机有7 7种寻址方式种寻址方式【例例】执行执行1010H: MOV A1010H: MOV A,#55H #55H 结果(结果(A A)=55H =55H 2024/7/3015 4.2.2 4.2.2 直接寻址

13、直接寻址 指令中直接给出操作数所在单元的地址。指令中直接给出操作数所在单元的地址。寻址空间:寻址空间:v内部内部RAMRAM的低的低128128字节(字节(00H-7FH00H-7FH)。)。v位地址空间。位地址空间。v特殊功能寄存器,特殊功能寄存器,特殊功能寄存器,只能用直接特殊功能寄存器,只能用直接寻址方式操作。寻址方式操作。另一类直接寻址是转移目标地址的寻址另一类直接寻址是转移目标地址的寻址。如:如:LJMP ADDR16LJMP ADDR16 例例 若(若(55H55H)=5AH ,=5AH ,执行执行2000H: MOV A,55H, 2000H: MOV A,55H, 结果结果(A

14、(A)=5AH =5AH 2024/7/30162024/7/30174.2.3 4.2.3 寄存器寻址寄存器寻址 由指令指出某一寄存器的内容作为操作由指令指出某一寄存器的内容作为操作数,这种寻址方式称为数,这种寻址方式称为寄存器寻址寄存器寻址。 可以采用的寄存器有可以采用的寄存器有R0R0R7R7、累加器、累加器A A、寄存器寄存器B B、数据指针、数据指针DPTRDPTR和位累加器和位累加器C C。特点:特点:传送和执行速度快传送和执行速度快【例例】若(若(R0R0)=44H=44H,执行执行1000H: MOV A,R0,1000H: MOV A,R0, 结果(结果(A A)=44H =

15、44H 2024/7/30194.2.4 4.2.4 寄存器间接寻址寄存器间接寻址指令中给出寄存器的名称,以寄存器的内容为地址指令中给出寄存器的名称,以寄存器的内容为地址再取一次数,该数才是真正的操作数,这种寻址方再取一次数,该数才是真正的操作数,这种寻址方式称为式称为寄存器间接寻址。寄存器间接寻址。 v寄存器中的内容是操作数的地址寄存器中的内容是操作数的地址v寻址空间:寻址空间: 片内片内RAM( RAM( 采用采用R0R0,R1R1或或SP)SP) 片外片外RAMRAM(采用(采用R0R0,R1R1或或DPTRDPTR) 片内:片内:MOVMOV 片外:片外:MOVXMOVX【例例】若(若

16、(R1R1)=44H,=44H,(44H44H)=2FH =2FH 执行执行 3000H: MOV A, R13000H: MOV A, R1, 结果(结果(A A)=2FH =2FH 2024/7/30214.2.5 4.2.5 变址寻址变址寻址 以以DPTRDPTR或或PCPC为基址寄存器,累加器为基址寄存器,累加器A A为变址寄存器。为变址寄存器。把两者内容相加,结果作为操作数的地址,这种寻址把两者内容相加,结果作为操作数的地址,这种寻址方式称为变址寻址。方式称为变址寻址。这类指令只限于访问这类指令只限于访问ROMROM,常用于查表操作和指令跳转。常用于查表操作和指令跳转。 v操作数地址

17、:操作数地址:基地址基地址+ +偏移量偏移量v寻址空间:寻址空间:ROMROMv变址寻址还用于跳转指令,如变址寻址还用于跳转指令,如JMP A+DPTRJMP A+DPTR【例例】(A A)0FH0FH,(,(DPTRDPTR)=2400H=2400H,执行执行2000H: MOVC A,A+DPTR2000H: MOVC A,A+DPTR, 结果为(结果为(240FH240FH)外外ROMROM A, A,(A A)=88H=88H2024/7/30234.2.6 4.2.6 相对寻址相对寻址 相对寻址方式是以相对寻址方式是以PCPC的内容作为基地址,加的内容作为基地址,加上指令中给定的偏移

18、量,所得结果作为转移地址上指令中给定的偏移量,所得结果作为转移地址送送PCPC寄存器。寄存器。 用于跳转指令,实现程序分支。用于跳转指令,实现程序分支。 偏移量偏移量relrel是是有符号的单字节数。以补码表示有符号的单字节数。以补码表示, , RelRel常用符号地址表示,离源地址不要超过常用符号地址表示,离源地址不要超过(128128127 127 )【例例】若若relrel为为75H75H,PSW.7PSW.7为为1 1,JC relJC rel存于存于1000H1000H开开始的单元。执行始的单元。执行JC relJC rel指令后,程序将跳转到指令后,程序将跳转到1077H1077H

19、单元取指令并执行。单元取指令并执行。 4.2.7 4.2.7 位寻址位寻址 寻址对象是可寻址位空间中的一个位,而不是一个寻址对象是可寻址位空间中的一个位,而不是一个字节。字节。 寻址空间:寻址空间:片内片内RAMRAM位空间位空间 SFR SFR位空间位空间 位寻址方式实质属于位的直接寻址位寻址方式实质属于位的直接寻址v位操作指令中的位地址有位操作指令中的位地址有4 4种表示方法:种表示方法: 直接地址直接地址,如,如00H00H; 点操作符点操作符,如,如20H.020H.0,PSW.5PSW.5; 位名称位名称,如,如F0F0; 经伪指令定义过的字符名称经伪指令定义过的字符名称,如,如US

20、ER BIT USER BIT PSW.5PSW.5。【例例】位地址位地址00H00H内容为内容为1 1,执行,执行3000H3000H:MOV CMOV C,00H00H执行后,位地址执行后,位地址PSW.7PSW.7的内容为的内容为1 1。2024/7/3027寻址方式及相关的存储器空间寻址方式及相关的存储器空间序号序号寻址方式址方式寻址范址范围1 1寄存器寻址寄存器寻址R0R7R0R7A A、B B、C C(CyCy)、)、ABAB(双字节)、(双字节)、DPTRDPTR(双字节)、(双字节)、PCPC(双字节)(双字节)2 2直接寻址直接寻址内部内部RAMRAM低低128128字节字节

21、特殊功能寄存器特殊功能寄存器内部内部RAMRAM位寻址区的位寻址区的128128个位个位特殊功能寄存器中可寻址的位特殊功能寄存器中可寻址的位3 3寄存器间接寻址寄存器间接寻址内部数据存储器内部数据存储器RAMR0RAMR0,R1R1,SPSP(仅(仅PUSHPUSH,POPPOP) 内部数据存储器单元的低内部数据存储器单元的低4 4位(位(R0R0,R1R1)外部外部RAMRAM或或I/OI/O口(口(R0R0,R1R1,DPTRDPTR)4 4立即寻址立即寻址ROMROM程序存储器(常数)程序存储器(常数)5 5变址寻址变址寻址程序存储器(程序存储器(A+PCA+PC,A+DPTRA+DPT

22、R)6 6相对寻址相对寻址ROMROM(PCPC当前值的当前值的-128-127-128-127字节)字节)7 7位寻址位寻址可寻址位(内部可寻址位(内部RAM20H-2FHRAM20H-2FH单元位和部分单元位和部分SFRSFR位)位)2024/7/30284.3 数据传送类指令(29条)一般一般不影响不影响标志寄存器标志寄存器PSWPSW的状态的状态 传送类指令有两大类传送类指令有两大类 一般传送指令一般传送指令( MOVMOV )(16(16条条) ) 特殊传送指令特殊传送指令(1313条条) )2024/7/30294.3.1 4.3.1 一般传送指令一般传送指令 一般传送指令的汇编指

23、令格式:一般传送指令的汇编指令格式: MOV MOV , 功能:功能:将源操作数传送到目的操作数,源将源操作数传送到目的操作数,源操作数内容不变。操作数内容不变。2024/7/3030一般数据传送指令(一般数据传送指令(1616条)条)操作码操作码目的目的源源功能功能字节数字节数机器周期数机器周期数MOVA,#data,direct RiRn#data A( (direct) A(Ri)内内RAM A( (Rn) A22111111Rn,#datadirect A#data Rn( (direct) Rn(A) Rn221121direct,#dataAdirect 1RiRn#data di

24、rect( (A) direct( (direct 1) direct(Ri) 内内RAM direct( (Rn) direct3232221222Ri,#datadirect A#data(Ri)(direct) (Ri)(A) (Ri)221121DPTR#data16#data16DPTR322024/7/3031一、内部一、内部8 8位数据传送指令位数据传送指令通用格式:通用格式: MOV MOV , 例例 :执行指令执行指令 MOV DPTRMOV DPTR,#1234H #1234H 后后 (DPHDPH)=12H=12H,(,(DPLDPL)=34H=34H。2024/7/30

25、321 1、以、以A A为目的操作数为目的操作数例:例:MOV AMOV A, R1 R1 若(若(R1R1)=30H=30H,(30H30H)= 35H= 35H,执行指令后,(,执行指令后,(A A)= 35H= 35H。2024/7/30332 2、以、以RnRn为目的操作数为目的操作数例:例:执行指令执行指令 MOV R0MOV R0,#00H #00H 后,(后,(R0R0)= 00H = 00H 2024/7/30343 3、以、以directdirect为目的操作数为目的操作数例:例:若(若(R0R0)=66H,=66H,(66H66H)=13H=13H,执行指令,执行指令 MO

26、V MOV 40H40H,R0 R0 后后, ,(40H40H)=13H =13H 2024/7/30354 4、以、以RiRi为目的操作数为目的操作数例:例:若(若(R1R1)=3AH=3AH,(,(A A)=2BH=2BH,执行指令,执行指令MOV MOV R1R1,A A 后,(后,(3AH3AH)=2BH=2BH。 2024/7/3036二、二、1616位数据传送指令位数据传送指令vMOV DPTR, #data16MOV DPTR, #data16;data16DPTRdata16DPTR 例例 :执行指令执行指令 MOV DPTRMOV DPTR,#2030H #2030H 后后(

27、DPHDPH)=(83H) = 20H=(83H) = 20H,(,(DPLDPL) =(82H) =30H=(82H) =30H。 该指令是该指令是80C5180C51指令集中唯一的一条指令集中唯一的一条1616位数位数传送指令,其作用是将外部存储器某单元地传送指令,其作用是将外部存储器某单元地址送到数据指针址送到数据指针DPTRDPTR。这个存储单元可以是这个存储单元可以是外部外部RAMRAM也可以是外部也可以是外部ROMROM,也可以是扩展的,也可以是扩展的片外接口地址。片外接口地址。 如果地址传送到如果地址传送到DPTRDPTR后用到后用到MOVCMOVC指令,则所指令,则所送的一定是

28、送的一定是ROMROM地址地址; 若用到若用到MOVXMOVX指令,则所传送的一定是指令,则所传送的一定是RAMRAM地地址或片外接口地址。址或片外接口地址。v以上一般数据传送指令中,使用时请注意:以上一般数据传送指令中,使用时请注意:v 除除directdirect外,源字节寻址与目的字节寻址外,源字节寻址与目的字节寻址方式是不相同的;方式是不相同的;v RnRn寄存器寻址与寄存器间接寻址间不相寄存器寻址与寄存器间接寻址间不相互传送;互传送;v 只有以累加器只有以累加器A A作为目的操作数的指令,才作为目的操作数的指令,才可能影响奇偶标志可能影响奇偶标志P P。2024/7/30394.3.

29、2 4.3.2 特殊传送指令特殊传送指令 特殊传送介指令包括:特殊传送介指令包括:ROMROM查表、外查表、外部部RAMRAM读读/ /写、堆栈操作和交换指令。写、堆栈操作和交换指令。操作助记符操作助记符目的目的源源功能功能字节数字节数机器周期数机器周期数MOVC(ROM查表查表)A,A+DPTRA+PC (A)+(DPTR)ROM A12(A)+(PC)ROM AMOVX(读外读外RAM)A,RiDPTR(Ri)外外RAMRAMA12(DPTR)外外RAMRAMAMOVX(写外写外RAM)Ri,DPTR,A(A)(Ri)外外RAMRAM12(A)(DPTR)外外RAMRAM12PUSHdir

30、ect(direct) (SP) 压栈压栈22POPdirect(SP)direct 出栈出栈22XCH(字节交换字节交换)A,RndirectRi(A) Rn, (Rn) A11(A) direct, (direct) A2(Ri) A, (A) (Ri)1XCHD(半字节交换半字节交换)A,Ri(Ri)30 A30, (A) 30 (Ri) 3011SWAP(自交换自交换)A(A74)A30, (A30)A7411特殊传送指令(特殊传送指令(1313条)条)2024/7/3041一、一、ROMROM中常数读取指令中常数读取指令读读ROMROM中常数表项指令中常数表项指令MOVCMOVCRO

31、MROM中可以存放程序中可以存放程序代码代码,还经常存放,还经常存放常数表常数表。v1.1.以以DPTRDPTR内容为基址内容为基址vMOVC AMOVC A,A+DPTRA+DPTRv功能:功能:(A(A)+(DPTR)+(DPTR)ROMROM A Av常数表存放约束小,称为常数表存放约束小,称为远程查表指令远程查表指令, ,占占用用DPTR DPTR 。v2.2.以以PCPC内容为基址内容为基址vMOVC AMOVC A,A+PCA+PC v功能:(功能:((A(A)+(PC) ROM +(PC) ROM A Av常数表存放约束大,称为常数表存放约束大,称为近程查表指令近程查表指令, ,

32、不不占用占用DPTRDPTR 。44 例例3-123-12已知内存单元已知内存单元20H20H中有一个中有一个0-90-9范围内范围内的数,用查表指令编出能查出该数平方值的的数,用查表指令编出能查出该数平方值的程序。设平方表表头地址标号为程序。设平方表表头地址标号为LABLAB。 MOV AMOV A,20H20H MOV MOV DPTR DPTR,#LAB#LAB MOVC A MOVC A,A+DPTRA+DPTR LAB:DB 0 LAB:DB 0,1 1,4 4,9 9,10H10H,19H19H 若(若(20H20H)为)为3 3,执行,执行MOVC AMOVC A,A+DPTRA

33、+DPTR查表得查表得9 9并并存于存于A A中。中。 例例:2000H: MOV A,#02H2000H: MOV A,#02H 2002H 2002H: MOVC A, A+PCMOVC A, A+PC 由于由于MOVC A, A+PC MOVC A, A+PC 是单字节指令,是单字节指令, 下一条指令首地址为下一条指令首地址为 2002H+1=2003H, 2002H+1=2003H, 执行执行MOVC A, A+PCMOVC A, A+PC指令后,指令后, ROM ROM中中20052005单元内容将送到单元内容将送到A A中。中。2024/7/30452024/7/3046二、片外二

34、、片外RAMRAM的读写指令的读写指令 读片外读片外RAMRAM及接口单元数据的指令及接口单元数据的指令MOVXMOVX 1 1、读入累加器、读入累加器A A的指令的指令MOVX AMOVX A,DPTRDPTR ;(;(DPTRDPTR)外外RAMRAM A AMOVX AMOVX A,RiRi ;(;(RiRi)外外RAMRAM A A例:例:若(若(DPTRDPTR)=2000H,(2000H) =2000H,(2000H) 外外RAMRAM =99H, =99H, 执行执行MOVX A,DPTRMOVX A,DPTR后,(后,(A A)=99H=99H注意:注意:用用RiRi寻址时,寻

35、址时,高高8 8位地址位地址由由P2P2口提供口提供 2024/7/30472 2从累加器从累加器A A输出数据的指令输出数据的指令MOVX DPTRMOVX DPTR,A A ;(;(A A)(DPTRDPTR)外外RAMRAM MOVX RiMOVX Ri,A A ;(;(A A) (RiRi)外外RAM RAM 例:例:若(若(DPTRDPTR)=1000H,(1000H) =1000H,(1000H) 外外RAMRAM=22H,=22H,(A A)=33H=33H执行执行MOVX DPTR, AMOVX DPTR, A后,(后,(A A)=33H, =33H, (1000H) (100

36、0H) 外外RAMRAM=33H=33H例:例:将外部将外部RAMRAM中中1000H1000H单元中的内容送入外部单元中的内容送入外部RAMRAM中中2000H2000H单元中。单元中。 MOV DPTRMOV DPTR,#1000H#1000H MOVX A MOVX A,DPTRDPTR MOV DPTR MOV DPTR,#2000H#2000H MOVX DPTR MOVX DPTR,A A2024/7/3048v在微型计算机的内存中,都需要设置一个在微型计算机的内存中,都需要设置一个对数据实行对数据实行“后进先出后进先出”操作的区域,这操作的区域,这个区域称为堆栈。个区域称为堆栈。

37、v堆栈通常是存储器的一部分,为了保证堆堆栈通常是存储器的一部分,为了保证堆栈区的数据能按后进先出的规则来操作,栈区的数据能按后进先出的规则来操作,专门设置一个地址寄存器来管理,这个地专门设置一个地址寄存器来管理,这个地址寄存器称为址寄存器称为堆栈指针(堆栈指针(SPSP)。 三、堆栈操作指令三、堆栈操作指令v在在89C5189C51中,中,堆栈规定设在单片机的内部堆栈规定设在单片机的内部RAM中中,同时在特殊功能寄存器中将同时在特殊功能寄存器中将81H81H设置为堆栈指针,即设置为堆栈指针,即SP=81H,81H81H的内的内容指示了栈顶地址容指示了栈顶地址。v系统复位时,系统复位时,(SP)

38、=07H。v由于由于5151片内片内RAM RAM 区有限,所以区有限,所以栈顶越小,栈顶越小,堆栈深度就越深堆栈深度就越深。为便于通用为便于通用4 4组工作寄存组工作寄存器组都能使用器组都能使用,一般在系统初始化时使用,一般在系统初始化时使用MOVSP,#30H. .v堆栈操作是通过指令来完成的。堆栈操作是通过指令来完成的。v将数据送入堆栈的过程称为将数据送入堆栈的过程称为压入(或压栈)压入(或压栈)操作;操作;v而从堆栈中取出数据的过程称为而从堆栈中取出数据的过程称为弹出(或出弹出(或出栈)栈)操作操作。v5151的堆栈是的堆栈是向上生长型。向上生长型。 2024/7/30PUSH dir

39、ectPUSH direct ;(SP)+1SP,(direct) ;(SP)+1SP,(direct) (SP)(SP)例:设(例:设(SPSP)=30H=30H,(,(ACCACC)=20H, (B)=40H=20H, (B)=40H,执,执行下述指令:行下述指令: PUSH ACCPUSH ACC ; 结果为:结果为:(31 H) =20H(31 H) =20H,(,(SPSP)=31H=31HvPUSH ACCPUSH ACC是是用直接寻址方式寻址的用直接寻址方式寻址的,ACC=E0HACC=E0H,与,与PUSH E0HPUSH E0H效果一样。效果一样。v若将若将PUSH ACCP

40、USH ACC写成写成 PUSH A PUSH A 就是寄存器寻址方式,就是寄存器寻址方式,机器汇编时会提示该指令编写出错。机器汇编时会提示该指令编写出错。 入栈指令入栈指令PUSHPUSH2024/7/3053 出栈指令出栈指令POPPOPPOP directPOP direct;(SP)direct,(SP)-1 ;(SP)direct,(SP)-1 SPSP例:设(例:设(SPSP)=30H=30H,(,(44 H44 H)=20H, =20H, (30H30H)=88H=88H,执行,执行 POP 44HPOP 44H; (44 H) =88H(44 H) =88H,(,(SPSP)=

41、2FH=2FH 堆栈用于堆栈用于v中断系统中断系统保护中断断点保护中断断点v子程序调用时子程序调用时保护返回地址保护返回地址,或者用于保或者用于保护护子程序调用之前的某些重要数据子程序调用之前的某些重要数据(即保(即保护现场)护现场)v还可以用于还可以用于数据交换数据交换2024/7/3055例:例:利用堆栈完成利用堆栈完成40H40H与与50H50H单元内容的交换单元内容的交换 MOV SP,#6FHMOV SP,#6FH; ;将堆栈设在将堆栈设在70H70H以上以上RAMRAM空间空间PUSH 40H PUSH 40H ;将将40H40H单元的单元的“23H23H”入栈,之后入栈,之后(S

42、PSP)=70H =70H PUSH PUSH 50H 50H ;将将50H50H单元的单元的“45H45H”入栈,之后入栈,之后(SPSP)=71H=71HPOP 40H POP 40H ;将将SPSP指向的指向的71H71H单元的内容弹到单元的内容弹到40H40H单元,单元,之后(之后(SPSP)=70H=70HPOP 50H POP 50H ;将将SPSP指向的指向的70H70H单元的内容弹到单元的内容弹到50H50H单元,单元,之后(之后(SPSP)=6FH=6FH(a a)初始状态)初始状态 (b b)2 2条条PUSHPUSH指令执行后指令执行后 (c c)2 2条条POPPOP指

43、令执行后指令执行后v归纳:归纳:v5151单片机中,当数据存入堆栈时,堆栈指针将自单片机中,当数据存入堆栈时,堆栈指针将自动加动加1,1,并将数据存入堆栈指针所指出的存储单元并将数据存入堆栈指针所指出的存储单元,当需要从堆栈中取出数据时,首先将堆栈指针所当需要从堆栈中取出数据时,首先将堆栈指针所指出的存储单元中的数据读取,然后自动将堆栈指出的存储单元中的数据读取,然后自动将堆栈指针减指针减1 1。所以:所以:v堆栈指针始终指向堆栈中最后存入数据的那个单堆栈指针始终指向堆栈中最后存入数据的那个单元,称该单元为堆栈元,称该单元为堆栈顶栈顶栈 。v由于数据存入堆栈时堆栈指针自动加由于数据存入堆栈时堆

44、栈指针自动加1 1(地址增大)(地址增大),所以称为,所以称为 向上生长型向上生长型 堆栈。堆栈。v扩充:扩充:在在80X8680X86系统中:系统中:堆栈是堆栈是向下生长型向下生长型;当数据存入或取出堆栈时,操作是以当数据存入或取出堆栈时,操作是以字(字(2 2字节)字节)为基本单位的;为基本单位的;堆栈区域设置在堆栈区域设置在片外片外RAMRAM区区。数据交换指令数据交换指令XCHXCH、XCHDXCHD和和SWAPSWAPv数据交换属于同时进行的双向传送数据交换属于同时进行的双向传送字节交换指令字节交换指令XCHXCH 四、数据交换指令四、数据交换指令例:若(例:若(R0R0)=80H=

45、80H,(,(A A)=20H=20H。 执行指令执行指令 XCH AXCH A,R0 R0 后,(后,(A A)=80H=80H,(,(R0R0)=20H=20H。 2024/7/3061半字节交换指令半字节交换指令XCHDXCHD例:例:若(若(R0R0)=20H=20H,(,(A A)=30H=30H。执行指令。执行指令 XCH AXCH A,R0R0后,后, (A A)=20H=20H,(,(R0R0)=30H=30H。若(若(R0R0)=20H,=20H,(A A)=30H,(20H)=88H, =30H,(20H)=88H, 执行指令执行指令 XCH AXCH A,R0 R0 后后

46、, ,(A A)=88H,=88H,(R0R0)=20H,(20H)=30H=20H,(20H)=30H。XCHDXCHD是间址操作数的低半字节与是间址操作数的低半字节与A A的低半字节互换。的低半字节互换。SWAPSWAP是累加器的高低是累加器的高低4 4位互换位互换2024/7/30624.4 4.4 算术运算类指令(算术运算类指令(2424条)条)v算术操作指令共有算术操作指令共有2424条,可分为条,可分为加、减、乘、加、减、乘、除和除和BCDBCD码调整码调整指令,除加指令,除加1 1、减、减1 1指令外,算指令外,算术运算指令的执行结果将术运算指令的执行结果将影响影响CYCY、AC

47、AC、OVOV标标志。志。操作助记符操作助记符目的目的源源功能功能字节数字节数机器周期数机器周期数ADD(不带进位加不带进位加)A,RnRi#data(A)+(Rn)A11(A)+(direct) A2(A)+(Ri) A1(A)+(data)A2DAA十进制调整十进制调整11ADDC(带进位加带进位加)A,RndirectRi#data(A)+(Rn)+(CY)A11(A)+(direct) +(CY) A2(A)+(Ri)+(CY) A1(A)+(data)+(CY)A2INCARndirect(A)+1A11(Rn)+1Rn1(direct)+1direct2操作码操作码目的目的源源功能

48、功能字节数字节数机器周期数机器周期数INCRiDPTR(Ri)+1(Ri)11(DPTR)+1DPTR12 算术运算类指令算术运算类指令2024/7/3064续表续表SUBB(带借位减带借位减)A,RndirectRi#data(A)-(Rn)-(CY)A11(A)-(direct) -(CY) A2(A)-(Ri)-(CY) A1(A)-(data)-(CY)A2DECARndirectRi(A)-1A11(Rn)-1Rn1(direct)-1direct2(Ri)-1(Ri)1MULAB(A)(B) (B)(A)14DIVAB(A)(B) (A)商商 (B)余数余数14操作助记符操作助记符

49、目的目的源源功能功能字节数字节数机器周期数机器周期数2024/7/3065算数运算结果要影响算数运算结果要影响PSWPSW中标志位中标志位CYCY为为1 1,无符号数,无符号数(字节)加减发生进位或借位(字节)加减发生进位或借位OVOV为为1 1,有符号数,有符号数(字节)加减发生溢出错误(字节)加减发生溢出错误ACAC为为1 1,BCDBCD码加法的结果应调整码加法的结果应调整P P为为1 1,存于累加器存于累加器A A中中 “1 1”的个数为奇数的个数为奇数v标志位与相关指令影响标志位与相关指令影响 指令指令标志标志ADD、ADDC、SUBBDAMULDIV CYCY0 00 0ACACO

50、VOVP P2024/7/3066例:例:有有2 2个参与相加的机器数,一个是个参与相加的机器数,一个是84H84H,另一个,另一个是是8DH8DH。试分析运算过程及其对状态标志的影响。试分析运算过程及其对状态标志的影响。结果:结果:CYCY为为1 1;ACAC为为1 1 ;OVOV为为1 1 ;P P为为0 0 2024/7/30674.4.1 4.4.1 加法加法不带进位加法不带进位加法 DA A ;BCD码调整指令(1 1)无符号数相加:无符号数相加: 例:例:若若A=11010011A=11010011,R1=R1=1110100011101000,执行指令,执行指令ADD ADD A

51、,R1A,R1时,其和为时,其和为110111011110111011,Cy=1,Cy=1,表明刚才的无符表明刚才的无符号数号数8 8位加法运算结果有进位。位加法运算结果有进位。2024/7/3068(2 2)有符号数相加:)有符号数相加:例:若例:若A=0111 0111A=0111 0111(77H77H或或119119),), R1=00010010(12H R1=00010010(12H或或18)18),执行指令,执行指令ADD A,R1ADD A,R1时,时,其和为其和为10000101(-7BH10000101(-7BH或或123)123)。 溢出的判断方法:溢出的判断方法:两个正

52、数相加(符号位都为两个正数相加(符号位都为0 0),其和为负数(符),其和为负数(符号位为号位为1 1),则),则OV=1OV=1;两个负数相加(符号位都为两个负数相加(符号位都为1 1),若和为正数(符),若和为正数(符号位为号位为0 0),则),则OV=1OV=1。2024/7/3069(3 3)BCDBCD码相加:码相加:例:例:98H+03H98H+03H若为若为BCDBCD码相加码相加101H101H,而计算机,而计算机是按无符号的二进制相加,结果为是按无符号的二进制相加,结果为9BH,9BH,要要想得到正确的想得到正确的BCDBCD码结果,必须进行码结果,必须进行BCDBCD的的调

53、整。调整。BCD码调整指令是一条专用的指令,用来码调整指令是一条专用的指令,用来实实BCD码加法结果的调整,此指令为:码加法结果的调整,此指令为:DA A2024/7/3070例:例:98H+03H98H+03H,作加法后,作加法后A=9BH,Cy=0A=9BH,Cy=0,AC=0, AC=0, 1001 1000 1001 1000 + 0000 0011 + 0000 0011 1001 1011 1001 1011 则执行则执行DA ADA A指令后,指令后,A A的低的低4 4位作加位作加6 6调整,调整后调整,调整后高高4 4位为位为10101010,故也需要进行调整,故也需要进行调

54、整: 1001 10111001 1011 + 0000 0110 + 0000 0110 低低4 4位调整位调整 1010 00011010 0001 + 0110 0000 + 0110 0000 高高4 4位调整位调整 10000 000110000 0001 结果为结果为A=01H,Cy=1A=01H,Cy=1,相当于十进制数,相当于十进制数101101。 所以实际应用中,可设计如下程序:所以实际应用中,可设计如下程序: MOV A,#98H MOV A,#98H ;( 98H);( 98H)BCDBCD=98=98 ADD A,03H ADD A,03H ; (03H); (03H)

55、BCDBCD=3=3 DA A DA A ;(CY)=1,(A)=01, ;(CY)=1,(A)=01, 得到十进制得到十进制数数101101 在作十进制减法运算时,也应按需要进行在作十进制减法运算时,也应按需要进行“减减6 6调整调整”。在在80C5180C51中没有十进制减法调整指令,因此要用适当的方法中没有十进制减法调整指令,因此要用适当的方法编写程序段来进行十进制减法运算的编写程序段来进行十进制减法运算的BCDBCD码调整。码调整。2024/7/30712024/7/3072例例: :若若A=49HA=49H,执行,执行“ADD AADD A,#6BH#6BH”的结果是什么?的结果是什

56、么?解解 : : 0100100101001001 + 01101011 + 01101011 10110100 10110100 由于由于两个正数相加结果为负数,表示出现了溢出,两个正数相加结果为负数,表示出现了溢出,故故OV=1OV=1。同时可以看到进位标志同时可以看到进位标志Cy=0Cy=0。 在相加过程中,由于在相加过程中,由于第第3 3位相加产生对第位相加产生对第4 4位的进位的进位,故位,故AC=1AC=1。又又因为相加后因为相加后A A中的中的1 1的数目为偶数,故的数目为偶数,故P=0P=0。 所以,结果是:所以,结果是:A=B4HA=B4H(溢出),(溢出),OV=1,Cy=

57、0,AC=1,P=0OV=1,Cy=0,AC=1,P=0。2024/7/30734.4.24.4.2带进位加法指令带进位加法指令4.4.3 4.4.3 加加1 1指令指令2024/7/30744.4.4 4.4.4 带借位减法指令带借位减法指令 带借位减法带借位减法完成不带借位的减法时只需完成不带借位的减法时只需: : 先清先清CYCY为为0 0 即可即可 CYCY为为1 1,表示,表示D7D7位需借位位需借位 ACAC为为1 1,表示,表示D3D3位需借位位需借位 OVOV为为1 1,表示,表示“D6D6有借位有借位D7D7无借位无借位”或或“D7D7有借位有借位D6D6无借位无借位”202

58、4/7/3075(1 1)无符号数相减:)无符号数相减:Cy=1Cy=1,表明,表明D7D7位有借位,否则位有借位,否则Cy=0Cy=0,从用户来说,从用户来说,若若Cy=1Cy=1表明表明(A)( (A) (源操作数)(源操作数), ,则则Cy=0Cy=0(目的操作数)(目的操作数) (源操作数)则(源操作数)则Cy=1Cy=12024/7/30102例:根据例:根据A A的内容程序转移到不同的程序段入口去执行。的内容程序转移到不同的程序段入口去执行。 CJNE A,#20H,NNCJNE A,#20H,NN EE:EE: ;(A)=20H;(A)=20H时的处理程序入口时的处理程序入口 .

59、 . . . . . NN:JC SSNN:JC SS ;(A) 20H(A) 20H(A) 20H时的处理程序入口时的处理程序入口 . . . . . . SS:SS:2024/7/30103三、减三、减1 1非零转移指令非零转移指令DJNZ RnDJNZ Rn,relrel ;(RnRn)1Rn1Rn ; ;若若Rn=0Rn=0,则(,则(PCPC)+2PC+2PC(继续执行)(继续执行) ; ;否则,(否则,(PCPC)+2+relPC+2+relPC(转移)(转移) DJNZ direct DJNZ direct,relrel ;(directdirect)1direct1direct

60、; ;若(若(directdirect)=0=0,则(,则(PCPC)+3PC+3PC(继续执行)(继续执行); ;否则,(否则,(PCPC)+3+relPC+3+relPC(转移)(转移)2024/7/30104例例: MOV 23H,#05HMOV 23H,#05H CLR A CLR A LOOP: ADD A,23H LOOP: ADD A,23H DJNZ 23H,LOOP DJNZ 23H,LOOP SJMP $ SJMP $ 上述程序段的执行过程是:上述程序段的执行过程是: 5+4+3+2+1=155+4+3+2+1=15 将将23H23H单元中的数连续相加,存至单元中的数连续相

61、加,存至A A中,每加一次,中,每加一次,23H23H单元中的数值减单元中的数值减1 1,直至(,直至(23H23H)减到)减到0 0,共加,共加(23H23H)次。)次。2024/7/301054.6.3 4.6.3 调用与返回指令调用与返回指令 程序调用时,必须要中断原有的指令执行顺序,程序调用时,必须要中断原有的指令执行顺序,转移到子程序的入口地址去执行子程序。在子程序转移到子程序的入口地址去执行子程序。在子程序执行完毕后,又要返回到原有程序中断的位置,继执行完毕后,又要返回到原有程序中断的位置,继续往下执行。所以这个断点位置(地址)要保存起续往下执行。所以这个断点位置(地址)要保存起来

62、,一般都是放在堆栈中保存。来,一般都是放在堆栈中保存。 我们把我们把返回到原有程序继续执行的位置返回到原有程序继续执行的位置称为称为程序断点程序断点,也就是子程序调用指令的下也就是子程序调用指令的下一条指令的地址。一条指令的地址。一、调用指令一、调用指令 ACALL addr11ACALL addr11;短调用指令;短调用指令; ;(PCPC)+2PC+2PC; ;(SPSP)+1SP+1SP,(,(PCPC7-07-0)(SPSP)(子程序断点低)(子程序断点低8 8位压入堆栈)位压入堆栈) ; ;(SPSP)+1SP+1SP,(,(PCPC15-815-8)(SPSP)(子程序断点高)(子

63、程序断点高8 8位压入堆栈)位压入堆栈) ;addr11PC10;addr11PC10- -0 0同同AJMPAJMP指令一样,被调用的指令一样,被调用的子程序的起始地址必须与子程序的起始地址必须与ACALLACALL下面指令的第一个字节在同一个下面指令的第一个字节在同一个2KB2KB区域的页面内区域的页面内。 LCALLaddr16;长调用指令;长调用指令; ;(PCPC)+3PC+3PC ; ;(SPSP)+1SP+1SP,(,(PCPC7-07-0)(SPSP)(子程序断点)(子程序断点低低8 8位压入堆栈)位压入堆栈) ; ;(SPSP)+1SP+1SP,(,(PCPC15-815-8

64、)(SPSP)(子程序断点)(子程序断点高高8 8位压入堆栈)位压入堆栈) ;addr16PC;addr16PC 被调用的子程序可以在被调用的子程序可以在64KB64KB范围内的任何位置。范围内的任何位置。例例: :设设 (SP)=60H,(SP)=60H,标号标号K11K11的值为的值为8000H8000H,标号,标号AASAAS的的值为值为8200H8200H,在执行指令:,在执行指令: K11K11:ACALL AASACALL AAS后结果为(后结果为(SPSP)=62H=62H (61H61H)=02H=02H,(,(62H62H)=80H,=80H,(PCPC)=8200H=820

65、0H 2024/7/30108二、返回指令二、返回指令RETIRETI专用于中断服务程序返回,它具有专用于中断服务程序返回,它具有清除内部相清除内部相应的中断状态触发器应的中断状态触发器(以保证正确的中断逻辑)的以保证正确的中断逻辑)的功能。功能。 子程序返回指令子程序返回指令中断返回指令中断返回指令 4.7 布尔变量操作指令 布尔变量即开关量,是以位为基本单位来进行运布尔变量即开关量,是以位为基本单位来进行运算和操作的。算和操作的。位存储空间主要有:位存储空间主要有:内部内部RAMRAM中的位寻址区,即中的位寻址区,即20H-2FH20H-2FH中中连续的连续的128128位,位地址位,位地

66、址00H-7FH00H-7FH特殊功能寄存器特殊功能寄存器SFRSFR中可以进行位寻址的各位。中可以进行位寻址的各位。2024/7/301104.7.1 4.7.1 位传送指令位传送指令MOV C,bitMOV C,bit ;(bit)CY;(bit)CYMOV bit,CMOV bit,C ;(CY)bit;(CY)bit例例:30H:30H位的内容传送到位的内容传送到20H20H位位 MOV CMOV C,30H 30H ;(;(30H30H)CYCY MOV 20H MOV 20H,C C ;(CYCY)(20H20H) 位置位位置位位清位清0 02024/7/301114.7.2 4.

67、7.2 位置位指令位置位指令例例: : 若(若(P1P1)=0101 1101B=0101 1101B,执行指令,执行指令 CLR P1.4 CLR P1.4 SETB P1.7 SETB P1.7 后,结果为:后,结果为:( P1 )=1100 1101B( P1 )=1100 1101B。2024/7/301124.7.3 4.7.3 位运算指令位运算指令一、逻辑与一、逻辑与(bitbit)前的斜杠表示对()前的斜杠表示对(bitbit)内容取反,)内容取反,直直接寻址位取反后用作源操作数,但不改变源操作数接寻址位取反后用作源操作数,但不改变源操作数原来的值。原来的值。例例: : ANL

68、C, P1.0 ANL C, P1.0 执行前执行前P1.0 P1.0 为为 0, CY0, CY为为1,1,则指则指令执行后令执行后C C为为1, 1, 而而P1.0P1.0仍为仍为0 0。 ANL C,bitANL C,bit ;(CY)(bit) CY;(CY)(bit) CYANL C,/bitANL C,/bit ;(CY) (bit)CY;(CY) (bit)CY2024/7/30113二、逻辑或二、逻辑或例:例:若(若(P1P1)=0011 1100B=0011 1100B,(,(CYCY)0 0。 执行指令执行指令ORL CORL C, P1.3 P1.3 后,后, 结果为:结

69、果为:P1 P1 内容不变,而(内容不变,而(CYCY)1 1。ORL C,bitORL C,bit ;(CY) (bit) CY;(CY) (bit) CYORL C,/bitORL C,/bit ;(CY) (bit) CY;(CY) (bit) CY三、逻辑非三、逻辑非89C5189C51指令系统中没有位异或指令。指令系统中没有位异或指令。CPL CCPL C ;(CY)CY;(CY)CYCPL bitCPL bit ;(bit)bit;(bit)bit2024/7/30114一、以一、以C CY Y内容为条件的转移指令内容为条件的转移指令4.7.4 4.7.4 位控制转移指令位控制转移

70、指令 JC relJC rel ;若若(CY)=1(CY)=1,(PC)+2+rel PC(PC)+2+rel PC(转移转移) ) (CY)=0 (CY)=0,(PC)+2PC (PC)+2PC (顺序执行顺序执行) )JNC relJNC rel ;若若(CY)=0(CY)=0,(PC)+2+rel PC(PC)+2+rel PC(转移转移) ) (CY)=1 (CY)=1,(PC)+2PC (PC)+2PC (顺序执行顺序执行) )例例: :假设假设a a已传送到累加器已传送到累加器A A中,中,b b存放在寄存器存放在寄存器B B中中, , 当当abab时,跳转到时,跳转到KL1KL1

71、 CLR CCLR C ;清进位标志清进位标志C CY Y,以便使用带进位减法指令,以便使用带进位减法指令 SUBB A, BSUBB A, B ; (A A) (B) (B) CYACYA JC KLlJC KLl;当当C CY Y为为1 1,即,即(A)(B)(A)(B)也就是也就是abab时,跳转到时,跳转到KL1KL12024/7/30115二、以位地址内容为条件的转移指令二、以位地址内容为条件的转移指令JB bitJB bit,relrel ;若(;若(bitbit)=1=1,(,(PCPC)+3+relPC+3+relPC(转移)(转移) ;若(bit)=0,(PC)+3PC(顺序

72、执行)JBC bitJBC bit,relrel ;若(;若(bitbit)=1=1,(,(PCPC)+3+relPC+3+relPC(转移)(转移)并且(并且(bitbit)=0=0 ;若(;若(bitbit)=0=0,(,(PCPC)+3PC+3PC(顺序执行)(顺序执行)JNB bitJNB bit,relrel ;若(bit)=0,(PC)+3+relPC(转移) ;若(bit)=1,(PC)+3PC(顺序执行)空操作指令空操作指令 NOPNOP ;(PCPC)+1PC+1PC本本 章章 小小 结结(1)寻址方式就是告诉你如何去寻找操作数寻址方式就是告诉你如何去寻找操作数,指令由操作码

73、和操作数构成,指令由操作码和操作数构成,操作码指明该操作码指明该指令要完成什么样的操作,指令要完成什么样的操作,操作数指出该操操作数指出该操作的对象。作的对象。(2)80C51指令系统有指令系统有7种寻址方式,即种寻址方式,即寄寄存器寻址、直接寻址、寄存器间接寻址、立存器寻址、直接寻址、寄存器间接寻址、立即寻址、变址寻址、相对寻址、位寻址即寻址、变址寻址、相对寻址、位寻址,共,共有有111条指令。条指令。(3)数据传送类指令使用最多,执行结果一数据传送类指令使用最多,执行结果一般不影响标志位,般不影响标志位,算术运算类指令执行结算术运算类指令执行结果均将影响果均将影响CYCY、ACAC、OVOV标志,标志,逻辑运算指逻辑运算指令执行结果一般不影响标志位,只在涉及令执行结果一般不影响标志位,只在涉及累加器累加器A A时,才会对奇偶标志时,才会对奇偶标志P P产生影响产生影响。控制转移类指令是改变程序走向的指令,控制转移类指令是改变程序走向的指令,分有条件与无条件分有条件与无条件2 2类,类,有条件转移类指令有条件转移类指令大都采用相对转移,大都采用相对转移,位操作指令系统有自位操作指令系统有自己的累加器己的累加器CYCY,只限于在位址区操作。,只限于在位址区操作。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号