第4讲 51单片机指令系统_第1页
第4讲 51单片机指令系统_第2页
第4讲 51单片机指令系统_第3页
第4讲 51单片机指令系统_第4页
第4讲 51单片机指令系统_第5页
已阅读5页,还剩103页未读 继续免费阅读

下载本文档

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

文档简介

1、2022-5-221第四讲第四讲 51单片机指令系统单片机指令系统2022-5-2224.1 8051指令系统概述指令系统概述4.2 寻址方式寻址方式4.3 指令说明指令说明4.4 伪指令伪指令4.5 实用程序设计实用程序设计2022-5-2234.1 8051指令系统概述指令系统概述4.1.1 指令、指令系统的概念指令、指令系统的概念指令:为指令:为使计算机内部执行一种操作,而提供给用户编程使用的使计算机内部执行一种操作,而提供给用户编程使用的一种命令。一种命令。机器语言机器语言:计算机只能识别二进制代码,以二进制代码来描述指计算机只能识别二进制代码,以二进制代码来描述指令功能的语言,称之为

2、机器语言。令功能的语言,称之为机器语言。汇编语言:汇编语言:由于机器语言不便被人们识别、记忆、理解和使用,由于机器语言不便被人们识别、记忆、理解和使用,因此给每条机器语言指令赋予助记符号来表示,这就形成了汇编因此给每条机器语言指令赋予助记符号来表示,这就形成了汇编语言。也就是说,汇编语言是便于人们识别、记忆、理解和使用语言。也就是说,汇编语言是便于人们识别、记忆、理解和使用的一种指令形式,它和机器语言指令一一对应。的一种指令形式,它和机器语言指令一一对应。2022-5-224指令系统指令系统:计算机能够执行的全部操作所对应的指令集合,计算机能够执行的全部操作所对应的指令集合,称为这种计算机的指

3、令系统。称为这种计算机的指令系统。指令的三种属性:指令的三种属性:功能功能、时间时间和和空间空间。功能属性:功能属性:是指每条指令都对应一个特定的操作功能;是指每条指令都对应一个特定的操作功能;时间属性:时间属性:是指一条指令执行所用的时间,一般用机是指一条指令执行所用的时间,一般用机器周期来表示;器周期来表示;空间属性:空间属性:是指一条指令在程序存储器中存储所占用是指一条指令在程序存储器中存储所占用的字节数。的字节数。 指令的两种描述形式指令的两种描述形式:机器语言形式和汇编语言形式。机器语言形式和汇编语言形式。采用采用机器语言机器语言编写的程序称之为编写的程序称之为目标程序目标程序。采用

4、采用汇编语言汇编语言编写的程序称之为编写的程序称之为源程序源程序。2022-5-225时间属性划分时间属性划分:单机器周期单机器周期指令指令(64条条)、双机器周期双机器周期指令指令(45条条)和只有乘、除法两条和只有乘、除法两条4个机器周期的指令。个机器周期的指令。4.1.2 MCS-51单片机指令系统单片机指令系统 MCS-51单片机指令系统具有功能强、指令短、执行快单片机指令系统具有功能强、指令短、执行快等特点,共有等特点,共有111条指令。条指令。功能上划分功能上划分:数据传送、算术操作、逻辑操作、程序转移、:数据传送、算术操作、逻辑操作、程序转移、位操作等五大类。位操作等五大类。空间

5、属性划分空间属性划分:单字节单字节指令指令(49条条)、双字节双字节指令指令(46条条)和和三三字节字节指令指令(只有只有16条条)。2022-5-226每条指令通常由每条指令通常由操作码操作码和和操作数操作数两部分组成。两部分组成。操作码:操作码:表示计算机执行该指令将进行何种操作,表示计算机执行该指令将进行何种操作,操作数:操作数:表示参加操作的数的本身或操作数所在的地址。表示参加操作的数的本身或操作数所在的地址。4.1.3 汇编指令行格式汇编指令行格式标号:标号: 操作码操作码助记符助记符 目的目的操作数操作数,源,源操作数操作数 ;注释;注释 MCS-51单片机的指令有单片机的指令有无

6、操作数无操作数、单操作数单操作数、双操作数双操作数三种情况。三种情况。汇编语言指令有如下的格式:汇编语言指令有如下的格式:2022-5-2274.1.4 常用的缩写符号常用的缩写符号A 累加器。累加器。 B 寄存器寄存器, 用于用于 MUL和和 DIV指令中。指令中。 C 进位标志或进位位。进位标志或进位位。 间接寻址寄存器或基址寄存器的前缀间接寻址寄存器或基址寄存器的前缀, 如如Ri, DPTR。direct 8 位内部位内部RAM单元的地址。单元的地址。 可以是一个内部数据区可以是一个内部数据区 RAM单元单元(00H7FH)地址地址 特殊功能寄存器地址特殊功能寄存器地址(I / O端口、

7、端口、 控制寄存器、控制寄存器、 状态寄状态寄存器存器 80H0FFH)。 data 8位立即数,指令中的位立即数,指令中的 8 位常数。位常数。 data16 16位立即数,指令中的位立即数,指令中的 16 位常数。位常数。 2022-5-228X 表示寄存器名。表示寄存器名。(X) 表示表示X单元中的内容。单元中的内容。(X) 表示以表示以X单元的内容为地址的存储器单元内容,即单元的内容为地址的存储器单元内容,即(X)作地址,该地址单元的内容用作地址,该地址单元的内容用(X)表示。表示。/ 位操作数的前缀位操作数的前缀, 表示对该位取反。表示对该位取反。rel 8 位带符号的偏移量字节位带

