单片机原理及应用第三章-MCS-8051指令系统_第1页
单片机原理及应用第三章-MCS-8051指令系统_第2页
单片机原理及应用第三章-MCS-8051指令系统_第3页
单片机原理及应用第三章-MCS-8051指令系统_第4页
单片机原理及应用第三章-MCS-8051指令系统_第5页
已阅读5页,还剩119页未读 继续免费阅读

下载本文档

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

文档简介

第三章MCS-8051指令系统3.1.1汇编语言程序设计的重要性完成某项特定任务的若干条指令的集合称为程序

3.1汇编语言与指令格式及寻址方式要计算机或单片机完成某项任务,就要先设计相应的应用程序。设计程序就要用到不同的程序设计语言。计算机或单片机就是按照所编程序,一条指令一条指令地依次执行来完成各项工作任务。※

机器语言(目标程序/二进制表示的指令 码),是计算机或单片机唯一能识别的语 言;※

高级语言(面向问题和计算过程的语言), 只要你懂得某种高级语言,你不懂计算机原 理和性能,也能设计程序。优点:不懂计算机也能编程序,功能强。缺点:指令码占用存储空间大,程序运行速度慢 程序设计语言归纳起来有三大类:※

汇编语言(低级语言/面向机器的语言)

用汇编语言编写的程序,每一个语句都对应着计算机的一条具体的指令。因此,用汇编语言编写程序,必须熟悉计算机或单片机的指令功能。优点:目标码所占存储空间小,程序运行速度 快。缺点:采用汇编语言编写程序,必须熟悉计算 机或单片机的指令系统。 由于汇编语言具有面向机器、目标码占用存储空间少、运行速度快等优点,在很多实时采集、实时处理、实时控制领域和高精密仪器设备产品中,都需要采用汇编语言程序设计。可见,学习汇编语言程序设计是非常重要的。3.1.2指令格式

MCS-8051汇编语言指令格式如下:【标号:】操作助记符【目的操作数】【,源操作数】【;注释】标号

——由用户设定,表示该指令所在地址。操作码助记符——由英文缩写词组成的字符串, 它规定了指令的操作功能。目的操作数——指出操作数结果存放单元的地址 (目的地址)。

源操作数——指出操作数来源的地址(源地 址)。注释——说明该条指令或程序段功能作用, 便于阅读程序。在8051指令系统中,操作数项规定了数据类型和所用的寻址方式。两操作数之间必须用“,”分开,与操作码之间用空格分隔,带“【】”的项可有可无,称可选项。操作码助记符是指令系统的核心,不可缺少。

8051汇编语言中的数值形式可采用: 二进制数(B), 十进制数(D), 十六进制数(H)。

3.1.3寻址方式指令的一个重要组成部分是操作数,它指出了参与运算的数或数所在地址。如何得到这个数或数所在地址——就叫寻址方式。寻址方式与计算机的存储空间结构有密切的关系,寻址方式越多,则计算机的功能越强,编程灵活性越好。8051单片机的寻址方式:1、立即寻址

2、直接寻址

3、寄存器寻址

4、寄存器间接寻址

5、变址寻址

6、相对寻址

7、位寻址

1、立即寻址

如:MOVA,#20H;把20H传送到A中。 常数20H是指令代码 中的一部分。——立即寻址方式的指令是双字节的,其形式为: 该操作数(立即数)紧跟在操作码后面,一起存放在ROM中。如下图所示。操作码(

74H)立即数(20H)PC:PC+1:当前MOVA,#20H指令执行演示:

操作码立即数A:ROMPCPC+174H20H20H

2.直接寻址——指令中直接给出操作数所在存储单元的地址。直接寻址可访问3种地址空间: (1)、访问专用寄存器SFR(特殊寄存器),是唯一方式;(2)、访问片内RAM中的低128字节; (3)、访问221个可直接寻址位地址空间。如:MOVA,70H;把片内RAM中70H 地址单元的内容送A 中,即实际的操作数在 70H地址单元中。直接寻址指令是双字节的,具体形式为:

