第3章 MCS-51指令系统

发布者:温暖的微风最新更新时间:2024-08-09 来源: cnblogs关键字:MCS-51  指令系统  指令格式 手机看文章 扫描二维码
随时随地手机看文章

指令编码格式及分类

寻址方式

数据传送类指令

算术运算类指令

逻辑运算类指令

控制程序转移类指令

位操作类指令

学习指导和要求

理解和掌握指令的三种编码格式;

熟练掌握寻址方式;

熟记各种类型的指令格式及功能,并能编写简单程序。

§3-1 指令编码格式及分类

一、 指令编码格式

一条指令表示计算机所完成的某种操作。它通常由操作码和操作数两部分组成。例如:


MOV A,R1

本系统有下列三种指令编码格式:


单字节指令(49条)

格式1:


7 0

操作码

格式2:


7 0

操作码

双字节指令(46条)格式:

操作码

数据或地址

三字节指令(16条)格式:

操作码

数据或地址

数据或地址

例如:


一字节指令空操作NOP的编码格式为:

0 0 0 0 0 0 0 0

操作码

数据传送指令MOV A,R1的编码格式为:


1 1 1 0 1 0 0 1

操作码

两字节指令MOV A,#40H的编码格式为:

0 1 1 1 0 1 0 0 操作码74H

0 1 0 0 0 0 0 0 立即数40H

三字节指令MOV 20H,#3AH的编码格式为:

0 1 1 1 0 1 0 1 操作码75H

0 0 1 0 0 0 0 0 操作数的地址20H

0 0 1 1 1 0 1 0 立即数3AH

MOV DPTR,#1000H的编码格式为:


1 0 0 1 0 0 0 0 操作码90H

0 0 0 1 0 0 0 0 操作数高八位10H

0 0 0 0 0 0 0 0 操作数低八位00H

二、指令分类

按指令功能分为:


数据传送类指令(29条);算术运算类指令(24条);逻辑运算类指令(24条);控制转移类指令(17条);位操作指令(17条)。


在上述111条指令中,64条指令执行时间为一个机器周期,45条指令执行时间为两个机器周期,只有乘、除法指令执行时间为四个机器周期。当主频为12MHz时,典型指令执行时间为1us。


§3-2 寻址方式

寻址方式是指操作数存放存储单元地址的表示形式。


MCS-51指令系统共提供七种寻址方式:


立即寻址

该方式把操作数(即立即数)包含在指令字节中。在指令格式中,在立即数前冠以符号 '#'表示立即寻址方式。


例如:


MOV A,#40H ;A 40H

MOV DPTR,#1000H ; DPTR 1000H

存储格式为:


操作码

8位立即数

 

90H

10H

00H

 

操作码

高8位立即数

低8位立即数

直接寻址

该方式是把操作数的地址包含在指令字节中,而操作数本身则存放在该地址指示的数据存储单元中。在指令格式中,操作数的地址直接写在指令中。


例如:


MOV A,40H ;A (40H)

设:(40H)= 2BH


MOV A,40H 存储和执行示意图如图所示。


操作码

E5H A

 

直接地址

40H

 

40H

执行前,(40H)= 2BH

执行后,(40H)= 2BH,(A)= 2BH


寄存器寻址方式

该方式把操作数存放在指定的寄存器中。能实现这种寻址的寄存器有:R0~R7、A、B、DPTR。


例如:


MOV A,#30H ;A ←30H

立即寻址 寄存器寻址

 

MOV R0,R7 ;R0 (R7)

寄存器寻址寄存器寻址

寄存器间接寻址方式

该方式是把操作数的所在地址存放在指定的寄存器中。能实现这种寻址方式的寄存器有:R0、R1、DPTR。在指令格式中,在寄存器前面冠以符号'@'表示。


例如:


MOV A,@R0;A←((R0))

寄存器间接寻址

寄存器寻址

设:(R0)= 40H (40H)= 3FH

执行前:(R0)= 40H (40H)= 3FH

执行后:(R0)= 40H (40H)= 3FH (A)= 3FH


基址加变址寻址方式

该方式把DPTR或PC寄存器作为基址寄存器,累加器A作为变址寄存器,(A)+(PC)或(A)+(DPTR)的和作为操作数的16位地址。这种寻址方式的指令只有三条:


MOVC A,@A+DPTR ; A←((A)+(DPTR))

MOVC A, @A+PC ; A←((A)+(PC))

JMP @A+DPTR ;跳转至(A)+(DPTR)

前两条是程序存储器读指令,用MOCV助记符。


相对寻址方式

这种寻址方式是以程序计数器PC的当前值为基准,加上指令中给出的相对偏移量rel以形成目标地址。该寻址方式常用在条件转转指令中,相对偏移量rel给出相对于PC当前值的跳转范围,其值是一个带符号的8位二进制数,取值范为-128~127,以补码形式置于操作码之后存放。


位寻址方式

MCS-51具有位处理功能,可以对二进制'位'进行操作。


(1) 位寻址的寻址范围


内部RAM中的20H-2FH字节地址范围,共128位,位地址为00H-7FH。

特殊功能寄存器的可寻址位。可位寻址的特殊功能寄存器有B、ACC、PSW、IP、IE SCON、TCON、P0~P3,共81个。

PSW中的CY作为位累加器。

(2) 位寻址方式


位寻址方式使用直接寻址方式,有下列四种表示形式:


直接地址方式:在指令中直接给出位地址。

点操作符方式:在字节地址或寄存器名与位序号之间加一个点。

位名称方式:直接给出寄存器的位名称。

例如状态寄存器PSW的格式如下:


D7 D6 D5 D4 D3 D2 D1 D0 位地址

CY AC F0 RS1 RS0 OV / P D0H

位累加器

若将OV的内容传送到位累加器CY,可用下列指令完成。


MOV C ,0D2H MOV C,PSW.2

位地址 点方式

 

MOV C,0D0H.2 MOV C,OV

点方式 位名称

寻址方式与寻址存储空间:


寻址方式    符号表示    寻址存储空间

立  即      #data      程序存储器

直  接      direct     程序存储器和SFR

寄存器      寄存器名    R0~R7、A、B、DPTR

寄存器      @R0,@R1    内部RAM 00H~7FH

间  接      @DPTR      外部RAM 64KB

基址加      @A+PC      程序存储器

变  址      @A+DPTR

相对寻址    rel        程序存储器

指令表中符号意义的说明:


Rn: n=0~7,即R0~R7

Ri: i=0、1,即R0、R1

direct: 表示直接寻址方式

#data: 8位立即数

#data16: 16位立即数

addr16: 16位地址

addr11: 11位地址

rel: 相对偏移量

bit: 直接寻址位

§3-3 数据传送类指令

格式:MOV 目标,源;目标 源


特点:


(1) 指令中有数据源地址和传送数据目标地址, 传送方向由源地址中的数据传送到目的地址中,源地址中的内容不变。


(2) 数据传送类指令的执行结果不影响程序状态寄存器(PSW)中的各标志位。


数据传送类指令分为以下几种:


内部数据传送指令

数据传送在单片机内部进行,不通过外部总线,传送速度快。指令格式如下:


MOV A,#data ;A ←data

MOV Rn,#data ;Rn ←data

MOV direct,#data ;direct ← data

MOV @Ri,#data ;(Ri) ← data

MOV DPTR ,#data16 ;DPTR ← data16

MOV A , Rn ;A ←(Rn)

MOV Rn , A ;Rn ←A

MOV A , direct ;A←(direct)

MOV direct, A ;direct ← (A)

MOV A ,@Ri ; A←((Ri))

MOV @Ri , A ;(Ri)←(A)

MOV Rn, direct ;Rn←(direct)

MOV direct , Rn ;direct←(Rn)

MOV @Ri ,direct ;(Ri)←(direct)

MOV direct, @Ri ;direct←((Ri))

MOV direct2,direct1 ;direct2←(direct1)

累加器与外部RAM之间的数据传送指令

(1)由Ri提供外部RAM的单元地址。格式:


MOVX A,@Ri ;A←((Ri)),i=0,1

MOVX @Ri, A ;(Ri) ←(A),i=0,1

只能访问外部RAM 00H-FFH256个存储单元。


(2)由DPTR提供外部RAM单元地址。格式:


MOVX A,@DPTR ;A←((DPTR))

MOVX @DPTR, A ;(DPTR) ←(A)

可以访问外部RAM的任意一个存储单元。


程序存储器数据传送指令

包括内部程序存储器和外部程序存储器。只能读数据传送是单方向的。格式如下:


MOVC A,@A+DPTR ;A ←((A)+(DPTR))

MOVC A,@A+PC ;A←((A)+(PC))

这两条指令同常用于查找程序中的数据表格。


堆栈操作指令

堆栈是建立在内部RAM中,通过堆栈指示器SP进行读写操作。指令格式为:


PUSH direct ;SP←(SP)+1, (SP)←(direct)

POP direct ;direct←((SP)), (SP)←(SP)-1

数据交换指令

(1) 字节交换指令格式为:


XCH A, Rn ;(A)←→(Rn),n=0~7

XCH A, direct ;(A)←→(direct)

XCH A, @Ri ;(A)←→((Ri)),i=0,1

(2) 半字节交换指令格式为:


XCHD A,@Ri ;(A3~0)←→((Ri)3~0)

SWAP A ;(A3~0)←→(A7~4)

这两条指令通常用于十六进制数或BCD码的数位交换。


§3-4 算术运算类指令

该类指令有加、减、乘、除四种,其特点是运算结果影响程序状态寄存器PSW中的标志位。


一、加法类运算指令

加法指令(影响CY、OV、AC、P)

ADD A, #data ; A (A)+data

ADD A,Rn ; A (A)+(Rn)

ADD A,direct ; A (A)+(direct)

ADD A,@Ri ; A (A)+((Ri))

带进位位CY的加法(影响CY、OV、AC、P)

ADDC A,#data ; A (A)+data+CY

ADDC A,Rn ;  ; A (A)+(Rn)+CY

ADDC A,direct ; A (A)+(direct)+CY

ADDC A,@Ri ; A (A)+((Ri))+CY

加1指令

INC A ; A (A)+1(影响P)

INC Rn ; Rn (Rn)+1

INC direct ; direct (direct)+1

INC @Ri ; (Ri) ((Ri))+1

二.减法运算指令

带借位位CY的减法(影响CY、OV、AC、P)

SUBB A,#data ; A (A) - data - CY

SUBB A,Rn ; A (A) - (Rn) - CY

SUBB A,direct ; A (A) - (direct) - CY

SUBB A,@Ri ; A (A) - ((Ri)) - CY

减1指令

DEC A ; A (A) - 1(影响P)

DEC Rn ; Rn (Rn) - 1

DEC direct ; direct (direct) -1

DEC @Ri ;(Ri) ((Ri)) - 1

三、乘除指令

乘法指令

MUL AB ;B、A (A)×(B),影响OV、P

若(B)﹥ 0,则OV=1;否则OV=0。


除法指令

DIV AB  ;A、B (A)/(B),影响OV、P

A中存放被除数,B中存放除数,执行之后A中存放商,B中存放余数。若除数为0,则OV=1,表示除法无意义。


四、十进制调整指令

十进制调整指令用于对BCD码十进制数加法运算的结果进行调整。


格式: DA A


调整方法为:


A中低四位大于9或标志位AC=1,则低四位加6调整,即A (A)+06H。

A中高四位大于9或标志位CY=1,则高四位加6调整,即A (A)+60H。

§3-5 逻辑运算类指令

一.单操作数逻辑运算指令

累加器清零

CLR A ; A 0

累加器取反

CPL A ; A ( A )

累加器循环左移

RL A ;

累加器循环右移

RR A ;

累加器带进位CY循环左移

RLC A ;

 

CY A7 A0

An+1 An ,CY A7 , A0 CY

累加器带进位CY循环右移

RRC A ;

 

CY A7 A0

A0 CY, CY A7 , An+1 An

二.双操作数逻辑运算指令

逻辑与

ANL A,#data ; A (A)^data

ANL A,Rn ; A (A)^(Rn), n=0-7

ANL A,direct ; A (A)^(direct)

ANL A,@Ri ; A (A)^((Ri)), i=0,1

ANL direct,A ; direct (direct)^(A)

ANL direct,#data ; direct (direct)^data

逻辑或

ORL A,#data ; A (A)Vdata

ORL A,Rn ; A (A)V(Rn), n=0-7

ORL A,direct ; A (A)V(direct)

ORL A,@Ri ; A (A)V((Ri)), i=0,1

ORL direct,A ; direct (direct)V(A)

ORL direct,#data ; direct (direct)Vdata

逻辑异或