8、符号的偏移量字节, 用于用于SJMP和所有条件转移和所有条件转移指令中。指令中。 偏移量相对于下一条指令的第一个字节计算偏移量相对于下一条指令的第一个字节计算, 在在128+127 范围内取值。范围内取值。 表示操作流程,将箭尾一方的内容送入箭头所指另一方表示操作流程,将箭尾一方的内容送入箭头所指另一方的单元中去。的单元中去。$ 指本条指令起始地址。指本条指令起始地址。2022-5-2294.2 寻址方式寻址方式 所谓寻址方式所谓寻址方式, 就是指令给出参与运算的操作数的就是指令给出参与运算的操作数的有效地址的方式。有效地址的方式。在在 MCS -51单片机指令系统中单片机指令系统中, 有以下

9、有以下 7种寻址方式种寻址方式: (1) 立即寻址立即寻址; (2) 直接寻址直接寻址; (3) 寄存器寻址寄存器寻址; (4) 寄存器间接寻址寄存器间接寻址; (5) 基址寄存器加变址寄存器间接寻址基址寄存器加变址寄存器间接寻址; (6) 相对寻址相对寻址; (7) 位寻址;位寻址;2022-5-2210 寄存器寻址按所选定的寄存器寻址按所选定的工作寄存器工作寄存器R0R7进行操作,指进行操作,指令机器码的低令机器码的低3位的八种组合位的八种组合000,001,110,111分别分别指明所用的工作寄存器指明所用的工作寄存器R0,R1,R6,R7。 如:如:MOV A,Rn(n=07),这,这

10、8条指令对应的机器码分条指令对应的机器码分别为别为E8HEFH。4.2.1 4.2.1 寄存器寻址寄存器寻址 在指令选定的某寄存器的内容作为操作数,以完成指在指令选定的某寄存器的内容作为操作数,以完成指令规定的操作,称为令规定的操作,称为寄存器寻址寄存器寻址。例如:例如:MOVA,R0指令中源操作数指令中源操作数R0和目的操作数和目的操作数A都是寄存器寻址。该指令的功能是都是寄存器寻址。该指令的功能是把工作寄存器把工作寄存器R0中的内容传送到累加器中的内容传送到累加器A中,如中,如R0中的内容为中的内容为30H,则,则执行该指令后执行该指令后A的内容也为的内容也为30H。2022-5-2211

11、 累加器累加器A, 寄存器寄存器B、数据指针、数据指针DPTR和布尔处理器和布尔处理器的的位累加器位累加器Cy也可用寄存器寻址方式访问。也可用寄存器寻址方式访问。例如:例如:MOV A,40H指令中的源操作数指令中的源操作数40H就是直接寻址,就是直接寻址,40H为操作数的地址。为操作数的地址。该指令的功能是把片内该指令的功能是把片内RAM地址为地址为40H单元的内容送到单元的内容送到A中。该指令的机器码为中。该指令的机器码为E5H 40H,8位直接地址在指令操作位直接地址在指令操作码中占一个字节。码中占一个字节。4.2.2 4.2.2 直接寻址直接寻址 指令中直接给出操作数所在的存储器地址,

12、以供取数指令中直接给出操作数所在的存储器地址,以供取数或存数的寻址方式称为直接寻址。或存数的寻址方式称为直接寻址。2022-5-2212位地址空间。位地址空间。 在在MCS -51 单片机指令系统中单片机指令系统中, 直接寻址方式中可以访直接寻址方式中可以访问问 3 种存储器空间种存储器空间: 内部数据存储器的低内部数据存储器的低 128 个字节单元(个字节单元(00H7FH)。)。特殊功能寄存器。特殊功能寄存器。 特殊功能寄存器只能用直接寻址特殊功能寄存器只能用直接寻址方式进行访问。方式进行访问。2022-5-22134.2.3 4.2.3 寄存器间接寻址寄存器间接寻址 由指令指出某一寄存器