访问专用寄存器时,在用助记符指令中,可直接用符号代替地址。如:MOV A,P0MOV A,80H;是等价的。操作码直接地址PCPC+1当前

具体执行过程演示:

MOV A,70H E5H70HA:RAMROMPCPC+1操作码直接地址55H70H

3.寄存器寻址

00001011指令码:RRR如:INC R3;把所选的寄存器组中 的R3的内容加1后送 回R3。——指出所选定的通用工作寄存器组R0~R7中某一个寄存器的内容作为操作数。这条指令的操作码包含了所选用的寄存器,即操作码的低三位指定了所选用的工作寄存器(R0~R7)中的一个。ROMRS1RS0PSW:XXXXXXXXR3:ALU1此外,ACC,B,DPTR,AB和C(位累加器)都可作寄存器寻址。注意:在寄存器寻址前,通过PSW中的RS1

和RS0设定当前工作的寄存器组。INC R3执行过程演示:00001011PC000110001形成8位地址

4.寄存器间接寻址——用于访问片内RAM和片外RAM如:MOVA,@Ri将R0指定的片内RAM单元中的内容送到A中。

MOVXA,@Ri将R0指定的片外RAM单元中的内容送入A中。

MOVXA,@DPTR

把DPTR指定的片外RAM中的内容送A中。

在执行PUSH和POP时,可采用SP作寄存器间接寻址。(1)当访问片内RAM低128字节或片外RAM低256字节时,可用当前工作寄存器中的R0或R1作间接地址寄存器。即R0或R1作为存放操作数单元地址的指针。

这类指令操作码的最低位指出了R0或R1。(2)访问片外RAM时,可用DPTR作间址寄存器;DPTR是16位,可对64KB的片外RAM寻址。

下面请看:MOV A,@Ri

的执行情况。MOVRi,#60H;设地址指针MOVA,@Ri1110011ipcROMRS1RS0PSW:RAMiXX00000Ri77H0110000060HA:

5.基址加变址寄存器寻址

——(基址寄存器+变址寄存器间接寻址)如:MOVC A,@A+DPTR;——把DPTR和A的内容相加,形成的程序存储 器地址单元中的内容送A中。

——以DPTR或PC为基址寄存器,A为变址寄 存器。两者内容相加形成16位程序存储器 地址,作为操作数地址。

MOVC这是一种查表操作指令。如:MOVC A,@A+PC设:(A)=88HPC=8020H…ROMALU88H80H20HPCHPCLAPC……33H1000001180A8H6.相对寻址如:JC 80H ;条件转移

——C=0不满足条件,顺序执行,C=1满足条件,跳转。

——从本指令的下一条指令的第一个字节地址(PC为基址)转移到-128~+127范围内某一程序存储器地址,由指令给出补码形式的偏移字节数,这种方式用于转移类指令。JC80H40H80HXX………ROMPC1005H1006H1007H操作码偏移量ALUPC1007H80H0F87H

7.位寻址如:MOV Acc.x,C——位累加器(C)的内容传送给A累加器的 某一位。在8051单片机中,可位寻址和位处理机的RAM空间有:※

片内RAM20H~2FH字节单元,对应的位是00H~7FH;※

专用寄存器SFR中的某些单元也可位寻址,其位地址是80H~0FFH中的一部分。

位处理机有以下特点:※有位累加器为C(即进位标志CY)※有一套完整的位指令系统,共17条指令。※能对位操作地址空间的每一位进行传送和 逻辑操作。※能简化控制、简化处理、提高运行速度。 三.寻址空间及符号注释

1.寻址空间——(每种寻址方式可涉及 的存储器空间)