XRL A,#data ; A (A)data

XRL A,Rn ; A (A)(Rn),n=0-7

XRL A, direct ; A ( A)( direct)

XRL A,@Ri ; A (A)((Ri)),i=0,1

XRL direct,A ; direct (direct)(A)

XRL direct,#data ; direct (direct)data

§3-6 控制转移类指令

共分三种:无条件转移、条件转移和循环转移。


无条件转移

(1) 长转移指令


格式:LJMP 标号;转移至标号处执行,转移范围为64KB。


(2) 短转移指令


格式:SJMP 标号;转移至标号处执行,转移范围为256B。


(3) 绝对转移指令


格式:AJMP 标号 ;转移范围为2KB


(4) 相对转移指令


格式: JMP 标号 ;转移目标地址为(A)+(DPTR) PC。


条件转移指令

(1) 累加器判零转移指令


JZ 标号;若(A)=0,转至标号执行。

JNZ 标号;若(A) 0,转至标号执行。

(2) 比较转移指令


CJNE A,#data,标号;(A)  data,转至标号执行

CJNE A,direct,标号;(A)  (direct),转至标号执行

CJNE Rn,#data,标号;(Rn)  data,转至标号执行

CJNE @Ri,#data,标号;((Ri))  data,转至标号执行

(3) 减'1'不为零转移指令


DJNZ Rn,标号;Rn (Rn) -1 , 若(Rn) 0,转至标号执行。

DJNZ direct,标号;direct (direct)-1,若(direct) 0,转至标号执行。

空操作指令

NOP ;PC (PC)+1,不作任何操作,只消耗一个机器周期的时间,常用于程序的等待和延时。

§3-7 位操作指令

位传送指令

MOV C,bit ; CY (bit)

MOV bit, C ; bit (CY)

位置位和清除指令

SETB C ;CY 1

CLR C ;CY 0

SETB bit ;bit 1

CLR bit ;bit 0

位运算指令

ANL C,bit ;CY (CY)( bit)

ANL C,/bit ;CY (CY)( bit)

ORL C,bit ;CY (CY)V( bit)

ORL C,/bit ;CY (CY)V( bit)

CPL C ;CY  (CY)

CPL  bit ; bit   ( bit )

位控制转移指令

JC 标号 ;若(CY)=1,转至标号处执行

JNC 标号 ;若(CY)=0,转至标号处执行

JB bit,标号 ;若(bit)=1,转至标号处执行

JNB bit, 标号 ;若(bit)=0 , 转至标号处执行

JBC bit,标号 ;若(bit)=1,转至标号处执行,并且0 bit。


关键字:MCS-51  指令系统  指令格式 引用地址:第3章 MCS-51指令系统

上一篇:第5章 定时器/计数器
下一篇:第6章 串行通信接口

推荐阅读最新更新时间:2026-03-25 10:21