13、的由指令指出某一寄存器的内容内容作为作为操作数地址操作数地址的寻址的寻址方法,称为方法,称为寄存器间接寻址寄存器间接寻址。注意注意:寄存器中的内容不是操作数本身,而是操作数的寄存器中的内容不是操作数本身,而是操作数的地址,到该地址单元中才能得到操作数。寄存器起地址地址,到该地址单元中才能得到操作数。寄存器起地址指针的作用。指针的作用。寻址寻址内部内部RAM区区的数据时,可使用寄存器的数据时,可使用寄存器R0、R1 (、(、SP)作为地址指针。作为地址指针。当访问当访问外部外部RAM时时, 可使用可使用R0、 R1及及DPTR作为地址指针。作为地址指针。寄存器间接寻址符号为寄存器间接寻址符号为“

14、”2022-5-2214例如:例如:MOV A,R1指令的源操作数指令的源操作数R1是寄存器间接寻址。该指令的功能是将是寄存器间接寻址。该指令的功能是将以工作寄存器以工作寄存器R1中的内容为地址的片内中的内容为地址的片内RAM单元的数据传单元的数据传送到送到A中去。中去。例如:例如:若若R1中的内容为中的内容为80H,片内,片内RAM地址为地址为80H的单元中的单元中的内容为的内容为2FH,则执行该指令后,片内,则执行该指令后,片内RAM 80H单元的内容单元的内容2FH被送到被送到A中。寄存器间接寻址示意图如图中。寄存器间接寻址示意图如图3.1所示。所示。2022-5-22154.2.4 4

15、.2.4 立即寻址立即寻址 立即寻址方式是指立即寻址方式是指操作数操作数包含在包含在指令字节指令字节中。中。 跟在跟在指令操作码后面的数就是参加运算的数指令操作码后面的数就是参加运算的数, 该操作数称为该操作数称为立即数立即数。 汇编指令中,在一个数的前面冠以汇编指令中,在一个数的前面冠以#符号作前缀,符号作前缀,就表示该数为立即寻址。就表示该数为立即寻址。例如:例如:MOVA,#30H指令中指令中30H就是就是立即数。立即数。这一条指令的功能是执行将立即数这一条指令的功能是执行将立即数30H传送到累加器传送到累加器A中中的操作。的操作。2022-5-22164.2.5 基址寄存器加变址寄存器

16、间接寻址基址寄存器加变址寄存器间接寻址 基址寄存器基址寄存器DPTR或或PC的内容为基本地址的内容为基本地址, 加上加上变址变址寄存器寄存器A的内容作为操作数的地址。的内容作为操作数的地址。MOVC A, ADPTRMOVC A, APC2022-5-22174.2.6 相对寻址相对寻址 例如:例如:SJMP rel 执行该指令时执行该指令时, 先将先将 PC+2, 再把指令中带符号的偏移量加到再把指令中带符号的偏移量加到PC上上, 得到跳转的目标地址送入得到跳转的目标地址送入PC。 相对寻址是以当前相对寻址是以当前程序计数器程序计数器PC值加上指令中给出的值加上指令中给出的偏偏移量移量rel

17、,而构成实际操作数地址的寻址方法。指令中给出的,而构成实际操作数地址的寻址方法。指令中给出的偏移量是一个偏移量是一个 8 位带符号的常数位带符号的常数, 可正可负可正可负, 其范围为其范围为128+127。常出现在相对转移指令中。常出现在相对转移指令中。2022-5-22184.2.7 位寻址位寻址 位寻址是在位操作指令中直接给出位操作数的地址,可位寻址是在位操作指令中直接给出位操作数的地址,可以对以对片内片内RAM中的中的128位位和和特殊功能寄存器特殊功能寄存器SFR中的中的93位位进进行寻址。行寻址。例如:例如:MOV C, bit2022-5-22194.3 指令说明指令说明1、数据传

18、送指令、数据传送指令2、程序转移指令、程序转移指令3、算术运算指令、算术运算指令4、逻辑运算指令、逻辑运算指令5、位运算指令、位运算指令2022-5-22204.3.1 数据传送指令数据传送指令1 1、内部数据传送指令、内部数据传送指令(1 1)以累加器)以累加器A A为目的操作数的指令为目的操作数的指令MOV A, Rn n=07 MOV A, directMOV A, Ri i=0,1MOV A, data这组指令的功能是:把源操作数的内容送入累加器这组指令的功能是:把源操作数的内容送入累加器A。2022-5-2221(2 2)以)以RnRn为目的操作数的指令为目的操作数的指令MOV Rn

19、, AMOV Rn, directMOV Rn, data 这组指令的功能是这组指令的功能是: 把源操作数的内容送入当前把源操作数的内容送入当前工作寄存器区的工作寄存器区的R0R7中的某一个寄存器。中的某一个寄存器。2022-5-2222(3 3)以直接寻址的单元为目的操作数的指令)以直接寻址的单元为目的操作数的指令 MOV direct, A MOV direct, Rn MOV direct, direct MOV direct, Ri MOV direct, data 这组指令的功能是:把源操作数的内容送入这组指令的功能是:把源操作数的内容送入内部内部RAM单元单元或或特殊功能寄存器特殊

20、功能寄存器(直接地址指出的存储单元)。(直接地址指出的存储单元)。2022-5-2223(4 4)以寄存器间接寻址的单元为目的操作数指令)以寄存器间接寻址的单元为目的操作数指令MOV Ri, AMOV Ri, directMOV Ri, data 这组指令的功能是:把源操作数的内容送入这组指令的功能是:把源操作数的内容送入R0,R1所指出的所指出的内部内部RAM单元单元。(5 5)1616位数据传送指令位数据传送指令MOV DPTR, data16 这组指令的功能是:将这组指令的功能是:将16位位的的立即数立即数送入送入数据指针数据指针寄存器寄存器DPTR。 2022-5-2224 MOV R

21、0,#30H ;(R0)30HMOV A,R0;(A)(R0)MOV R1,A;(R1)(A)MOV B,R1;(B)(R1)MOV R1,P1;(R1)(P1)MOV P2,P1;(P2)(P1)MOV 10H,#20H;(10H)20H执行上述指令后的结果为:执行上述指令后的结果为: (R0)=30H,(R1)=(A)=40H, (B)=10H,(40H)=(P1)=(P2)=CAH, (10H)=20H。例例1 设内部设内部 RAM (30H)=40H,(40H)=10H, (10H)=00H (P1)=CAH,分析以下程序执行后,分析以下程序执行后各单元各单元及及寄存器寄存器、 P2口

22、口的内容。的内容。2022-5-22252 2、 查表指令查表指令 访问程序存储器的数据传送指令又称作访问程序存储器的数据传送指令又称作查表指令查表指令,采用,采用基址寄存器加变址寄存器间接寻址方式,把程序存储器中存基址寄存器加变址寄存器间接寻址方式,把程序存储器中存放的表格数据读出,放的表格数据读出,传送到累加器传送到累加器A。u MOVC A, A+PC以以PC作为基址寄存器作为基址寄存器, A的内容作为无符号数和的内容作为无符号数和 PC的内容的内容 ( 下一条指令的起始地址下一条指令的起始地址)相加后得到一个)相加后得到一个 16 位位的地址的地址, 并将该地址指出的程序存储器单元的内