寻址方式寻址空间立即ROM直接片内RAM中的低128字节/专用寄存器SFR寄存器寻址工作寄存器R0~R7,A,B,CY,DPTR,AB寄存器间接寻址片内RAM中的低128字节[@R0,@R1,SP]片外RAM中0~255,0~64KB(@R0,@R1@DPTR)变址寻址程序存储器(@A+PC,@A+DPTR)相对寻址RAM256字节范围(PC+偏移量)位寻址片内RAM的20H~2FH字节地址,部分专用寄存器SFR

(3)#data——8位立即数,即包含在指令 中的8位常数。

2.寻址方式中常用的符号注释

(1)Rn——当前选中的R0~R7(n=0~7)。

它在片内RAM的地址由PSW中的RS1,RS0确定:00H~07H(0区);08H~0FH(1区), 10H~17H(2区);18H~1FH(3区)。

(2)Ri——当前选中的工作寄存器R0、R1。可作为地址指针(间接寄存器)。

Ri在片内RAM中的地址与Rn同。(4)#data16——16位立即数,即包含在指令 中的16位常数。(5)dir——8位片内RAM单元(包括SFR) 的直接地址。(6)addr11——11位目的地址,用于ACALL 和AJMP指令中,目的地址必 须在与下条指令的地址相同的 2K字节ROM地址空间之内。(7)addr16——16位目的地址,用于LCALL和 LJMP指令中。目的地址在 64K字节ROM地址空间内。(8)rel——补码形式的8位地址偏移量。 对应下条指令第一字节地址为基 址,其偏移量在-128~+127范围 内。用在SJMP和所有的条件转移 指令中。(9)bit——片内RAM或专用寄存器(SFR)的 直接寻址位地址。(10)@——间接寻址中表示间址寄存器的符 号。(11)/——位操作指令中,表示对该位先取反 再参与操作,但不影响该位原值。(12)(X)——X中的内容。

(13)((X))——由X指出的地址单元中的内容。(14)——指令操作流程,将箭头左边的 内容送入箭头右边的单元内。目录

3.2指令系统3.2.18051指令系统有111条指令组成。按字节数分类有:单字节指令49条双字节指令46条三字节指令16条按运算速度分类有:

单周期指令64条双周期指令45条四周期指令2条按指令操作的功能分类有:数据传送类指令29条。算术运算类指令24条。逻辑操作类指令24条。控制转移类指令17条。位操作类指令17条。3.2.2数据传送指令

传送指令共有29条,有可以通过A进行数据传送的指令,也可以在RAM之间或工作寄存器与RAM之间直接进行数据传送的指令。数据传送路径如图所示:@SPCYR0~R7A@R0、@R1DPTR#DATARAM

数据传送指令一般的操作:

1.数据传送指令执行后,把源操作数传送到目的操作数,源操作数不改变,目的操作数修改为源操作数。

2.若要求在进行数据传送时,不丢失目的操作数,可采用交换类传送指令。

3.数据传送指令不影响标志(C、AC和OV)。

4.数据传送指令用到的助记符有:MOV——内部RAM传送;MOVX——外部RAM传送;MOVC——ROM的查表传送;XCH——字节(8位)交换传送;XCHD——低半字节交换;SWAP——A中高四位与低四位交换;POP——弹栈指令;PUSH——压栈指令。

※传送类指令寻址方式源操作数可以采用五种寻址方法:

立即、直接、寄存器、寄存器间接、基址+变址寄存器间接寻址。

目的操作数可采用三种寻址方法:

直接、寄存器、寄存器间接。

8051还有一条16位传送指令,专用于设定地址指针。如:MOV DPTR,#1000H下面逐条介绍数据传送指令1.寄存器内容送累加器格式:MOVA,Rn代码:0E8H~0EFH操作:(A)(Rn),n=0~7说明:Rn在片内RAM中的地址由当前工作寄存器区选择位RS1,RS0确定.

可以是00H~07H,08H~0FH,10H

或18H~1FH.11101rrr2.(A)(Rn)格式:MOV RN,A代码:0F8H~0FFH11111rrr说明:目的操作数采用寄存器寻址方式