MCS-51单片机指令系统(2)
指令系统的分类 该指令系统使用44种助记符,它们代表着33种可能,可以实现51种操作。因此,有的功能可以有几种助记符。指令助记符与操作数的各种可能寻址方式的组合总共构造出111条指令。不同指令对标志位的影响不同,可能会影响PSW中(Cy、AC、OV、P)某些标志位的状态,且需要正确估算指令的字节数。 指令格式由两部分组成,即操作码和操作数。操作码:规定指令进行什么操作,操作数:指令操作的对象。有单字节指令、双字节指令、三字节不同长度的指令,格式不同:(1)单字节指令:操作码、操作数 同在一个字节中。(2)双字节指令:操作码+操作数。(3)三字节指令:操作码+操作数+操作数。 在MCS-51单片机中,立即数不能作为目的操
[单片机]
MCS-51单片机指令系统(4)
某些指令说明 -“读引脚”和“读锁存器”指令的区别 关于并行I/O口的“读引脚”和“读锁存器”指令的区别 例如,当P1口的P1.0引脚外接一个发光二极管LED的阳极,LED的阴极接地。 若想查看一下单片机刚才向P1.x脚输出的信息是“0”还是“1”,如果直接读引脚,结果显然错误。 -“读引脚”和“读锁存器”指令的区别 正确做法是读D锁存器的Q端状态,那里储存的才是前一时刻送给P1.0的真实值。就是说,凡遇“读取P1口前一状态以便修改后再送出”的情形,都应当“读锁存器”的Q端信息,而不是读取引脚的信息。 当P1口外接输入设备时,要想P1口引脚上反映真实的输入信号,必须要 设法先让该引脚内部的场效应管截止才行,否则当场
[单片机]
<font color='red'>MCS-51</font>单片机<font color='red'>指令系统</font>(4)
MCS-51单片机指令系统总结
MCS-51单片机指令系统共111条指令,按功能分为五类: (1)数据传送类 28 (2)算术操作类 24 (3)逻辑运算类 25 (4)控制转移类 17 (5)位操作类 17 (1)数据传送类 28 MOV A,Rn ;寄存器传送到累加器 MOV A,direct ;直接地址传送到累加器 MOV A,@Ri ;累加器传送到外部RAM(8 地址) MOV A,#data ;立即数传送到累加器 MOV Rn,A ;累加器传送到寄存器 MOV Rn,direct ;直接地址传送到寄存器 MOV Rn,#data ;累加器传送到直接地址 MOV direct,Rn ;寄存器传送到直接地址 MOV direct,direct ;直接地
[单片机]
MCS-51指令系统的寻址方式与实例介绍
寻 址 方 式 寻 址 范 围 操作数形式 举 例 寄存器 寻址 R0-R7 ,DPTR Acc,B,C(Cy 位) 寄存器名 MOV R3,A INC DPTR 直接 寻址 内部RAM 00H-7FH 特殊功能寄存器 80H-FFH 8位地址 SFR名 MOV 79H,SP PUSH P1 直接 位寻址 内部RAM位寻址区 (20H-2FH): 位地址00H-7FH 可寻址的特殊功能寄存器: 位地址 80H-F7H 8位地址 位名 SFR名.位序 MOV C,78H CL
[单片机]
MCS-51单片机指令系统速记法
汇编语言指令由操作码、操作数两部分组成。MCS-51使用汇编语言指令,共有111条指令,44个操作码助记符,33种功能,其操作数形式有 #data、direct、Rn、@Ri 等。 一、助记符号的记忆方法 1表格列举法 把44个指令助记符按功能分为五类,每类列表记忆。 2英文还原法 单片机的操作码助记符是该指令功能的英文缩写,将缩写还原成英语原文,再对照汉语有助于理解其助记符含义,从而加强记忆。例如: 增量 INC-Incremect  减量 DNC-Decrement 短转移 SJMP-Short jump  长转移 LJMP-Long jump 比较转移 CJNE-Compare jump not equali
[单片机]
MCS-51单片机指令系统概述 2
MCS-51逻辑运算及移位指令 杭州电子元件邮购网地址:www.hpoo.net 逻辑运算和移位指令共有25条,有与、或、异或、求反、左右移位、清0等逻辑操作,有直接、寄存器和寄存器间址等寻址方式。这类指令一般不影响程序状态字(PSW)标志。 . 循环移位指令(4条) 这4条指令的作用是将累加器中的内容循环左或右移一位,后两条指令是连同进位位CY一起移位。 RL A ;累加器A中的内容左移一位 RR A ;累加器A中的内容右移一位 RLC A ;累加器A中的内容连同进位位CY左移一位 RRC A ;累加器A
[单片机]
MCS-51单片机指令系统概述 1
MCS-51共有111条指令,可分为5类: . 数据传送类指令(共29条) . 算数运算类指令(共24条) . 逻辑运算及移位类指令(共24条) . 控制转移类指令(共17条) . 布尔变量操作类指令(共17条) 一些特殊符号的意义 在介绍指令系统前,我们先了解一些特殊符号的意义,这对今后程序的编写都是相当有用的。 电子元件邮购网 Rn 当前选中的寄存器区的8个工作寄存器R0 R7(n=0-7)。 Ri 当前选中的寄存器区中可作为地址寄存器的两个寄存器R0和R1(i=0,1) direct 内部数据存储单元的8位地址。包含0 127(
[单片机]
MCS-51 指令系统
助记符 操作码 说明 字节 振荡周期 ACALL addrll X1* 绝对子程序调用 2 24 ADD A,Rn 28~2F 寄存器和 A 相加 1 12 ADD A,direct 25 直接字节和 A 相加 2 12 ADD A,@R 26,27 间接 RAM 和 A 相加 1 12
[单片机]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved