MCS-51的指令系统
MCS-51指令系统

❖ 目的操作数寻址方式(3种):
直接寻址、寄存器寻址、寄存器间接寻址
除了目的操作数为ACC的指令影响奇偶标志P外,一般不影响
标志位。2022/2/15
16
3.3.1 十六位数的传递指令(1条)
MOV DPTR,#data16
8051是一种8位机,这是唯一的一条16位立即数传递指 令。功能:将一个16位的立即数送入DPTR中去。其中 高8位送入DPH,低8位送入DPL。
2022/2/15
2
常用符号 Rn:工作寄存器中的寄存器R0、R1…R7之一,
Ri:工作寄存器中的寄存器R0或R1
#data:8位立即数
#data16:16位立即数 direct:片内RAM或SFR的地址(8位)
@间接寻址寄存器
Bit:片内RAM或SFR的位地址 addr11:11位目的地址
addr16:16位目的地址
者内容相加,结果作为操作数的地址。
常用于查表操作。 ❖ MCS-51
操作数在程 序存储器中
MOVC A, @A+DPTR ;(A+DPTR) →A
MOVC A, @A+PC ; PC+1 →PC,(A+PC)→A
2022/2/15
10
如:MOVC A,@A+DPTR 设DPTR=2000H,A=E0H
常用于跳转指令。 如: JC 23H 若C=0,不跳转; C=1,跳转.
2022/2/15
12
如:JC 23
程序存储区
1000H 40 1001H 23 1002H 30
当前PC …
…
1024H 47 1025H 45
指令代码
23H
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单片机指令系统

第一条指令为远查表指令,可以在64K的程序存储器空间寻 址。基地址寄存器为DPTR,其意思为,DPTR里面存放的是 程序存储器中数据表格的首地址,A为数据地址的偏移量。
这条指令执行以后,以 (A)+(DPTR)的数值为地址数 据就送进A里面来了,也就是从表格首地址开始以后的第(A) 个数据被送进A了。(举例子说明)
编写好的程序都放在程序存储器中,由于一个存储地址所 指示的存储单元只能存放一字节的数据。所以,在存放指令时, 必须将指令拆分成一个一个字节进行连续存放。
比如: 实现“累加器加10H”这条指令,其机器语言为 0111010000010000, 占用了两个字节,就必须拆成两个字节 进行连续存储。
但是,用二进制来表示比较麻烦,因此,也常用十六进制来 表示如:74H 10H来表示以上这条机器语言。可见,用十六进 制表示指令比较简单,但是,指令系统有上百条指令,不易记 住。所以,一般采用容易记住的一些缩写符号来表示机器语言,
2. 在指令中直接给出操作数的地址, 这种寻址方式就属
于直接寻址方式。在这种方式中, 指令的操作数部分直接 是操作数的地址。
比如:MOV A,30H;将30H里面的数送到A里面 MOV 21H,30H;将30H里面的数存放到21H里面 在MCS -51 单片机指令系统中, 直接寻址方式中可
以访问 3 种存储器空间: (1) 内部数据存储器的低 128 个字节单元(00H~
7. 位寻址 指按照位进行的寻址操作,(前面讲的都是按字节进
行的寻址操作)。该种寻址方式中, 操作数是内部RAM单元 中20H到2FH的128个位地址以及SFR中的11个可进行 位寻址的寄存器中的位地址寻址。
比如:MOV C,20H;就是将RAM中位寻址区中20H位地 址中的内容送给C。区别与MOV A,20H;这个是将内部 RAM中20H单元的内容送给A。
第3章MCS-51指令系统

第3章 MCS-51指令系统 4. 伪指令 在汇编语言源程序中,除了包含可以转化为特定计算机系 统的机器语言指令所对应的汇编语言指令外,还可能包含一些 伪指令,如“ORG 2000H”、“END”等。“伪”者,假也,尽 尽 管它不是计算机系统对应的指令,汇编时也不产生机器码,但 管它不是计算机系统对应的指令,汇编时也不产生机器码, 汇编语言程序中的伪指令并非可有可无。伪指令的作用是指导 汇编语言程序中的伪指令并非可有可无。 源程序的汇编过程, 源程序的汇编过程,例如“ORG 2000H”伪指令,指示汇编程序 将该伪指令后的汇编语言指令对应的机器码从2000H单元开始存 放。
第3章 MCS-51指令系统
· 52/54子系列内部RAM后128字节(即地址编码为80~FFH) 各单元之间不能直接传送。原因是高128字节内部RAM只能使 用寄存器间接寻址方式,而一条指令中,最多只允许一个操作 数使用寄存器间接寻址方式。 数据传送指令一般不会影响程序状态字寄存器PSW中的标 志位,但当数据传送到累加器A时,PSW中的奇偶标志位P会改 变,原因是奇偶标志位P总是体现累加器A中“1”的个数的奇偶 性。
第3章 MCS-51指令系统 1. 内部 内部RAM与特殊功能寄存器之间的数据传送 与特殊功能寄存器之间的数据传送 表3-1 内部RAM与特殊功能寄存器之间的数据传送指令
指令名称 指令格式 MOV A,Rn 以累加器A作为 目的操作数 MOV A,direct MOV A,@Ri MOV A,#data 机器码 11101rrr 11100101 direct 1110011i 01110100 data 功能 A←Rn A←(direct) A←(Ri) A←data 指令周期 1 1 1 1
MOV 90H,0F0H ; 将特殊功能寄存器0F0H单元(即寄存器B) 内容传送到特殊功能寄存器90H ; 单元(即P1口锁存器)中
MCS-51单片机指令系统

MOV DPTR,#2000H
6、栈操作指令
PUSH direct; (SP)<-SP+1, ((SP))<(direct)
进栈指令的功能是先将SP的指针加1,然 后把直接地址指出的内容传送到栈指针SP寻 址的内部RAM单元中。
POP direct; (direct)<-((SP)), (SP)<-SP-1
@DPTR, A; ((DPTR))<-(A)
A, @R1
@DPTR,A
8、查表指令
MOVC A,@A+DPTR; (A)<-((A))+((DPTR)) MOVC A,@A+PC ; (A)<-((A))+((PC))
9、字节交换指令
XCH A, Rn; XCH A,direct; XCH A,@Ri;
XRL A, direct ; A与direct中的值 ;按位'异或',结果送入A中
XRL A, @Ri; A与间址寻址单元@Ri中 ;的值按位'异或',结果送入A中
4、逻辑异或指令
XRL A, #data ;A与立即数data按位 ;‘异或’,结果送入A中
XRL direct, A ; direct中值与A中的值 ;按位‘异或’, ;结果送入direct中
(A)<->(Rn) (A)<->(direct) (A)<->((Ri))
10、半字节交换指令
XCHD A,@Ri; (A)0-3<->((Ri))0-3
2、算术指令
1、不带进位位的加法
ADD
A, #data;
(A)<-(A)+#data
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所指的片内存储单元
返回指令
第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 进位标志位,是布尔处理机的累加器,也称为位累加器。
任何一种处理器都必须经过设计人员对
第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指出下列每条指令源操作数的寻址方式和功能。
第三章MCS-51指令系统
3.1 概述
3.2
3.3
寻址方式
MCS-51的指令系统
3.4
伪指令
3.1
概述
指令:使计算机完成某种操作的命令。 指令系统 :计算机能够执行的全部操作所对应的指 令集合。 机器语言: 采用二进制编码表示指令,是计算机能够直 接识别和执行的语言。 汇编语言: 采用助记符 、符号、数字来表示指令的程序 语言,它与机器语言指令时一一对应的。
如果我们分别向DPH,DPL送数,则结果也一样。
如下面两条指令: 则就相当于执行了 MOV DPH,#35H MOV DPTR,#3512H。 MOV DPL,#12H。
(6) 累加器A与片外RAM之间的数据传递类指令(4条)
MOVX A,@Ri MOVX @Ri,A MOVX A,@DPTR MOVX @DPTR,A 说明: 1.在51中,与外部存储器RAM打交道的只可以是A累加器。所 有需要送入外部RAM的数据必需要通过A送去,而所有要读入的外 部RAM中的数据也必需通过A读入。 在此我们可以看出内外部RAM的区别了,内部RAM间可以直接 进行数据的传递,而外部则不行。 比如,要将外部RAM中某一单元(设为0100H单元的数据)送 入另一个单元(设为0200H单元),也必须先将0100H单元中的内 容读入A,然后再送到0200H单元中去。
MOV B,R0
PUSH ACC
;R0→B,R0为寄存器寻 址,B为直接寻址。
;A的内容压入堆栈
3.2.4
寄存器间接寻址
例:MOV A, @R0
• 以寄存器中内容为地址,以该地址中内容为操作数的
寻址方式。间接寻址的存储器空间包括内部RAM和
外部RAM。 • 能用于寄存器间接寻址的寄存器有R0,R1,DPTR, SP。其中R0、R1必须是工作寄存器组中的寄存器。 SP仅用于堆栈操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.判断以下指令的正误:
(1)MOV 28H,@R2 (2)DEC DPTR (3)INC DPTR (4)CLR R0
(5)CPL R5 (6)MOV R0,R1 (7)PHSH DPTR (8)MOV F0,C (9)MOV F0,Acc.3 (10)MOVX A,@R1 (11)MOV C,30H (12)RLC R0
2.判断下列说法是否正确。
(A)立即寻址方式是被操作的数据本身在指令中,而不是它的地址在指令中。
(B)指令周期是执行一条指令的时间。
(C)指令中直接给出的操作数称为直接寻址。
3.在基址加变址寻址方式中,以()作变址寄存器,以()或()作基址寄存器。
4.MCS-51共有哪几种寻址方式?各有什么特点?
5.MCS-51指令按功能可以分为哪几类?每类指令的作用是什么?6.访问SFR,可使用哪些寻址方式?
7.指令格式是由()和()所组成,也可能仅由()组成。
8. 假定累加器A中的内容为30H,执行指令:
1000H:MOVC A,@A+PC
后,把程序存储器()单元的内容送入累加器A 中。
9.在MCS-51中,PC和DPTR都用于提供地址,但PC是为访问()存储器提供地址,而DPTR是为访问()存储器提供地址。
10.在寄存器间接寻址方式中,其“间接”体现在指令中寄存器的内容不是操作数,而是操作数的()。
11.下列程序段的功能是什么?
PUSH Acc
PUSH B
POP Acc
POP B
12. 已知程序执行前有A=02H,SP=52H,(51H)=FFH,(52H)
=FFH。
下述程序执行后:
POP DPH
POP DPL
MOV DPTR,#4000H
RL A
MOV B,A
MOVC A,@A+DPTR
PUSH Acc
MOV A,B
INC A
MOVC A,@A+DPTR
PUSH Acc
RET
ORG 4000H
DB 10H,80H,30H,50H,30H,50H
请问:A=(),SP=(),(51H)=(),(52H)=(),PC=()。
13.写出完成如下要求的指令,但是不能改变未涉及位的内容。
(A)把A CC.3,A CC.4,A CC.5和A CC.6清“0”。
(B)把累加器A的中间4位清“0”。
(C)使A CC.2和A CC.3置“1”。
14.假定A=83H,(R0)=17H,(17H)=34H,执行以下指令:
ANL A,#17H
ORL 17H,A
XRL A,@R0
CPL A
后,A的内容为()。
15.假设A=55H,R3=0AAH,在执行指令ANL A,R5后,A=(),R3=()。
16.如果DPTR=507BH,SP=32H,(30H)=50H,(31H)=5FH,(32H)=3CH,则执行下列指令后:
POP DPH
POP DPL
POP SP
则:DPH=(),DPL=(),SP=()17.假定,SP=60H,A=30H,B=70H,执行下列指令:
PUSH Acc
PUSH B
后,SP的内容为(),61H单元的内容为(),62H单元的内容为()。