Rn在片内RAM中的地址由当前工作寄存器区选择位RS1,RS0确定.

可以是00H~07H,08H~0FH,10H

或18H~1FH.

3.((Ri))(A)格式:MOVA,@Ri代码:0E6H~0E7H说明:Ri在内部RAM中的地址由当前工作寄

存器区选择位RS1,RS0确定。

该指令可访问内部RAM的0~255个单元,对于8051子系列内部RAM为0~127单元。1110011i

4.(A)((Ri))格式:MOV@Ri,A代码:0F6H~0F7H1111011i5.立即数(A)格式:MOVA,#data代码:74H

说明:代码的第一个字节为指令码,第二个字节为立即数。01110100立即数

6.内部RAM或专用寄存器内容(A)格式:MOVA,direct代码:

0E5H

说明: 代码的第二个字节为直接地址,可以指向专用寄存器或内部RAM(0~127单元),它与指令一起放在ROM中,执行该指令时,与操作码一起取到CPU,经地址译码访问指定单元。11100101直接地址

7.(A)内部RAM或专用寄存器中格式:MOVdir,A代码:0F5H

8.立即数寄存器格式:MOVRn,#data代码:78H~7FH01111rrr立即数11110101直接地址

9.((Ri))#data

格式:MOV@Ri,#data

代码:76H~77H

10.direct#data

格式:MOVdir,#data

代码:75H

01110101直接地址立即数0111011i立即数说明:这是一条三字节指令,代码的第二个字节为直接地址,第三个字节为立即数,执行时,他们与指令操作码一起从ROM中取入CPU中。

11.dir(Rn)

格式:MOVdir,Rn代码:88H~8FH操作:(dir)

(Rn)12.(Rn)dir格式:MOVRn,dir代码:

0A8H~0AFH操作:(Rn)

(dir)10001rrr直接地址10101rrr直接地址13.dir((Ri))格式:MOVdir,@Ri代码:

86H~87H

操作:(dir)

((Ri)),I=0,114.((Ri))dir格式:MOV@Ri,dir

代码:

0A6H~0A7H

操作:((Ri))

(dir),I=0,11000011i直接地址1010011i直接地址15.(dir2)(dir1)格式:MOVdir,dir代码:

85H

操作:(dir2)

(dir1)说明:3字节指令,代码中的源操作数和目的操作数为绝对地址,功能很强,能实现内部RAM之间,专用寄存器之间或专用寄存器与内部RAM之间的直接数据传送。而执行时间仅2个周期。10000101直接地址(源)直接地址(目)代码:

90H

操作:(DPH)#data15~#data8

(DPL)#data7~#data010010000立即数15~8立即数7~016.

16位立即数送数据指针格式:MOVDPTR,#data16

17.(A)((Ri))格式:MOVXA,@Ri

代码:

0E2H~0E3H说明:执行时,P3.7脚(RD)有效,用作 外部RAM读选通。P0口上分时输出由 Ri指定的8位地址信息及输入单元的数 据。1110001i

18.((Ri))

(A)格式:MOVX@Ri,A

代码:

0F2H~0F3H说明:执行时,P3.6(WR)有效,作为外部 RAM写选通。P0口上分时输出由Ri指定 的8位地址信息和输出该单元中的数据。 这两条可寻址外部RAM的256字节。1111001i

19.

((DPTR))(A)格式:MOVX@DPTR,A代码:

0F0H说明:同18,DPTR的16位地址信息由 P0(低八位)和P2(高八位)输 出,A中内容由P0输出。

20.(A)((DPTR))格式:MOVXA,@DPTR

代码:0E0H111100000000111021.(A)((A)+(DPTR))(近程查表)格式:MOVCA,@A+PC代码:93H操作:(A)

((A)+(DPTR))22.(A)((A)+(PC))(近程查表)格式:MOVCA,@A+PC代码:83H操作:(PC)

(PC)+1

(A)

((A)+(PC));基址+变址100100111000001123.(A)(Rn);寄存器内容与A内容交换格式:XCHA,Rn