23、容送到累加器并将该地址指出的程序存储器单元的内容送到累加器A。2022-5-2226u MOVC A, A+DPTR 这条指令的执行结果只与指针这条指令的执行结果只与指针DPTR及累加器及累加器A的内容的内容有关有关, 与该指令存放的地址无关。因此与该指令存放的地址无关。因此, 表格的大小和位置表格的大小和位置可以在可以在 64 KB程序存储器程序存储器中任意安排中任意安排, 并且一个表格可以为并且一个表格可以为各个程序块所共用。各个程序块所共用。 指令是以指令是以DPTR作为作为基址寄存器基址寄存器, 累加器累加器A的内容作为的内容作为无符号数与无符号数与DPTR内容相加内容相加, 得到一个

24、得到一个 16 位的地址位的地址, 并把该并把该地址指出的程序存储器单元的内容送到累加器地址指出的程序存储器单元的内容送到累加器A。2022-5-2227如果用以如果用以DPTR为基址寄存器的查表指令,其程序如下:为基址寄存器的查表指令,其程序如下:MOV DPTR, 2000H;置表首地址;置表首地址MOV A, 09HMOVC A, A+DPTR例:例: 从片外程序存储器从片外程序存储器2000H单元开始存放单元开始存放09的平方值,的平方值,以以PC作为基址寄存器进行查表得作为基址寄存器进行查表得9的平方值。的平方值。2022-5-2228完成上述功能的程序如下:完成上述功能的程序如下:

25、MOV A,#03H;(A)03HPUSH DPH;保护;保护DPTR高高8位入栈位入栈PUSH DPL;保护;保护DPTR低低8位入栈位入栈MOV DPTR,#2000H ;(DPTR)2000HMOVC A,A+DPTR;(A)(2000H+03H)POP DPL ;弹出;弹出DPTR低位低位POP DPH ;弹出;弹出DPTR高位高位执行结果:执行结果:(A)09H,(DPTR)=3A00H。例例 若在外部程序存储器中若在外部程序存储器中2000H单元开始依次存放单元开始依次存放09的平的平方值,数据指针方值,数据指针(DPTR)=3A00H,用查表指令取得,用查表指令取得2003H单单

26、元的数据后,要求保持元的数据后,要求保持DPTR中的内容不变。中的内容不变。2022-5-22293 3、累加器、累加器A A与外部数据存储器传送指令与外部数据存储器传送指令 MOVX A, DPTR MOVX A, Ri MOVX DPTR, A MOVX Ri, A DPTR所包含的所包含的 16 位位地址信息地址信息由由 P0 (低低 8 位位)和和P2(高高 8 位位)输出输出, 而而数数据信息据信息由由P0 口口传送传送, P0 口口作分时复用的总线。由作分时复用的总线。由Ri作为间接寻址寄存作为间接寻址寄存器时器时, P0 口上分时输出口上分时输出Ri指定的指定的 8 位地址信息及

27、传输位地址信息及传输 8 位数据。位数据。 这组指令是:在累加器这组指令是:在累加器A与外部数据存储器与外部数据存储器RAM单元或单元或I/O口之间口之间进行数据传送。进行数据传送。 前两条指令执行时前两条指令执行时, P3.7 引脚上输出引脚上输出RD有效信号有效信号, 用作外部数据存储用作外部数据存储器的读选通信号器的读选通信号; 后两条指令执行时后两条指令执行时, P3.6 引脚上输出引脚上输出WR有效信号有效信号, 用作外部数据存储用作外部数据存储器的写选通信号。器的写选通信号。2022-5-2230例:例: 设外部设外部RAM(0203H)= FFH, 分析以下指令执行后的结果。分析

28、以下指令执行后的结果。 MOV DPTR,#0203H ;(DPTR)0203H MOVX A,DPTR ;(A)(DPTR) MOV 30H,A ;(30H)(A) MOV A,#0FH ;(A)0FH MOVX DPTR,A ;(DPTR)(A)执行结果为:执行结果为:(DPTR)=0203H,(30H)=FFH,(0203H)=(A)=0FH。2022-5-22314 4、字节交换指令、字节交换指令XCH A, RnXCH A, RiXCH A, direct将累加器将累加器A的内容和源操作数内容相互交换。的内容和源操作数内容相互交换。2022-5-22325 5、堆栈操作指令、堆栈操作

29、指令 在在MCS -51 单片机的内部单片机的内部RAM中中, 可以设定一个先进后可以设定一个先进后出的区域出的区域, 称其为称其为堆栈堆栈。 在特殊功能寄存器中有一个在特殊功能寄存器中有一个堆栈指针堆栈指针SP, 它指出栈顶的它指出栈顶的位置。位置。 PUSH direct;进栈指令;进栈指令POP direct;出栈指令;出栈指令 进栈指令进栈指令的功能是的功能是: 首先将堆栈指针首先将堆栈指针SP的内容加的内容加1, 然后将然后将直接地址所指出的内容送入直接地址所指出的内容送入SP指出的内部指出的内部RAM单元单元; 出栈指令出栈指令的功能是的功能是: 将将SP所指出的内部所指出的内部R

