51单片机的指令系统
MCS-51单片机的指令系统

整理ppt
12
4.2 寻址方式
51汇编语言有42种操作码助记符,用来描述33种操作功 能。一种操作码可以使用一种以上的数据类型,又由于 助记符规定了其访问的存储器空间,所以一种功能可能 有几个助记符(如MOV、MOVX、MOVC)。功能助记 符与寻址方式组合,得到111条指令。
整理ppt
13
4.2 寻址方式
1)无操作数单字节指令
这类指令只有操作码字段,操作数隐含在操作码中。
例如:INC DPTR
指令码为 :
数据指针隐含其中
整理ppt
6
指令的组成及字节数
2)含有操作数寄存器号的单字节指令 单字节的指令码由操作码字段和指示操作数所 在寄 存器号的字段组成。 例如;MOV A,Rn 指令码为:
其中,rrr为寄存器Rn的编号
整理ppt
2
4.1 指令和指令程序
“指令”: CPU能直接识别和执行的命令。 指令系统:CPU所能执行的全部指令的集合。
与CPU的能力、使用的方便灵活性密切相关。 指令的记忆问题?指令本身是二进制代码。
例如以下的51单片机指令:
把10放到累 740AH 加器A中 为பைடு நூலகம்便于记忆 指令助
A加20,结 果仍在A中
整理ppt
8
指令的组成及字节数
3.三字节指令(17条)
这条指令的指令码的第1字节为操作码;第2和第3字节为 操作数或操作数地址,有如下3类。 1)16位数据 例如:MOV DPTR,#26ABH 指令码为:
整理ppt
9
指令的组成及字节数
2)8位地址和8位数据 例如:MOV 74H,#0FFH 指令码为:
在MCS-51指令中,若操作数是以R0~R7来表示操作数时, 就属于寄存器寻址方式。
第三章MCS51系列单片机指令系统及汇编语言程序设计

SJMP rel ;PC+ 2 + rel→PC 短转移指令为一页地址范围内的相对转移指令。因为rel为1字节补码 偏移量,且SJMP rel指令为2字节指令,所以转移范围为-126D~+ 129D 【4】间接转移指令
表3.4 程序存储器空间中的32个基本2K地址范围
0000H~07FFH 0800H~0FFFH 1000H~17FFH 1800H~1FFFH 2000H~27FFH 2800H~2FFFH 3000H~37FFH 3800H~3FFFH 4000H~47FFH 4800H~4FFFH 5000H~57FFH
3. 寄存器寻址
以通用寄存器的内容为操作数的寻址方式。通用寄存 器包括:A,B,DPTR,R0~R7。其中,R0~R7必须在 工作寄存器组之中。
例如:INC R0 ;(R0)+1→R0
需要注意的是,A和B既是通用寄存器,又是具有直 接地址的特殊功能寄存器。
4. 寄存器间接寻址
以寄存器中的内容为地址,该地址中的内容为操作数的寻址方式。能够 用于寄存器间接寻址的寄存器有:R0,R1,DPTR,SP。其中,R0,R1必 须在工作寄存器组之中,SP仅用于堆栈操作。
MCS-51单片机共有111条指令,按功能分类, MCS-51指令系统可分为5大类:
➢ 数据传送类指令(共29条) ➢ 算术操作类指令(共24条) ➢ 逻辑操作类指令(共24条) ➢ 控制转移类指令(共17条) ➢ 布尔变量操作类指令(共17条)
1.数据传送类指令(共29条)
以累加器A为目的操作数类指令(4条)
第3章 51单片机指令系统

3.1.3 堆栈操作指令
(1)入栈指令:
PUSH direct; SP ← SP+1, (SP) ← (direct)
入栈操作:栈指针SP+1指向栈顶的上 一个空单元,将直接地址direct寻址的单元 内容压入当前SP所指示的堆栈单元中。 (本操作不影响标志位)
例3-3 在中断响应时,SP=09H,数据 指针DPTR的内容为0123H。执行下列指令 后:
MOV @Ri , A ; (Ri)←A MOV @Ri , direct ; (Ri)←(direct) MOV @Ri , data ; (Ri)←#data 上述指令将累加器A,直接地址单元内 容或立即数送到Ri间接寻址单元中。由于内 容较多,下面需要说明:
累加器A是个使用最多的寄存器,MCS-51单 片机以A为中心体系结构。绝大部分指令均需通 过A送到ALU进行运算,结果存于A中,有些指令 仅在A中进行。 直接地址direct ,8位直接地址可寻址0~255个 单元。对于8051则直接寻址内部RAM0~127地址 空间的单元及128~255地址空间的特殊功能寄存 器。这里需注意128~255地址空间很多单元开始 时无定义,对无定义单元进行读/写,则读数不定, 欲写入的数将丢失。 间接寻址@Ri,@间接寻址的符号,是以Ri 的内容作为地址进行寻址,亦即Ri的内容不是操 作数,而是地址。此地址所对应的单元内容才是 所要找的操作数。间接寻址的寻址范围与直接寻 址相同(0~255)。直接寻址单元在编程时就已 明确,而间接寻址单元是在程序运行中明确。
单片机应用-MCS-51单片机指令系统

单片机应用-MCS-51单片机指令系统单片机应用 MCS-51 单片机指令系统在当今的电子技术领域,单片机的应用可谓无处不在。
从家用电器到工业自动化,从医疗设备到航空航天,单片机都扮演着至关重要的角色。
而在众多单片机中,MCS-51 单片机以其经典的架构和丰富的指令系统,成为了学习和应用单片机的重要基础。
MCS-51 单片机的指令系统是其能够实现各种功能的核心。
指令就像是单片机的“语言”,通过这些指令,我们可以让单片机执行各种各样的任务,如数据的运算、存储和传输,控制外部设备的工作,实现复杂的逻辑判断等等。
MCS-51 单片机的指令可以分为五大类:数据传送指令、算术运算指令、逻辑运算指令、控制转移指令和位操作指令。
数据传送指令是最基本也是最常用的指令类型。
它包括了将数据从一个存储单元传送到另一个存储单元,或者将立即数传送到寄存器或存储单元等操作。
例如,“MOV A, 50H”这条指令就是将立即数 50H 传送到累加器 A 中。
通过数据传送指令,我们可以在单片机内部实现数据的灵活调配和共享。
算术运算指令则用于进行加、减、乘、除等基本的数学运算。
这些指令能够对寄存器中的数据或者立即数进行操作,并将结果存放在指定的寄存器中。
比如,“ADD A, R0”指令会将累加器 A 的值和寄存器R0 的值相加,结果存放在累加器 A 中。
算术运算指令在实现数据处理和计算功能时非常有用。
逻辑运算指令主要包括与、或、异或等操作。
这些指令可以对寄存器中的数据进行位级的逻辑运算,从而实现对数据的筛选、组合和变换。
例如,“ANL A, R0”指令会对累加器 A 和寄存器 R0 的值进行按位与操作。
控制转移指令是实现程序流程控制的关键。
它们可以让程序根据特定的条件跳转到不同的地址执行,或者在一定的范围内循环执行一段代码。
常见的控制转移指令有无条件转移指令(如“LJMP addr16”)、条件转移指令(如“JC rel”)和循环指令(如“DJNZ Rn, rel”)。
MCS-51单片机指令系统

6、堆栈操作指令
进栈 【PUSH direct;(SP)+1→SP,(dirsct)→(SP)】 出栈 【POP direct;(SP)→(dirsct),(SP)-1→SP】
MCS-51指令系统中有两条读程序存储器中表格数据的指令。 因为对程序存储器只能读不能写,所以查表指令数据传送都是单向的, 即从程序存储器到累加器中。
SETB C;1→C置一
3、位逻辑运算指令
ANL C,bit;C)∧(bit)→C
ORL C,/bit;(C)∨(~bit)→C
“ / “表示取反
JB bit,re1;若(bit)=1,则(PC)+rel→PC;否则,(PC)+3→PC
4、位条件转移指令
JNB bit,re1;若(bit)=0,则(PC)+rel→PC;否则,(PC)+3→PC
1、逻辑与指令【ANL A,#data;(A)∧data→A 】
2、逻辑或指令【ORL A,#data;(A)∨data→A】
3、逻辑异或指令【XRL A,#data;(A)⊕data→A】
4、累加器A清零指令【CLA A;0→A 】
5、累加器A取反指令【CPL A; ̅A→A】
RL A;左循环移位指令
2、以Rn为目的操作数的指令 【MOV Rn, #data;data→Rn】 (源操作数:累加器A、片内RAM单元、SFR内容,立即数) 传送到当前工作寄存器组R0~R7的某个寄存器
3、以直接地址为目的操作数的指令 【MOV direct, #data;data→direct】 (源操作数:累加器、片内RAM单元、工作寄存器,立即数) 传送到由direct所指的片内存储单元
返回指令
51系列单片机指令系统

MOV DPTR,#1000H MOVX A,@DPTR INC DPTR, MOVX @DPTR,A 7、程序存储器向累加器A传送指令 MOVC A,@A+DPTR MOV DPTR,#100H MOV A,R0 MOVC A,@A+DPTR ORG 0100H. DB 0,1,4,9,16,25 8、堆栈操作指令 PUSH direct POP direct 第一条指令称之为入栈指令,就是将direct中的内容 送入堆栈中,第二条指令称之为弹出指令,就是将堆栈 中的内容送回到direct中。
位寻址时,操作数是二进制数的某一位,其位地 址出现在指令中,例如指令 • SETB bit ;(bit) ← l • 51系列单片机可用于位寻址的空间是内部RAM的可 位寻址区和SFR区中的字节地址可以被8整除(即地址以 “0”或“8”结尾)的寄存器所占空间,寻址方式如表 2-2所示。
表2-2 寻址方式一览表
寻 址 方 式
寻 址 范 围
R0-R7 ,DPTR ACC,B,C(CY位)
内部RAM 00H-7FH 特殊功能寄存器 80H-FFH 内部RAM位寻址区 (20H-2FH): 位地址00H-7FH 可寻址的特殊功能寄存器: 位地址 80H-F7H 以数据指针表示操作数 内部RAM 00H-7FH 外部RAM或I/O端口 00H-FFH / 0000H-FFFFH
图2-3 寄存器间接寻址
图2-4 立即寻址
4、立即寻址
•
立即寻址时,指令中直接给出操作数。例如指令 MOV A,#76H ;数据76H送累加器 A。 • 立即数寻址过程如图2-4所示。
5、变址寻址
•
变址寻址时,指定的变址寄存器的内容与指令中 给出的偏移量相加,所得的结果作为操作数的地址。 例如指令MOVC A, @A+DPTR ;((A)+(DPTR))送 A。变址寻址过程如图2-5所示。 不论用DPTR或PC作为基址指针,变址寻址方式都 只适用于51系列单片机的程序存储器,通常用于读取 数据表也就是将程序存储器中的数送入A中。因此也称 为查表指令,常用此指令来查一个已做好在程序存储 器中的表格,这条指令采用变址寻址。
第3章 MCS-51指令系统
16
MCS-51单片机指令系统
MCS-51单片机指令系统包括111条指令 按功能可以划分为以下5类:
1. 数据传送和交换指令(29条)
2. 算术运算指令(24条) 3. 逻辑运算指令(24条) 4. 控制转移指令(17条) 5. 位操作指令(17条)
17
数据传送和交换类指令主要有以下几种:
1. 2. 3.
30H
Eg:MOV 30H,#33H 33H
30H
XX 30H
33H
30H
31H
Eg:MOV 30H,31H
55H
XX
55H
25
A
30H XX
地址
30H 33H
Eg:MOV 30H, A
33H
R0
Eg:MOV 30H,@R0
55H
取出
30H 78H 30H
55H
R3
78H
30H XX
55H
MOV A , 30H
XX 55H
30H
A
6
3、寄存器寻址
寄存器寻址是指将操作数存放于寄存器中,寄存器包括工作寄 存器R0~R7、累加器A、通用寄存器B、地址寄存器DPTR等。 数据存放在R0~R7中的某个通用寄存器内,或者放在某个专用 寄存器中。 e.g.: MOV A,R7 ADD A,R0
DPTR
2000H
DPTR 2000H
XXXX
Eg:将数据指针DPTR指向存于ROM中的表格首地址。
MOV DPTR,#TABLE
27
三、片外数据传递指令
使用DPTR和Ri进行间接寻址 MOVX A, @DPTR ;A ←((DPTR))片外 MOVX A,@Ri ;A ←((Ri))片外 MOVX @DPTR,A ;(DPTR)片外←(A) MOVX @Ri,A ;(Ri)片外←(A) 注意: 该指令用于在单片机和外部RAM、扩展I/O的数据传送; 使用Ri时,只能访问低8位地址为00H~FFH地址段; 使用DPTR时,能访问0000H ~ FFFFH地址段。
MCS-51系列单片机的指令系统
51系列单片机指令系统包含5种功能类型的指令,7 种寻址方式,共有111条指令。
addr16 16位目标地址,片外数据存储器或程序存储器以及外 部芯片的地址,用于LCALL和LJMP指令中;
addr11 11位目标地址,片内数据存储器或程序存储器的地址, 用于ACALL和AJMP指令中;
rel 相关地址,8位带符号偏移量,一般是程序存储器字节地址, 通常在跳转类指令中使用,其对应的十进制范围为-128~+127;
立即寻址就是直接给出操作数。
取指令时,即可由程序存储器中直接取得操作数据。51单 片机中除了一条指令(MOV DPTR,#data16)是16位长 的立即数外,其余都是8位的立即数。
例如:MOV A,#30H;无论执行之前A中的内容是多少, 则执行后A=30H。
值得注意的一点是:在立即数寻址中立即数前面必须要加 上一个“#”号,“#”表示其后面内容为立即数而不是一个 字节单元地址。
bit 位地址,针对片内数据存储器中的可位寻址的位使用; DPTR 数据指针,可用做16位的地址寄存器; (X) X指寄存器或十六进制数,则(X)为指向以X寄存器中的内
容为目标地址的单元或以十六进制数据为目标地址的单元; ← 数据传送的方向,将左边的内容送入右边; A 累加器; ACC 直接寻址方式的累加器; B 寄存器B; C 进位标志位,是布尔处理机的累加器,也称为位累加器。
任何一种处理器都必须经过设计人员对
《单片机》教学课件51单片机的指令系统
MOV Rn ,direct
;(direct)→Rn ,n =0~7
MOV Rn ,#data
;#data→Rn ,n =0~7
把源操作数送入当前寄存器区的R0~R7中的某一寄存器。
3.以直接地址direct为目的操作数的指令
MOV direct,A
; (A)→direct
MOV direct,Rn
寻址空间内快速地找到指定的地址单元。 下面介绍指令系统7种寻址方式。
5
1.寄存器寻址方式
指令中的操作数为某一寄存器的内容。
例如:MOV A,Rn
;(Rn)→A,n =0~7
把Rn中的源操作数送入到累加器A中。由于指令指定了从寄存 器Rn中取得源操作数,所以称为寄存器寻址方式。
本寻址方式的寻址范围:
4.以寄存器间接地址为目的操作数的指令
MOV @Ri,A
;(A)→((Ri)), i=0,1
MOV @Ri,direct ;(direct)→((Ri)),i=0,1
MOV @Ri,#data ;#data→((Ri)), i=0,1
功能是把源操作数内容送入R0或R1指定的存储单元中。
5.16位数传送指令
内部RAM的00H~7FH共128个单元。 6.堆栈操作指令 内部RAM中设定一个后进先出(LIFO,Last In First Out)
的区域,称为堆栈。在特殊功能寄存器中有一个堆栈指针 SP,指示堆栈的栈顶位置。堆栈操作有进栈和出栈两种, 因此,在指令系统中相应有两条堆栈操作指令。
22
(1)进栈指令 PUSH direct
(1)4组通用工作寄存区共32个工作寄存器。但只对当前工 作寄存器区的8个工作寄存器寻址,指令中的寄存器名称只 能是R0~R7。
第3章MCS-51单片机指令系统
第3章MCS-51单片机指令系统3.1概述3.1.1指令格式3.1.2指令的三种表示形式3.1.3指令的字节数1. 单字节指令(49条)图3-1 MOVA,Rn指令的格式2单片机原理及其接口技术(第2版)2. 双字节指令(46条)3. 三字节指令(16条)3.1.4指令的分类1. 数据传送指令(28条)2. 算术运算指令(24条)3. 逻辑操作和环移指令(25条)4. 控制转移指令(17条)5. 位操作指令(17条)3.1.5指令系统综述1. 指令系统中所用符号的说明2. 指令对标志位的影响3.2寻址方式3.2.1寄存器寻址图3-2寄存器寻址示意图单片机原理及其接口技术(第2版) 3 3.2.2直接寻址图3-3直接寻址示意图3.2.3立即寻址3.2.4寄存器间址图3-4寄存器间址寻址示意图3.2.5变址寻址图3-5变址寻址示意图4单片机原理及其接口技术(第2版)3.2.6相对寻址图3-6相对寻址示意图3.2.7位寻址3.3数据传送指令3.3.1内部数据传送指令(15条)1. 立即寻址型传送指令2. 直接寻址型传送指令3. 寄存器寻址型传送指令4. 寄存器间址型传送指令5. 内部数据传送指令的使用图3-7 8×C552/8051指令的数据传送方式单片机原理及其接口技术(第2版) 5 3.3.2外部数据传送指令(7条)1. 16位数传送指令2. 外部ROM的字节传送指令图3-8 0~9平方值表3. 外部RAM的字节传送指令3.3.3堆栈操作指令(2条)图3-9例3.8的堆栈变化示意图6单片机原理及其接口技术(第2版)3.3.4数据交换指令(4条)3.4算术与逻辑运算和移位指令3.4.1算术运算指令(24条)1. 加法指令2. 减法指令3. 十进制调整指令4. 乘法和除法指令3.4.2逻辑运算指令(20条)1. 逻辑与运算指令2. 逻辑或指令3. 逻辑异或指令4. 累加器清零和取反指令3.4.3移位指令(5条)单片机原理及其接口技术(第2版)7图3-10例3.26附图3.5控制转移和位操作指令3.5.1控制转移指令(17条)1. 无条件转移指令图3-11 AJMP指令转移范围8单片机原理及其接口技术(第2版)图3-12例3.29附图图3-13带符号数的比较方法3. 子程序调用和返回指令图3-14二级子程序嵌套及断点地址存放单片机原理及其接口技术(第2版)9图3-15例3.33附图10单片机原理及其接口技术(第2版)4. 空操作指令3.5.2位操作指令(17条)1. 位传送指令2. 位置位和位清零指令3. 位运算指令4. 位控制转移指令习题与思考题3.1指令通常有哪三种表示形式?各有什么特点?3. 2 MCS-51指令按功能可以分为哪几类?每类指令的作用是什么?3. 3 MCS-51共有哪七种寻址方式?各有什么特点?3. 4指出下列每条指令源操作数的寻址方式和功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
51单片机的指令系统一、寻址方式:1、立即寻址MOV A,#172、直接寻址MOV A ,3DH3、寄存器寻址MOV A,R14、寄存器间接寻址MOV A.@R1间接寻址,就是将操作数保存到RAM中的地址,而该RAM的地址放在寄存器中,通过访问寄存器来获得RAM中的操作数。
寄存器间接寻址也用到了寄存器。
R1的内容3DH是操作数在RAM中的地址,内部RAM的3DH单元的内容2FH才是操作数。
5、变址寻址MOV A,@A+DPTR6、相对寻址SJMP 33H7、位寻址MOV C,2AH.3二、数据传送指令:1、数据传送指令29条2、算术指令24条3、逻辑运算及移位指令24条4、控制移位指令17条5、位操作指令三、内部RAM数据传送指令1、以累加器A为目的操作数的数据传送指令(4种寻址方式)1)、立即寻址:MOV A,#5F2)、直接寻址:MOV A,4A3)、寄存器寻址:MOV A,R14)、寄存器间接寻址:MOV A,@R12、以直接地址为目的操作数的数据传送指令(源操作数可以采用4中寻址方式)1)、立即寻址:MOV 37H,#5F2)、直接寻址:MOV 37H,6FH3)、寄存器寻址:MOV 37H,RnMOV 37H,A4)、寄存器间接寻址MOV 37H,@Ri3、以寄存器Rn为目的操作数的数据传送指令(源操作数可以采用3中操作方式)1)、立即寻址:MOV Rn,#8DH2)、直接寻址:MOV Rn,67H3)、寄存器寻址:MOV Rn,A4、以间接地址@Ri为目的的操作数的数据传送指令(源操作数可以采用3中操作方式)1)、立即寻址:MOV @Ri,#43H2)、直接寻址:MOV @Ri,51H3)、寄存器寻址:MOV @Ri,A5、以DPTR为目的的操作数的数据传送(该指令的功能是将外部存储器(RAM或ROM)某单元地址作为立即数传送到DPTR中。
指令:MOV DPTR,#5678H6、MOV A@RO 1字节MOV A,direct(直字节地址符号)2字节MOV direct,#DATA 3字节MOV DPTR,#data16 4 字节7、立即数(#17H)前面都标有#号。
立即数格式:1 十六进制数立即数#12H2 十进制数立即数#12D 立即数末尾的字符D可以省略3 八进制数立即数#12O4 二进制数立即数#12B8、直接寻址----直接寻址是在指令中直接给出操作数的单元地址。
(1)单片机内RAM底128字节单元,在指令直接地址以单元地址形式给出,单片机内底128字节地址为00H-7FH,在这128位地址的直接寻址方式中,00H代表0位,01H代表1位。
字节寻高18位,特殊功能寄存器SFRFFH EFH DFH CFH BFH AFH 9FH 8FH字节寻址7FH 数据缓冲区堆区用户工作区6FH5FH4FH3FH单元地址MSB 位地址LSB位寻址00H- 7FH 2FH 7FH2EH 70H 2DH 6FH2CH 60H 2BH 5FH2AH 50H 29H 4FH28H 40H 27H 3FH26H 30H 25H 2FH24H 20H 23H 1FH22H 10H 21H 0FH 0EH 0DH 0CH 0BH 0AH 09H 08H 20H 07H 06H 05H 04H 03H 02H 01H 00H工作寄存器1FH第3工作组78H18H 40H 17H第2工作组38H 10H 10H0FH第1工作组78H 08H 40H 07H第0工作组38H 00H 00H四、外部RAM数据传送指令:1、以DPTR作为间接寻址寄存器MOVX A,@DPTRMOVX @DPTR,A2、以RO或R1作为间接寻址寄存器MOVX A,@RiMOVX @Ri,A五、程序存储器数据传送指令MOVC A, @A+PCMOVC A,A+DPTR源操作数都是采用变址寻址方式,并且都是单字节指令该指令常用于查阅建立在ROM中的表格数据,①MOVC A,@A+PC②MOVC A,@A+DPTR六、数据交换指令①整字节交换指令(3条指令)直接寻址:XCH A,direct寄存器寻址:XCH A,Rn寄存器间接寻址:XCH A,@Ri②半字节交换指令:XCHD A,@Ri③累加器高低半字节交换指令:SWAP A七、堆栈操作指令:进栈指令:PUSH direct出栈指令:P0P direct八、算术运算指令①加法指令:立即寻址:ADD A,#data直接寻址:ADD A,direct寄存器寻址:ADD A,Rn寄存器间接寻址:ADD A,@RiA←(A)+direct 、#data 、Rn、@Ri②带进位的加法指令:1)、立即寻址:ADDC A,#data2)、直接寻址:ADDC A,direct3)、寄存器寻址:ADDC A,Rn4)、寄存器间接寻址:ADDC A,@Ri5)、A←(A)+(direct 、#data 、Rn、@Ri )+(cy)6)、进位(错位)标志CY:在加法运算中,如果D7 位向上有进位,则CY=1:否则CY=0.7)、半进位标志AC:在加法运算中,如果底4位向高4位有进位,则AC=1,否则AC=0。
8)、溢出标志OV:在加法运算中,如果D6、D7位只有一个向上有进位,则OV=1,否则OV=09)奇偶标志位P:当A中的“1”的个数为奇数时P=1个数为偶数时P=0注意:无符号数用CY表示进位、溢出(不考虑OV位),有符号数用OV 表示溢出(不考虑CY位)。
如果两个正数或两个负数相加时,发生溢出,将改变结果的符号位,所有结果都是错误的,(OV)=1指出了这一类的错误。
10)先底字节相加,后高字节相加九、带借位的减法指令1立即寻址:SUBB A,#data2)直接寻址:SUBB A,direct3)寄存器寻址:SUBB A,Rn4)寄存器间接寻址:SUBB A,@Ri5)借位标志CY: 如果D7向上有借位,则CY=1。
否则CY=06)半借位标志AC:如果D3位向上借位,则AC=1;否则AC=07)溢出标志OV:如果D6、D7位只有一个向上借位,则OV=1否则AC=08)奇偶标志位P:同加法一样。
9)注意事项:51单片机指令系统中只有带借位减法指令,没有不带借位的减法指令。
若要进行不带借位的减法运算,应先将CY清零,然后再执行本指令。
在单片机CPU内部进行减法运算时,实际上是将操作数变成补码,然后再相加。
如果两个带符号数相减时,有时候会发生溢出,将改变结果的符号位,这样的结果是错误的(哦)=1便指出了这一类的错误。
十、加1指令:1)、直接寻址; INC direct2)、寄存器寻址:INC RnINC DPTR3)、寄存器间接寻址:INC @Ri十一、建1指令:1)、直接寻址; DEC direct2)、寄存器寻址:DEC RnDEC DPTR3)、寄存器间接寻址:DEC @Ri十二、乘法指令:乘法指令是把累加器A和寄存器B中的两个数据相乘的运算指令,期中,A和B中的数据均为8位无符号数,所得的乘积结果为16位无符号数据,结果的底8位存放累加器的A中,高8位存放在寄存器B中,指令格式以下。
MUL AB BA←(A)×(B)乘法指令的执行会影响以下三个标志:①进位(借位)标志CY总是被清零②溢出标志OV:若乘积小于FFH(及B的内容为0),十三、除法指令:除法指令是把累加器A和寄存器B的两个数据相除的运算指令。
除法指令在执行前,需要将被除数放在累加器A 中,将除数放在寄存器B中,被除数和除数都是8位无符号数。
指令执行完毕后,将所得的结果的商放在累加器的A中,余数放在寄存器B中。
指令的格式如下。
DIV AB十四、十进制调整指令:十进制调整指令是对累加器A中有前两个变量(每一个变量均压缩的BCD吗)的加法结果进行BCD码修正指令。
指令执行的结果将变为BCD的码,指令格式如下:DA ABCD码就是采用4位二进制编码来表示十进制数,4位二进制数共有16个编码,即0000~1111,BCD码是取其10个编码(即000~1001)来表示的十进制数0~9,这种编码称为“84211BCD码”简称“BCD码”十五、逻辑运算指令1、与指令2、或指令3、异或指令4、每类各有六条指令6、累加器A清零指令一条7、取反指令一条8、移位指令四条9、逻辑运算指令24条1)、逻辑与指令符号“∧”来表示与。
逻辑运算与全1出1ANL A, #data A←(A) ∧dataANL A, #direct A←(A) ∧directANL A, #Rn A←(A) ∧RnANL A, #@Rn A←(A) ∧@Rn 上述指令执行中,将累加器A的内容和源操作数所指的内容安位相与,逻辑的结果存放在累加器A中。
2)、存放在直接寻址单元中ANL direct, #data direct←(direct)∧dataANL direct, A direct←(direct)∧A十六、逻辑或指令符号“∨”来表示或指令逻辑或运算有1出1ORL A, #data A←(A) ∨dataOR L A, #direct A←(A) ∨directORL A, #Rn A←(A) ∨RnORL A, #@Rn A←(A)∨@Rn上述指令执行中,将累加器A的内容和源操作数所指的内容安位相或,逻辑的结果存放在累加器A中。
2)、存放在直接寻址单元中ORL direct, #data direct←(direct)∨dataORL direct, A direct←(direct)∨A逻辑或运算指令常用于将某些位置位,即使之为1,只要将需要置位的位和1相或要保留的位和0相或即可。
十七、逻辑异或指令符号“⊕”来表示异或指令。
逻辑异或运算有1出1,全0出0、全1出0.XRL A, #data A←(A) ⊕dataXRL A, #direct A←(A) ⊕directXRL A, #Rn A←(A) ⊕RnXRL A, #@Rn A←(A)⊕@Rn上述指令执行中,将累加器A的内容和源操作数所指的内容安位相异或,逻辑的结果存放在累加器A中。
2)、存放在直接寻址单元中XRL direct, #data direct←(direct)⊕dataXRL direct, A direct←(direct)⊕A逻辑异或运算指令常用于将某些位取反,即使0变成1,使1位变成0,只要将要求反的位和1异或,要保留的位和0异或即可。
十八、累加器清零指令累加器清零指令是将累加器中的数据清零的指令,为单字节指令。
CLR A十九、累加器取反指令累加器取反指令是将累加器A中的数据进行取反的操作指令 CPL A二十、循环指令循环左移:RL A An+1←An A0-A7循环右移:RL A An+1←An A0-A7代位循环左移:RLC A An+1←An cy←A7 ,A0←CY 代位循环右移:RRC A An+1←An A7←CY , CY←A0 二十一、控制转移指令1、长转移指令长转移指令是使用16位地址的程序转移指令。