代码:

0C8H~0CFH24.(A)((Ri));内部RAM内容与A中内容交换格式:XCHA,@Ri

代码:

0C6H~0C7H25.(A)direct;内部RAM或专用寄存器内容与A中内容交换格式:XCHA,dir代码:0C5H1100011i1100010111001rrr

26.(A3~0)((Ri3~0));;内部RAM单元低4位内容与A中低四位容交换,高四位不变。格式:XCHDA,@Ri代码:

0D6H~0D7H27.(A3~0)

(A7~4);;A的低四位与A的高四位交换。格式:SWAPA

代码:0C4H1101001i01001100

28.(dir

)((sp))

;栈顶内容送内部RAM或专用寄存器格式:POPdir

代码:

0D0H

操作:(dir)((sp))

(sp)(sp)-111010000直接地址

29.内部RAM或专用寄存器内容送栈顶

格式:PUSHdir

代码:0C0H操作:(sp)

(sp)+1

((sp))(dir)11000000直接地址

3.23算术操作类指令

共24条,其中有+、-、×、÷4种基本算术操作指令,这四种指令能对8位无符号数进行直接的运算。借助溢出标志:可对带符号数进行2的补码 运算。借助进位标志:可实现多精度的加,减和 环移,也可以对压缩的 BCD数进行运算。算术运算指令的结果将使:

---进位(CY),

---辅助进位(AC),三种标志置位或复位

---溢出(0V),加1,减1——不影响以上标志。算术运算类指令用到的助记符有:ADD——无进位加法;ADDC——带进位加;INC——加一指令;DA——BCD码调整;SUBB——带进位减;DEC——减一指令;MUL——乘法指令;DIV——除法指令。每条指令的功能:

1、(A)(A)+(Rn)格式:ADDA,Rn

代码:28H~2FH2、(A)(A)+((Ri))格式:ADDA,@Ri

代码:26H~27H0010011i00101rrr

3.(A)

(A)+(dir);(A)+内部RAM或专用寄存器,源操作数为直接寻址格式:ADDA,dir

代码:

25H 4.(A)

(A)+data;A内容+立即数格式:ADDA,#data

直接寻址0010010100100100立即数24H代码:3.(A)(A)+(dir)

格式:ADDA,dir

代码:25H

4.(A)(A)+#data格式:ADDA,#data

代码:24H00100101直接地址00100100立即数从以上4条指令,在相加过程中:——若位3和位7有进位,则AC和Cy置位。否则,复位。——对无符号数相加时,若Cy置位,和数溢 出(>255)。——对带符号数相加时,用OV判断溢出:若位6和位7不同时进位时,

OV=1,即溢出(>+127或<-128)。5.(A)

(A)+(C)+(Rn);

格式:ADDCA,Rn代码:38H~3FH6.(A)

(A)+(C)+((Ri));

格式:ADDCA,@Ri代码:36H~37H00111rrr0011011i

7、(A)

(A)+(C)+#data;

格式:ADDCA,#data

代码:34H

8、(A)

(A)+(C)+(dir);

格式:ADDCA,dir

代码:35H

00110100立即数00110101立即数

9.(A)

(A)+1

格式:INCA

代码:04H10.(Rn)

(Rn)+1

格式:INCRn

代码:08H~0FH0000010000001rrr

11.(dir)(dir)+1

格式:INCdir

代码:05H

12.((Ri))((Ri))+1

格式INC@Ri

代码:06H~07H00000101直接地址0000011i13、(DPTR)

(DPTR)+1;

格式:INCDPTR

代码:0A3H说明:这是一条16位数加1指令。按216取模,指令首先对DPL内容加1,当溢出时,DPH内容加1,并不影响标志。1010001114.十进制调整格式:DAA

代码:0D4H

操作:若[(A3~0)>9]∨[(AC)=1],则(A3~0)(A3~0)+6;若[(A7~4)>9]∨[(C)=1],则(A7~4)