30、AM单元的内容送单元的内容送入由直接地址所指出的字节单元入由直接地址所指出的字节单元, 接着将堆栈指针接着将堆栈指针SP的内的内容减容减 1。2022-5-2233例如例如: 进入中断服务子程序时进入中断服务子程序时, 把程序状态寄存器把程序状态寄存器PSW、 累加累加器器A、 数据指针数据指针DPTR进栈保护。设当前进栈保护。设当前SP为为 60H。 PUSH PSW PUSH ACC PUSH DPL PUSH DPH执行后执行后, SP内容修改为内容修改为 64H, 而而61H、62H、63H、64H单元中单元中依次栈入依次栈入PSW、A、DPL、DPH的内容。当中断服务程序结束的内容。

31、当中断服务程序结束之前之前, 如下程序段如下程序段(SP保持保持 64H不变不变) POP DPH POP DPL POP ACC POP PSW执行之后执行之后, SP内容修改为内容修改为 60H, 而而64H、 63H、 62H、 61H单元中的内容依次弹出到单元中的内容依次弹出到DPH、DPL、A、PSW中。中。 2022-5-22344.3.2 程序转移指令程序转移指令1 1、无条件转移指令、无条件转移指令这是这是2KB范围内的无条件跳转指令范围内的无条件跳转指令, 执行该指令时执行该指令时, 先将先将PC+2, 然后将然后将addr11送入送入PC10PC0, 而而PC15PC11保

32、持不保持不变。变。 这样得到跳转的目的地址。这样得到跳转的目的地址。需要注意的是需要注意的是, 目标地址目标地址与与AJMP后面一条指令的第一个字节必须在同一个后面一条指令的第一个字节必须在同一个 2 KB区区域的存储器区内。域的存储器区内。 u 短跳转指令短跳转指令 AJMP addr112022-5-2235 执行该指令时执行该指令时, 将将 16 位目标地址位目标地址addr16 装入装入PC, 程序无程序无条件转向指定的目标地址。转移的目标地址可以在条件转向指定的目标地址。转移的目标地址可以在 64 KB程序存储器地址空间的任何地方程序存储器地址空间的任何地方, 不影响任何标志。不影响

33、任何标志。 u 长跳转指令长跳转指令 LJMP addr16u 相对转移指令相对转移指令 SJMP rel 执行该指令时执行该指令时, 先将先将 PC+2, 再把指令中带符号的偏再把指令中带符号的偏移量加到移量加到PC上上, 得到跳转的目标地址送入得到跳转的目标地址送入PC。2022-5-2236执行该指令时执行该指令时, 把累加器把累加器 A中的中的 8 位无符号数与数据指针位无符号数与数据指针中的中的 16 位数相加位数相加, 结果作为下条指令的地址送入结果作为下条指令的地址送入PC, 不改不改变累加器变累加器A和数据指针和数据指针DPTR的内容的内容, 也不影响标志。也不影响标志。 利利

34、用这条指令能实现程序的散转。用这条指令能实现程序的散转。 u 散转指令散转指令 JMP A+DPTR2022-5-2237例:例: 根据累加器根据累加器A的值,转不同处理程序的入口。的值,转不同处理程序的入口。 MOV DPTR,#TABLE ;表首地址送;表首地址送DPTR JMP A+DPTR ;根据;根据A值转移值转移 TABLE:AJMP TAB1 ;当;当(A)=0时转时转TAB1执行执行 AJMP TAB2 ;当;当(A)=2时转时转TAB2执行执行 AJMP TAB3 ;当;当(A)=4时转时转TAB3执行执行2022-5-2238无条件转移指令无条件转移指令2022-5-223

35、92 2、条件转移指令、条件转移指令 条件转移指令是当某种条件满足时,程序转移执行;条件条件转移指令是当某种条件满足时,程序转移执行;条件不满足时,程序仍按原来顺序执行。转移的条件可以是上一条不满足时,程序仍按原来顺序执行。转移的条件可以是上一条指令或更前一条指令的执行结果指令或更前一条指令的执行结果(常体现在标志位上常体现在标志位上),也可以,也可以是条件转移指令本身包含的某种运算结果。是条件转移指令本身包含的某种运算结果。 由于该类指令采用相对寻址,因此程序可在以当前由于该类指令采用相对寻址,因此程序可在以当前PC值值为中心的为中心的-128+127范围内转移。范围内转移。2022-5-2

36、240JZ rel; (A)= 0 转移转移JNZ rel; (A)0 转移转移JC rel; 若若(Cy)=1, 则转移则转移 PC(PC)+2+relJNC rel; 若若(Cy)=0, 则转移则转移PC(PC)+2+rel JB bit, rel; 若若(bit)=1, 则转移则转移PC(PC)+3+relJNB bit, rel; 若若(bit)=0, 则转移则转移PC(PC)+3+relJBC bit, rel; 若若(bit)=1, 则转移则转移PC(PC)+3+rel, 并并 bit 0 2022-5-2241 例:例: 将片外将片外RAM首地址为首地址为DATA1的一个数据块转

37、送到片的一个数据块转送到片内内RAM首地址为首地址为DATA2的存储区中。的存储区中。 外部外部RAM向内部向内部RAM的数据转送一定要经过累加器的数据转送一定要经过累加器A,利,利用判零条件转移正好可以判别是否要继续传送或者终止。完成数用判零条件转移正好可以判别是否要继续传送或者终止。完成数据传送的参考程序如下:据传送的参考程序如下: MOV R0,#DATA1 ;R0作为外部数据块的地址指针作为外部数据块的地址指针 MOV R1,#DATA1 ;R1作为内部数据块的地址指针作为内部数据块的地址指针LOOP: MOVX A,R0 ;取外部;取外部RAM数据送入数据送入AHERE: JZ HE

38、RE ;数据为零则终止传送;数据为零则终止传送 MOV R1,A ;数据传送至内部;数据传送至内部RAM 单元单元 INC R0 ;修改指针,指向下一数据地址;修改指针,指向下一数据地址 INC R1 SJMP LOOP ;循环取数;循环取数2022-5-2242 比较转移指令共有比较转移指令共有4条。这组指令是先对两个规定的操条。这组指令是先对两个规定的操作数进行比较,根据比较的结果来决定是否转移。作数进行比较,根据比较的结果来决定是否转移。 若两个操作数相等,则不转移,程序顺序执行;若两个若两个操作数相等,则不转移,程序顺序执行;若两个操作数不等,则转移。操作数不等,则转移。3 3、比较不

39、相等转移指令、比较不相等转移指令 CJNE 比较是进行比较是进行一次减法一次减法运算,但其差值不保存,运算,但其差值不保存,两个数两个数的原值不受影响的原值不受影响,而,而标志位要受到影响标志位要受到影响。 如果第一个操作数如果第一个操作数小于小于第二个操作数,则第二个操作数,则置位置位进位标进位标志志CY,否则,否则,清清“0”CY. 利用标志位利用标志位CY作进一步的判断,可实现三分支转移。作进一步的判断,可实现三分支转移。2022-5-2243CJNE A, direct, relCJNE A, data, relCJNE Rn, data, relCJNE Ri, data, rel例

40、例: 当从当从P1口输入数据为口输入数据为01H 时,程序继续执行,否则时,程序继续执行,否则等待,直到等待,直到P1口出现口出现01H。参考程序如下:。参考程序如下: MOV A,#01H ;立即数;立即数01H送送AWAIT:CJNE A,P1,WAIT ;(P1)01H,则等待,则等待2022-5-2244 减减1条件转移指令有两条。每执行一次这种指令,就把条件转移指令有两条。每执行一次这种指令,就把第一操作数减第一操作数减1,并把,并把结果仍保存在第一操作数结果仍保存在第一操作数中,中,然后判然后判断是否为零断是否为零。若不为零,则转移到指定的地址单元,否则。若不为零,则转移到指定的地

41、址单元,否则顺序执行。顺序执行。4 4、 减减1 1不为不为0 0转移指令转移指令 DJNZ这组指令对于构成循环程序是十分有用的,可以指定任何这组指令对于构成循环程序是十分有用的,可以指定任何一个工作寄存器或者内部一个工作寄存器或者内部RAM单元作为循环计数器。每循单元作为循环计数器。每循环一次,这种指令被执行一次,计数器就减环一次,这种指令被执行一次,计数器就减1。预定的循环。预定的循环次数不到,计数器不会为次数不到,计数器不会为0,转移执行循环操作;到达预定,转移执行循环操作;到达预定的循环次数,计数器就被减为的循环次数,计数器就被减为0,顺序执行下一条指令,也,顺序执行下一条指令,也就结

42、束了循环。就结束了循环。2022-5-2245DJNZ Rn, relDJNZ direct, rel 例:例: 将内部将内部RAM从从DATA单元开始的单元开始的10个无符号数相加,相加个无符号数相加,相加结果送结果送SUM单元保存。单元保存。 设相加结果不超过设相加结果不超过8位二进制数,则相应的程序如下:位二进制数,则相应的程序如下: MOV R0,#0AH ;设置循环次数;设置循环次数 MOV R1,#DATA ;R1作地址指针,指向数据块首地址作地址指针,指向数据块首地址 CLR A ;A清零清零LOOP:ADD A,R1 ;加一个数;加一个数 INC R1 ;修改指针,指向下一个数

43、;修改指针,指向下一个数 DJNZ R0,LOOP ;R0减减1,不为,不为0循环循环 MOV SUM,A ;存;存10个数相加的和个数相加的和2022-5-22462022-5-2247 在程序设计中在程序设计中, 通常把具有一定功能的公用程序段编制成通常把具有一定功能的公用程序段编制成子程序子程序, 当主程序需要使用子程序时用调用指令当主程序需要使用子程序时用调用指令, 而在子程序而在子程序的最后安排一条子程序返回指令的最后安排一条子程序返回指令,以便执行完子程序后能返回以便执行完子程序后能返回主程序继续执行。主程序继续执行。 5 5、 调用及返回指令调用及返回指令2022-5-2248所

44、用的子程序的入口地址必须与所用的子程序的入口地址必须与 ACALL下面一条指令的第下面一条指令的第一个字节在同一个一个字节在同一个 2 KB区域的存储器区内。区域的存储器区内。 u 短调用指令短调用指令 ACALL addr112022-5-2249 LCALL addr16u 长调用指令长调用指令2022-5-2250u 子程序返回指令子程序返回指令 RETu 中断返回指令中断返回指令RETI2022-5-2251空操作指令是一条单字节单周期指令。它控制空操作指令是一条单字节单周期指令。它控制 CPU不做任何操不做任何操作,仅仅是消耗这条指令执行所需要的一个机器周期的时间,作,仅仅是消耗这条

45、指令执行所需要的一个机器周期的时间,不影响任何标志位,故称为空操作指令。不影响任何标志位,故称为空操作指令。NOP指令在设计延时指令在设计延时程序、拼凑精确延时时间及在程序等待或修改程序等场合是很程序、拼凑精确延时时间及在程序等待或修改程序等场合是很有用的。有用的。7 7、 空操作指令空操作指令NOP ;(PC)(PC)+12022-5-22524.3.3 算术运算指令算术运算指令加、减法指令加、减法指令加减法指令形式结构图加减法指令形式结构图(a) (a) 加减法指令关系图;加减法指令关系图;(b) (b) 加加1 1、减、减1 1指令关系图指令关系图 2022-5-22531 1、 加法指

46、令加法指令 u 不带进位的加法指令不带进位的加法指令 ADD A, Rn ADD A, direct ADD A, Ri ADD A, data对标志位的影响:对标志位的影响:如果位如果位7有进位,则置有进位,则置“1”进位进位CY;否则清否则清“0”CY.如果位如果位3有进位,则置有进位,则置“1”进位进位AC;否则清否则清“0”AC.如果位如果位6有进位输出而位有进位输出而位7没有,或者位没有,或者位7有进位输出有进位输出而位而位6没有,则置位溢出标志没有,则置位溢出标志OV,否则清,否则清“0”OV.2022-5-2254u 带进位的加法指令带进位的加法指令ADDC A, RnADDC

47、A, directADDC A, RiADDC A, data 这组指令的功能与普通加法指令类似这组指令的功能与普通加法指令类似, 唯一的不同之唯一的不同之处是处是, 在执行加法时在执行加法时, 还要将上一次进位标志还要将上一次进位标志Cy的内容也的内容也一起加进去。一起加进去。对于标志位的影响也与普通加法指令相同。对于标志位的影响也与普通加法指令相同。2022-5-2255 最后一条指令是对最后一条指令是对16 位的数据指针寄存器位的数据指针寄存器DPTR执行加执行加 1 操作操作, 指令执行时指令执行时, 先对低先对低 8 位指针位指针 DPL的内容加的内容加 1, 当产当产生溢出时就对高

48、生溢出时就对高 8 位指针位指针DPH加加 1, 但不影响任何标志。但不影响任何标志。 u 增量指令增量指令INC AINC RnINC directINC RiINC DPTR这组指令的功能是这组指令的功能是:将指令中所指出操作数的内容加:将指令中所指出操作数的内容加1。若原来的内容为若原来的内容为 0FFH, 则加则加 1 后将产生溢出后将产生溢出, 使操作数使操作数的内容变成的内容变成 00H, 但不影响任何标志。但不影响任何标志。2022-5-22562 2、 减法指令减法指令 这组指令的功能是这组指令的功能是: 将累加器将累加器A的内容与第二操作数及进位标志相减的内容与第二操作数及进

49、位标志相减, 结果结果送回到累加器送回到累加器A中。若要进行不带借位的减法操作中。若要进行不带借位的减法操作, 则则必须先将必须先将Cy清清“0”。u 带进位减法指令带进位减法指令 SUBB A, Rn SUBB A, direct SUBB A, Ri SUBB A, data2022-5-2257如位如位 6 有借位而位有借位而位 7 没有借位没有借位, 或位或位 7 有借位而位有借位而位 6 没没有借位有借位, 则溢出标志则溢出标志OV置置“1”, 否则清否则清“0”。 对标志位的影响:对标志位的影响:如果位如果位7(D7)有借位)有借位, 则进位标志则进位标志Cy置置“1”, 否则清否

50、则清“0”;如果位如果位 3(D3)有借位)有借位, 则辅助进位标志则辅助进位标志AC置置“1”, 否则否则清清“0”; 2022-5-2258这组指令的功能是这组指令的功能是: 将指出的操作数内容减将指出的操作数内容减 1。 如果原来的操作数为如果原来的操作数为 00H, 则减则减 1 后将产生下溢出后将产生下溢出, 使操作数变成使操作数变成 0FFH, 但不影响任何标志。但不影响任何标志。(除除A减减1影响影响P) u 减减1 1指令指令 DEC A DEC Rn DEC direct DEC Ri2022-5-22593 3、 乘法指令乘法指令 这条指令的功能是这条指令的功能是: 将累加

51、器将累加器A的内容与寄存器的内容与寄存器B的内容相乘的内容相乘, 乘积的低乘积的低 8 位位存放在累加器存放在累加器A中中, 高高 8 位位存放于寄存器存放于寄存器B中。中。如果乘积超过如果乘积超过0FFH, 则溢出标志则溢出标志OV置置“1”, 否则清否则清“0”。 进位标志进位标志Cy总是被清总是被清“0”。 MUL AB2022-5-22604 4、除法指令、除法指令 将累加器将累加器 A中的内容除以寄存器中的内容除以寄存器 B中的中的8位无符号整数位无符号整数, 所得商的整数部分存放在累加器所得商的整数部分存放在累加器A中中, 余数部分存放在寄余数部分存放在寄存器存器 B中中, 清清“

52、0”进位标志进位标志Cy和溢出标志和溢出标志OV。 DIV AB这条指令的功能是这条指令的功能是: 若原来若原来 B 中的内容为中的内容为 0, 则执行该指令后则执行该指令后 A与与B中的内中的内容不定容不定, 并将溢出标志并将溢出标志OV置置“1”。在任何情况下在任何情况下, 进位标志进位标志Cy总是被清总是被清“0”。 2022-5-22612022-5-2262这组指令的功能是这组指令的功能是: 将两个操作数的内容将两个操作数的内容按位按位进行逻辑进行逻辑与操作与操作, 并将并将结果送回目的操作数结果送回目的操作数的单元中。的单元中。(1 1) 逻辑与指令逻辑与指令 ANL A, Rn

53、ANL A, direct ANL A, Ri ANL A, data ANL direct, A ANL direct, data4.3.4 逻辑运算操作逻辑运算操作2022-5-2263这组指令的功能是这组指令的功能是: 将两个操作数的内容将两个操作数的内容按位按位进行逻辑进行逻辑或操作或操作, 并将并将结果送回目的操作数结果送回目的操作数的单元中。的单元中。 (2 2) 逻辑或指令逻辑或指令 ORL A, RnORL A, directORL A, RiORL A, dataORL direct, AORL direct, data2022-5-2264这组指令的功能是这组指令的功能是:

54、 将两个操作数的内容按位进行逻将两个操作数的内容按位进行逻辑异或操作辑异或操作, 并将结果送回到目的操作数的单元中。并将结果送回到目的操作数的单元中。 (3 3) 逻辑异或指令逻辑异或指令 XRL A, Rn XRL A, direct XRL A, Ri XRL A, data XRL direct, A XRL direct, data2022-5-2265(4 4) 移位操作移位操作RL A; 累加器累加器A的内容向左环移的内容向左环移 1 位位 RLC A; 累加器累加器A的内容带进位标志位向左环移的内容带进位标志位向左环移 1 位位RR A; 累加器累加器A的内容向右环移的内容向右环

55、移 1 位位RRC A; 累加器累加器A的内容带进位标志位向右环移的内容带进位标志位向右环移 1 位位这组指令的功能是这组指令的功能是: 对累加器对累加器A的内容进行简单的逻辑的内容进行简单的逻辑操作。除了带进位标志位的移位指令外操作。除了带进位标志位的移位指令外,其它都不影响其它都不影响Cy, AC, OV等标志。等标志。 2022-5-2266 CLR A ; 对累加器对累加器A清清“0”CPL A; 对累加器对累加器A按位取反按位取反2022-5-2267 位操作也称布尔变量操作,它是以位位操作也称布尔变量操作,它是以位(bit)作为单位作为单位来进行运算和操作的。来进行运算和操作的。M

56、CS-51单片机内部有一个功能相单片机内部有一个功能相对独立的对独立的布尔处理机布尔处理机,它有借用进位标志,它有借用进位标志CY作为作为位累加位累加器器,有,有位存储器位存储器(即位寻址区中的各位即位寻址区中的各位),指令系统中有,指令系统中有17条条专门进行位处理的指令集。专门进行位处理的指令集。 位处理指令可以完成以位为对象的位处理指令可以完成以位为对象的数据转送数据转送、运算、运算、控制转移控制转移等操作。等操作。4.3.5 位操作指令位操作指令2022-5-2268 (1) 直接地址方式直接地址方式: 如如 0A8H; (2) 点操作符方式点操作符方式: 如如IE.0; (3) 位名

57、称方式位名称方式: 如如 EX0; (4) 用户定义名方式用户定义名方式: 如用伪指令如用伪指令 BIT定义:定义: WBZD0 BIT EX0 经定义后经定义后, 允许指令中使用允许指令中使用WBZD0 代替代替EX0。 指令中位地址的表达形式有以下几种指令中位地址的表达形式有以下几种: 2022-5-2269(1 1) 位变量传送指令位变量传送指令这组指令的功能是这组指令的功能是: 把源操作数指出的布尔变量送到目的把源操作数指出的布尔变量送到目的操作数指定的位地址单元中。操作数指定的位地址单元中。 其中一个操作数必须为进位标志其中一个操作数必须为进位标志 Cy, 另一个操作数另一个操作数可

58、以是任何可直接寻址位。可以是任何可直接寻址位。 MOV C, bit MOV bit, C2022-5-2270(2 2) 位变量修改指令位变量修改指令 CLR C CLR bit CPL C CPL bit SETB C SETB bit 这组指令对操作数所指出的位进行清这组指令对操作数所指出的位进行清“0”, 取反取反, 置置“1”的操作的操作, 不影响其它标志。不影响其它标志。2022-5-2271(3 3)位变量逻辑操作指令)位变量逻辑操作指令这组指令的功能是这组指令的功能是: 如果源位的布尔值是逻辑如果源位的布尔值是逻辑 0, 则将进位则将进位标志清标志清“0”; 否则否则, 进位标

59、志保持不变进位标志保持不变, 不影响其它标志。不影响其它标志。位变量逻辑与指令位变量逻辑与指令 ANL C, bit ANL C, /bitbit前的斜杠表示对前的斜杠表示对(bit)取反取反, 直接寻址位取反后用作源操作直接寻址位取反后用作源操作数数, 但不改变直接寻址位原来的值。但不改变直接寻址位原来的值。例如指令例如指令: ANL C, /ACC.0 执行前执行前ACC.0 为为 0, C为为 1, 则则指令执行后指令执行后 C为为 1, 而而 ACC.0仍为仍为 0。 2022-5-2272位变量逻辑或指令位变量逻辑或指令这组指令的功能是这组指令的功能是: 如果源位的布尔值是逻辑如果源

60、位的布尔值是逻辑 1, 则则将进位标志置将进位标志置“1”; 否则否则, 进位标志保持不变进位标志保持不变, 不影响不影响其它标志。其它标志。 ORL C, bit ORL C, /bit2022-5-2273例例: 利用位操作指令,模拟图所示硬件逻辑电路的功能。利用位操作指令,模拟图所示硬件逻辑电路的功能。2022-5-2274 MOV C,P1.1 ;(CY) (P1.1) ORL C, P1.2 ;(CY) (P1.1) (P1.2)=AANL C,P1.0 ;(CY)(P1.0)A CPL C ;(CY)(P1.0)A=B MOV F0,C ;F0内暂存内暂存B MOV C,P1.3

温馨提示

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

评论

0/150

提交评论