(A7~4)+6。说明:

1).DA不影响O∨;

2).不能用DA对十进制减法操作的结果进行调整;

3).借助Cy可实现多位BCD数加法结果的调整;

4).必须在加法指令后使用。11010100

15.(A)

(A)-(C)-(Rn);

格式:SUBBA,Rn代码:98H~9FH16.(A)

(A)-(C)-(Rn);

格式:SUBBA,@Ri代码:96H~97H10011rrr1001011i

17.(A)

(A)-(C)-#data

格式:SUBBA,#data

代码:94H

18.(A)

(A)-(C)-(direct)

格式:SUBBA,direct

代码:95H

10010100立即数10010101直接地址

19.(A)

(A)-1

格式:DECA

代码:14H20.(Rn)(Rn)-1

格式:DECRn

代码:18H~1FH0001010000011rrr

21.((Ri))

((Ri))-1

格式:DEC@Ri

代码:16H~17H

22.(dir)

(dir)-1;

格式:DECdir

代码:15H

说明:直接地址为p0~p3时,此指令具有“读—修改—写”功能。0001011i00010101直接地址

23.(B7~0)(A7~0)

(A)×(B)

格式:MULAB

代码:0A4H

24.累加器A内容除以寄存器B的内容格式:DIVAB

代码:84H

操作:(A)

(A)÷(B)的商(B)

(A)÷(B)的余(C)0,(0V)

01010010010000100

3.2.4逻辑操作指令共有24条:与,或,异或,清除,求反,左右移位。此类指令操作数都是8位的。逻辑类指令助记符有:

ANL—逻辑与ORL—逻辑或

XRL—异或RL—循环左移RLC—连进位循环左移RR—循环右移

RRC—连进位循环右移CLR——清零

CPL—按位取反1.ANLA,Rn

代码:58H~5FH

操作:(A)(A)∧(Rn)2.ANLA,@Rn

代码:56H~57H

操作:(A)(A)∧((Ri))3.ANLA,#data

代码:54H

操作:(A)(A)∧#data01011rrr0101011i01010100立即数

4.ANLA,dir

代码:55H

操作:(A)(A)∧(dir)说明:为p0~p3时,操作数来自端口锁存器5.ANLdir,A

代码:

52H

操作:(dir

)(dir)∧(A)说明:为p0~p3时,“读——修改——写”。01010101直接地址01010100直接地址

6.ANLdir,#data

代码:53H

操作:(dir)(dir)∧#data

说明:为p0~p3时,“读——修改——写”

7.ORLA,Rn

代码:48H~4FH

操作:(A)(A)∨(Rn)01010011直接地址立即数01001rrr

8.ORLA,@Ri

代码:46H~47H

操作:(A)(A)∨((Ri))0100011i

9.ORLA,#data

代码:

44H

操作:(A)(A)∨#data10.ORLA,dir

代码: 45H

操作:(A)(A)∨(direct)

说明:当dir为端口P0~P3时,数据 来自端口的锁存器。01000100立即数01000101直接地址

11.ORLdir,A

代码:42H

操作:(dir)(dir)∨(A)

说明:为p0~p3时,“读——修改——写”

12.ORLdir,#data

代码:15H

操作:(dir)(dir)∨#data

说明:为p0~p3时,“读——修改——写”01000010直接地址00010101直接地址立即数13.XRLA,Rn

代码:68H~6FH

操作:(A)(A)⊕(Rn)14.XRLA,@Ri

代码:66H~67H

操作:(A)(A)⊕((Ri))01101rrr0110011i

15.XRLA,#data

代码:64H

操作:(A)(A)⊕#data16.XRLA,dir

代码:65H

操作:(A)

(A)⊕(dir)说明:当dir为p0~p3时, 数据来自端口寄存器。01100100立即数01100101直接地址

17.XRLdir,A

代码:62H操作:(dir)

(dir)⊕(A)说明:地址为p0~p3时,是一条“读—修改—写”指令

18.XRLdir,#data

代码:63H

操作:(dir)(dir)⊕#data说明:地址为p0~p3时,是一条“读—修改—写”指令01100010直接地址01000010直接地址立即数

19.RLA;A内容循环左移代码:23H操作:(An+1)←(An)(A0)←(A1)说明:不影响标志

20.RLCA;A内容连进位循环左移代码:23H操作:(An+1)←(An)(A0)←(C)(C)←(A7)0010001100100010

21.RRA;A内容循环右移代码:03H操作:(An)←(An+1)(A7)←(A0)22.RRCA;A内容连进位循环右移代码:13H操作:(An)←(An+1)(A)7←(C)(C)←(A0)000000110001001123.CPLA

代码:0F4H

操作:(A)(

24.CLRA

代码:0E4H

操作:(A)011110100111001003.2.5控制程序转移类指令

控制程序转移类指令共17条,不包含按布尔变量控制程序转移类指令。指令分为:64K全空间的长调用指令;64K内长转移指令;按2KB分块的ROM内的绝对调用;绝对转移指令;64K全空间的长相对转移;一页范围内的短相对转移;条件转移等指令。这类指令的助记符为:ACALL——绝对调用;AJMP——绝对转移;LCALL——长调用;LJMP——长转移;SJMP——短转移;JMP——间接长转移;JZ——累加器为零转移;JNZ——累加器非零转移;CJNE——累加器内容与内部RAM或专用 寄存器内容不等转移;DJNZ——寄存器内容减1不为零转移。

1.绝对调用:ACALLaddr11代码:

操作:

(PC)←(PC)+2得本条指令的下一条指令首址

(SP)←(SP)+1

((SP))←(PC7~0)

(PC)←(SP)+1((SP))←(PC15~8)

(PC10~0)指令中的2KB区内地址a10~0

新PC=PC15~11+PC10~0

保护PC低八位地址保护PC高八位地址A10A9A810001A7A6A5A4A3A2A1A0A10~A8表示页号;A7~A0表示页內地址。

2.绝对转移:

AJMPaddr11代码:

操作:(PC)←(PC)+2(PC10~0)←指令中的A10~0

新PC=PC15~11+A10~0A10A9A800001A7A6A5A4A3A2A1A0

3.长调用:LCALLaddr16代码:

12H操作:

(PC)←(PC)+3;得本指令的下一条 指令首址,

(SP)←(SP)+1

((SP))←(PC7~0)

(PC)←(SP)+1((SP))←(PC15~8)

(PC)指令中的addr15~0

保护PC低八位地址保护PC高八位地址00100001addr15~8addr7~0

4.长转移

LJMPaddr16代码:

02H操作:

(PC)←指令中的addr15~0。说明:可转移的目的地址在64KB中的任意单元。

00100000addr15~8addr7~0

5.短转移

STMPREL80H代码:

80H操作:(PC)(PC)+2(PC)(PC)+相对地址说明:相对地址——是带符号(2的补码)的偏 移量其范围:-128~+127。

负——向后转移正——向前转移10000000相对地址

6.间接长转移

JMP@A+DPTR

代码:73H

操作:(PC)(A)+(DPTR)说明:不改变A和DPTR内容。01110011

7.子程序返回

RET代码:22H操作:(PC15~8)((SP))(SP)(SP)-1(PC7~0)((SP))(SP)(SP)-1恢复断点地址高八位恢复断点地址低八位00100010

8.中断返回

RETI代码:32H操作:(PC15~8)((SP))(SP)(SP)-1(PC7~0)((SP))(SP)(SP)-1恢复断点地址高八位恢复断点地址低八位00110010

9.累加器为零转移

JZ REL代码:60H操作:(A)0,(PC)(PC)+2;(A)=0,(PC)(PC)+2+相对地址。01100000相对地址

10.累加器非零转移

JNZREL代码:70H操作:

(A)=0,(PC)(PC)+2;(A)0,(PC)(PC)+2+相对地址。01110000相对地址

11.A中的内容与#data不等转移

CJNEA,#data,rel代码:0B4H操作:#data=(A),(PC)(PC)+3,(C)←0;#data<(A),(PC)(PC)+3+相对地址,

(C)←0;

#data>(A),(PC)(PC)+3+相对地址,

(C)←1。10110100立即数相对地址

12.A中的内容与内部RAM或专用寄存器不等转移

CJNEA,dir,rel代码:

0B5H操作:(dir)=(A),(PC)(PC)+3,(C)←0;(dir)<(A),(PC)(PC)+3+rel,(C)←0;(dir)>(A),(PC)(PC)+3+rel,(C)←1。10110101直接地址相对地址

13.Rn中的内容与#data不等转移

CJNEA,#data,rel代码:

0B8H~0BFH操作:#data=(Rn),(PC)(PC)+3,(C)←0;#data<(Rn),(PC)(PC)+3+rel,(C)←0;#data>(Rn),(PC)(PC)+3+rel,(C)←1。10111rrr立即数相对地址

14.内部RAM的内容与#data不等转移

CJNE@Ri

,#data,reL代码:0B6H~0B7H操作:#data=(Ri),(PC)(PC)+3,(C)←0;#data<(Ri),(PC)(PC)+3+rel,(C)←0;#data>(Ri),(PC)(PC)+3+rel,(C)←1。1011011i立即数相对地址

15.Rn中的内容减1不为零转移

DJNZRn,rel代码:0D8H~0DFH操作:(Rn)(Rn)—1Rn=0:(PC)(PC)+2(顺序排列);Rn0:(PC)(PC)+2+rel。11011rrr相对地址

16.内部RAM或专用寄存器内容减1不为零转移

DJNZdir,rel代码:

0D5H操作:(dir)(dir)—1(dir)=0,(PC)(PC)+2(顺序排列);(dir)0,(PC)(PC)+2+rel。说明:当direct为端口P0~P3时,这是一条“读—修改—写”指令。10110101直接地址相对地址

17.空操作

NOP

代码:00H

操作

:(PC)(PC)+1000000003.2.6布尔变量操作类指令在MCS—51硬件结构中有一个布尔处理器和一个专门处理布尔变量的指令子集,包括有:

布尔变量的传送;逻辑运算;控制程序转移指令。在布尔处理器中,CY的作用相当于一般的CPU中的A,通过CY完成位的传送和逻辑运算。共有17条指令,其格式有四种形式:操作码(单字节)操作码

偏移地址(双字节)操作码

位地址(双字节)操作码

位地址

偏移地址(三字节)位地址有:内部RAM(20H~2FH)中连续的128位和专用寄存器中的可寻址位: 80H~0FFH中不连续单元的位。从80H开始,每八个单元有一个可位寻址的专用寄存器。目前已定义了12个:

B,ACC,PSW,IP,P3,IE,P2,SCON,PI,TCON,P0,T2CON

其中:B,ACC加上内部RAM中的128位,共144位,可用作软件标志或存放布尔变量。 指令中位地址的表达有多种方式:直接地址方式:0D5H点操作符方式:PSW·5位名称方式:F0用户定义方式:用伪指令bit例如:USR_FLGbitF0定义后,允许指令中用USR_FLG代替F0。

以上四种方式都是指PSW中的位5

(它的位地址:0D5H;名称为:F0;

用户定义名为:USR_FLG)。

位操作的17条指令助记符有:MOV——传送;CLK——清进位标志;CPL——进位标志取反;SETB——置位标志;ANL——逻辑与;ORL——逻辑或;JC——进位标志置位转移;JNC——进位标志为零转移;JB——直接寻址位置位转移;JNB——直接寻址位为零转移;JBC——直接寻址位置位转移并将该位复位。

1.格式:MOV

温馨提示

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

最新文档

评论

0/150

提交评论