第4章 寻址方式及指令系统(6)_第1页
第4章 寻址方式及指令系统(6)_第2页
第4章 寻址方式及指令系统(6)_第3页
第4章 寻址方式及指令系统(6)_第4页
第4章 寻址方式及指令系统(6)_第5页
已阅读5页,还剩140页未读 继续免费阅读

下载本文档

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

文档简介

1、第第4章章 MCS-51 指令系统指令系统14.1 概述概述4.2 寻址方式寻址方式4.3 指令系统指令系统第第4章章 MCS-51的指令系统的指令系统第第4章章 MCS-51 指令系统指令系统24.1 概述概述0111 01000000 01014.1.1 计算机语言计算机语言MOV A,#05 A=5机器语言机器语言汇编语言汇编语言高级语言高级语言第第4章章 MCS-51 指令系统指令系统34.1 概述概述4.1.1 计算机语言计算机语言 (1)机器语言)机器语言:是用二进制代码表示的,能被计算机直接识是用二进制代码表示的,能被计算机直接识别和执行的一种机器指令的集合。别和执行的一种机器指

2、令的集合。 优点:优点:灵活、能被计算机直接执行、速度快等。灵活、能被计算机直接执行、速度快等。 缺点:缺点:直观性差,很容易出错,通用性很差。直观性差,很容易出错,通用性很差。(2)汇编语言:)汇编语言:是一种用助记符表示的仍然面向机器的计算是一种用助记符表示的仍然面向机器的计算机语言,又将其称为符号语言。机语言,又将其称为符号语言。 优点:优点:用符号代替了机器指令代码,简化了编程过程,用符号代替了机器指令代码,简化了编程过程,助记符与指令代码一一对应,基本保留了机器语言的灵活性。助记符与指令代码一一对应,基本保留了机器语言的灵活性。占用的内存空间少,运行速度快。占用的内存空间少,运行速度

3、快。 第第4章章 MCS-51 指令系统指令系统4 缺点:缺点: 必须对编写的程序进行加工和翻译,才能变成能够必须对编写的程序进行加工和翻译,才能变成能够被计算机识别和处理的二进制代码程序。仍然是面向机器的语言,被计算机识别和处理的二进制代码程序。仍然是面向机器的语言,使用起来还是比较繁琐费时,通用性差。使用起来还是比较繁琐费时,通用性差。用汇编语言等非机器语言书写好的符号程序称汇编语言源程序。用汇编语言等非机器语言书写好的符号程序称汇编语言源程序。(3)高级语言:)高级语言:与自然语言相近并为计算机所接受和执行的计与自然语言相近并为计算机所接受和执行的计算机语言称为高级语言,它是面向用户的语

4、言。算机语言称为高级语言,它是面向用户的语言。 优点:编程容易,不需要编程者对机器硬件有较好的了解。优点:编程容易,不需要编程者对机器硬件有较好的了解。 缺点:执行速度比机器语言和汇编语言慢。缺点:执行速度比机器语言和汇编语言慢。第第4章章 MCS-51 指令系统指令系统54.1.2 汇编语言程序语句格式汇编语言程序语句格式汇编指令由操作码或伪操作码、目的操作数和源操作数构成,汇编指令由操作码或伪操作码、目的操作数和源操作数构成,标准书写格式如下:标准书写格式如下: 标号标号: : 操作码操作码/ /伪操作码伪操作码 操作数操作数 ;注释;注释 标号标号:又称指令地址符号。它是用户设定的符号,

5、代表着该条:又称指令地址符号。它是用户设定的符号,代表着该条指令所在的地址。指令所在的地址。标号必须以字母开头,其后跟标号必须以字母开头,其后跟18个字母或数字,并以个字母或数字,并以“:”结尾结尾。标号不能为指令系统中的指令助记符、标号不能为指令系统中的指令助记符、CPU的寄存器名以及伪指令的寄存器名以及伪指令等,且同一程序内标号必须互不相同。等,且同一程序内标号必须互不相同。 第第4章章 MCS-51 指令系统指令系统6操作码操作码/伪操作码:伪操作码:是用英文缩写的指令助记符。是用英文缩写的指令助记符。 操作码:操作码:规定了指令的操作功能,它所对应的汇编语句称规定了指令的操作功能,它所

6、对应的汇编语句称为指令性语句。为指令性语句。 如:如:MOV 50H,#10H 机器码:机器码:75H,50H,10H。 伪操作码:伪操作码:说明汇编程序如何完成汇编工作,它所对应的说明汇编程序如何完成汇编工作,它所对应的语句称为指示性语句,在汇编后没有目标代码。语句称为指示性语句,在汇编后没有目标代码。 如:如:ORG, END, EQU 等。等。 第第4章章 MCS-51 指令系统指令系统7操作数:操作数:指参加操作的数据或数据所在的地址。指参加操作的数据或数据所在的地址。在在MCS-51单片机中,操作数可以是单片机中,操作数可以是1、2、3个,也可以没有。个,也可以没有。例如,例如, M

7、OV A,#10H ;两个操作数。两个操作数。目的操作数目的操作数源操作数源操作数 DECA ;一;一个操作数个操作数 CJNEA,#10H, DELAY ;三;三个操作数个操作数规定:操作码规定:操作码/伪操作码和操作数之间必须用伪操作码和操作数之间必须用空格空格分开,操作分开,操作数与操作数之间必须用数与操作数之间必须用逗号逗号分开。分开。注释:注释:增加程序的可读性,以增加程序的可读性,以“;”号开头。号开头。 第第4章章 MCS-51 指令系统指令系统84.1.3 操作数的类型操作数的类型MOV A,#30 MOV B,A MOV R0, #40H 1) 立即数立即数2) 寄存器操作数

8、寄存器操作数3) 存储器操作数存储器操作数MOV A,20H第第4章章 MCS-51 指令系统指令系统94.1.4 MCS-51系列单片机指令格式及分类系列单片机指令格式及分类7 6 5 4 3 2 1 0操作码操作码如:如: DEC A 机器码:机器码:0001,0100B=14H。 (1)单字节指令:)单字节指令:两种编码格式两种编码格式 8位编码全部是操作码,操作数隐含在其中。位编码全部是操作码,操作数隐含在其中。第第4章章 MCS-51 指令系统指令系统10 8位编码中含有操作码和操作数,该操作数通常是通用寄存器位编码中含有操作码和操作数,该操作数通常是通用寄存器R0R7的编码。的编码

9、。 rrr=000111,分别表示,分别表示R0R7。 如:如:ADD A,R7机器码为:机器码为:0010,1111B=2FH。7 6 5 4 3 2 1 0操作码操作码rrr第第4章章 MCS-51 指令系统指令系统11(2)双字节指令:)双字节指令:由两个字节组成,其中一个字节为操作码,由两个字节组成,其中一个字节为操作码,另一个字节为参与操作的另一个字节为参与操作的数据数据data或数据存放的或数据存放的地址地址direct。如:如:ADD A,#60H机器码:机器码:24H,60H。 7 6 5 4 3 2 1 0操作码操作码操作数操作数第第4章章 MCS-51 指令系统指令系统11

10、2(3) 三字节指令:三字节指令:指令由三个字节组成,其中操作码占一个字指令由三个字节组成,其中操作码占一个字节,操作数占两个字节。操作数既可以是数据,也可以是地址。节,操作数占两个字节。操作数既可以是数据,也可以是地址。 如:如:MOV 40H,#20H机器码:机器码:75H,4 40H,2 20H。 7 6 5 4 3 2 1 0操作码操作码操作数操作数1操作数操作数2第第4章章 MCS-51 指令系统指令系统13以以(20H(20H10H)-1510H)-15为例说明单片机的指令格式以及汇编语言源程序为例说明单片机的指令格式以及汇编语言源程序的格式。的格式。符号符号(伪伪)操作码操作码操

11、作数操作数机器码机器码(H)ORG 2000HABCEQU 20HMOVA,#10HE5,10ADDA,#ABC24,20SUBBA,#1594,0FNOP 00MOV40H,AF5,40END第第4章章 MCS-51 指令系统指令系统144.1.5 MCS-51汇编语言伪指令汇编语言伪指令 主要的主要的8个:个:ORG、END、DB、DW、DS、EQU、 DATA、BIT(1) ORG(Origin) 汇编起始地址命令汇编起始地址命令 功能:用于规定目标程序的起始地址。功能:用于规定目标程序的起始地址。 格式:格式: 标号:标号: ORG 地址地址 地址项:地址项:16位绝对地址,也可以用标

12、号或表达式表示。位绝对地址,也可以用标号或表达式表示。如果不用如果不用ORG规定,则汇编得到的目标程序将从规定,则汇编得到的目标程序将从0000H开始。开始。第第4章章 MCS-51 指令系统指令系统115一个源程序中,可多次使用一个源程序中,可多次使用ORG指令以规定不同程序段指令以规定不同程序段的起始位置。地址应从小到大顺序排列,不允许重叠。的起始位置。地址应从小到大顺序排列,不允许重叠。例如:例如: ORG 4000HLJMP MAINORG 4200HMAIN:MOV A, 30H 第第4章章 MCS-51 指令系统指令系统1162) END(END of assembly)汇编终止命

13、令)汇编终止命令 功能:用于终止源程序的汇编工作。功能:用于终止源程序的汇编工作。 格式:格式: 标号:标号: END 表达式表达式注意:只有主程序模块才有注意:只有主程序模块才有“表达式表达式” 项,且项,且“表达式表达式”的值等于该程序模块的入口地址。而其他程序模块就没有的值等于该程序模块的入口地址。而其他程序模块就没有“表达式表达式”项。项。“标号:标号:”也是选择项。也是选择项。 一个源程序只能有一个一个源程序只能有一个END命令。命令。第第4章章 MCS-51 指令系统指令系统173) DB(Define Byte) 定义数据字节命令定义数据字节命令 功能:用于从指定的地址单元开始,

14、在程序存储器中定义功能:用于从指定的地址单元开始,在程序存储器中定义字节数据。字节数据。 例例4-1 分别从分别从ROM的的1000H和和1020H单元开始,按顺序存放单元开始,按顺序存放09中每个整数的平方值和字符串中每个整数的平方值和字符串“An apple!”。 ORG 1000HDATA1: DB 0, 1, 4, 9, 16, 25, 36, 49, 64, 81 ORG 1020HDATA2: DB “An apple!” END第第4章章 MCS-51 指令系统指令系统18单元地址单元地址ROM中的内容中的内容单元地址单元地址ROM中的内容中的内容0FFFH101FH1000H0

15、0H1020H41H(A)1001H01H1021H6EH(n)1002H04H1022H20H(空格空格)1003H09H1023H61H(a)1004H10H1024H70H(p)1005H19H1025H70H(p)1006H24H1026H6CH(l)1007H31H1027H65H(e)1008H40H1028H21H(!)1009H51H1029H第第4章章 MCS-51 指令系统指令系统19 (4) DW(Define Word) 定义数据字命令定义数据字命令 功能:用于从指定地址开始,在程序存储器单元中定义功能:用于从指定地址开始,在程序存储器单元中定义16位位的数据字。的数据

16、字。 格式格式: 标号:标号: DW 16位数表位数表 存放规则:高存放规则:高8位在前(低地址),低位在前(低地址),低8位在后(高地址)。位在后(高地址)。 ORG 1100HDATA2: DW 3478H, 10H, -1单元地址单元地址ROM中的内容中的内容10FFH1100H34H1101H78H1102H00H1103H10H1104H0FFH1105H0FFH1109H第第4章章 MCS-51 指令系统指令系统20 注意:注意: DB和和DW定义的数表,数的个数不得超过定义的数表,数的个数不得超过80个;个; 如果数据的数目较多时,可使用多个定义命令;如果数据的数目较多时,可使用

17、多个定义命令; 在在 MCS-51程序设计应用中,常以程序设计应用中,常以DB定义数据,以定义数据,以DW定义地址。定义地址。第第4章章 MCS-51 指令系统指令系统21(5) DS(Define Storage) 定义存储区命令定义存储区命令 功能:用于从指定地址开始,保留指定数目的字节单元为存功能:用于从指定地址开始,保留指定数目的字节单元为存储区,供程序运行使用。汇编时对这些单元不赋值。储区,供程序运行使用。汇编时对这些单元不赋值。 格式:格式: 标号:标号: DS 指定数目字节单元指定数目字节单元 例:例: ORG 8100H DS 08H注意:对注意:对MSC-51单片机来说,单片

18、机来说,DB、DW、DS命令只能对程序命令只能对程序存储器使用,不能对数据存储器使用。存储器使用,不能对数据存储器使用。第第4章章 MCS-51 指令系统指令系统22例如例如: X EQU 20Y EQU 30Z EQU X+YAA EQU R1(6) EQU(Equate) 赋值命令赋值命令 功能:用于给字符名称赋予一个特定值。赋值以后,其值在功能:用于给字符名称赋予一个特定值。赋值以后,其值在整个过程中有效。整个过程中有效。 格式:格式: 字符名称字符名称 EQU 赋值项赋值项 “赋值项赋值项”:可以是常数、地址、标号或表达式。:可以是常数、地址、标号或表达式。 MOV A, #XMOV

19、A, X第第4章章 MCS-51 指令系统指令系统23(7) DATA 数据地址赋值命令数据地址赋值命令格式:格式:字符名称字符名称 DATA 赋值赋值项项功能:与功能:与EQU基本类似,但有以下差别。基本类似,但有以下差别。* EQU定义的字符名称必须先定义后使用定义的字符名称必须先定义后使用,而,而DATA定义定义的字符名可以先使用后定义。的字符名可以先使用后定义。* 用用EQU可以把一个汇编符号赋给字符名称可以把一个汇编符号赋给字符名称,如上例中的,如上例中的R1,而,而DATA只能把只能把数据数据赋给字符名。赋给字符名。第第4章章 MCS-51 指令系统指令系统24(8)BIT 位定义

20、命令位定义命令 功能:功能: 用于给字符名称赋以位地址。用于给字符名称赋以位地址。 格式:格式: 字符名称字符名称 BIT 位地址位地址 例如:例如: AAA BIT 40H ;绝对地址;绝对地址BBB BIT P1.0 ;符号地址;符号地址例如例如: MOV Cy, AAA第第4章章 MCS-51 指令系统指令系统125小结小结 MCS-51汇编语言伪指令汇编语言伪指令 ORG 汇编起始地址命令汇编起始地址命令END 汇编终止命令汇编终止命令DB(Define Byte) 定义数据字节命令定义数据字节命令DW(Define Word)定义数据字命令)定义数据字命令DS(Define Stor

21、age)定义存储区命令EQU(Equate) 赋值命令赋值命令DATA 数据地址赋值命令BIT 位定义命令第第4章章 MCS-51 指令系统指令系统264.2 寻址方式寻址方式寻址方式:寻找操作数所在地址的方法。寻址方式:寻找操作数所在地址的方法。7种寻址方式:种寻址方式: 立即寻址立即寻址寄存器寻址寄存器寻址直接寻址直接寻址寄存器间接寻址寄存器间接寻址基址加变址寻址基址加变址寻址相对寻址相对寻址位寻址。位寻址。第第4章章 MCS-51 指令系统指令系统1274.2.1 符号注释符号注释l Rn (n = 07)l Ri (i = 0,1)l l #data:8位立即数。位立即数。l l #d

22、atal6:16位立即数。位立即数。l l direct:8位片内位片内RAM单元单元(包括包括SFR)的直接地址。的直接地址。l l addr11:11位目的地址。位目的地址。l l addr16:16位目的地址。位目的地址。l l :将箭头两边的数据进行交换。:将箭头两边的数据进行交换。第第4章章 MCS-51 指令系统指令系统128l l rel:以补码形式出现的:以补码形式出现的8位相对地址偏移量位相对地址偏移量,-128+127.l l bit:直接寻址位的地址。:直接寻址位的地址。l l :间接寻址方式中,表示间址寄存器的前缀标志。:间接寻址方式中,表示间址寄存器的前缀标志。l l

23、 /:表示对该位状态取反。:表示对该位状态取反。l l (X):表示直接地址:表示直接地址X或寄存器或寄存器X中的内容。中的内容。l l (X):表示寄存器:表示寄存器X中的内容为单元地址,以该单元的值中的内容为单元地址,以该单元的值为操作数。为操作数。l l :将箭头右边的内容送给箭头左边的单元或寄存器。:将箭头右边的内容送给箭头左边的单元或寄存器。第第4章章 MCS-51 指令系统指令系统294.2 寻址方式寻址方式寻址方式:寻找操作数所在地址的方法。寻址方式:寻找操作数所在地址的方法。7种寻址方式:种寻址方式: 立即寻址立即寻址寄存器寻址寄存器寻址直接寻址直接寻址寄存器间接寻址寄存器间接

24、寻址基址加变址寻址基址加变址寻址相对寻址相对寻址位寻址。位寻址。第第4章章 MCS-51 指令系统指令系统1304.2.2 寻址方式寻址方式(1)立即寻址)立即寻址 指令中直接给出操作数的寻址方式。指令中直接给出操作数的寻址方式。 立即数:立即数:8位或位或16位。位。例如:例如:MOV A,#20H ;A20H MOV 20H,#20H ;20H20H MOV DPTR, #2000H ; DPTR 2000H 第第4章章 MCS-51 指令系统指令系统131(2) 直接寻址直接寻址指令中直接给出操作数所在地址的寻址方式。指令中直接给出操作数所在地址的寻址方式。操所数所在区域:操所数所在区域

25、:(1)内部)内部RAM的低的低128单元;单元;(2)特殊功能寄存器。)特殊功能寄存器。例如:例如: MOV A,20H ;A(20H) MOV 30H,20H ;30H(20H)第第4章章 MCS-51 指令系统指令系统132(3) 寄存器寻址寄存器寻址以通用寄存器的内容为操作数的寻址方式。以通用寄存器的内容为操作数的寻址方式。例如:例如:MOV 20H,A ; 20H ( A ) MUL AB;BA(A)(B) MOV B,R0 ;B(R0) 可用的寄存器:通用寄存器可用的寄存器:通用寄存器R0R7和若干和若干SFR,例如,例如,A,B和和DPTR。第第4章章 MCS-51 指令系统指令

26、系统133直接寻址和寄存器寻址的差别:直接寻址和寄存器寻址的差别: 直接寻址直接寻址是以操作数所在的是以操作数所在的单元地址单元地址(占一个字节占一个字节)出现在指令码中出现在指令码中; 例如:例如:MOV A,70H ;机器码;机器码 E5H,70H 源操作数是直接寻址,目的操作数为寄存器寻址源操作数是直接寻址,目的操作数为寄存器寻址 寄存器寻址寄存器寻址是寄存器编码出现在指令码中。是寄存器编码出现在指令码中。 例如:例如:MOV A,R0 ;机器码;机器码 E8H 源操作数和目的操作数都是寄存器寻址源操作数和目的操作数都是寄存器寻址p 操作码和寄存器编码合用一个字节,因此寄存器寻址的指令机

27、器码操作码和寄存器编码合用一个字节,因此寄存器寻址的指令机器码短,执行快。短,执行快。p 除了除了通用寄存器通用寄存器R0R7 ,和特殊功能寄存器,和特殊功能寄存器 A,B和和DPTR外的其它特外的其它特殊功能寄存器一律属于殊功能寄存器一律属于直接寻址直接寻址。 第第4章章 MCS-51 指令系统指令系统134(4) 寄存器间接寻址寄存器间接寻址 MOV A,R0;A(R0)若若(R0) = 34H,(34H) = 56H 以寄存器中的内容为以寄存器中的内容为地址地址,以该地址中的内容为操作数,以该地址中的内容为操作数的寻的寻址方式称为寄存器间接寻址。址方式称为寄存器间接寻址。可用的可用的寄存

28、器寄存器:R0、R1和和DPTR。第第4章章 MCS-51 指令系统指令系统135寄存器间接寻址的寻址范围:寄存器间接寻址的寻址范围:片内片内RAM和片外和片外RAM。当寻址片内当寻址片内RAM时(或片外时(或片外RAM的低的低256字节),使用字节),使用R0或或R1作间址寄存器,其通用形式为作间址寄存器,其通用形式为 Ri(i=0或或1) 。当寻址片外当寻址片外RAM时,使用时,使用DPTR作间址寄存器,其通用形作间址寄存器,其通用形式为式为 DPTR。MOVA,R0;A(R0),MOVR1,A; (R1)AMOVXA,R0;A(R0)MOVX A,DPTR;A(DPTR)第第4章章 MC

29、S-51 指令系统指令系统136(5) 变址寻址变址寻址(或基址加变址寻址) 以以DPTR或或PC作基址寄存器,累加器作基址寄存器,累加器A作变址寄存器,并作变址寄存器,并以两者内容相加形成的以两者内容相加形成的16位地址作为操作数地址的寻址方式称位地址作为操作数地址的寻址方式称为变址寻址,或基址加变址寻址方式。为变址寻址,或基址加变址寻址方式。 寻址空间:程序存储器寻址空间:程序存储器ROMROM。 指令指令:MOVC A,A+PC MOVC A,A+DPTR JMP ADPTR第第4章章 MCS-51 指令系统指令系统37图图4-8 指令指令MOVC A,A+DPTR的操作示意图的操作示意

30、图例如:例如: ORG 0200HMOVC A,A+DPTR;A(A)+(DPTR),机器码为,机器码为93H 若(若(DPTRDPTR)=1234H=1234H,(,(A A)=10H=10H第第4章章 MCS-51 指令系统指令系统138变址寻址方式只能对变址寻址方式只能对程序存储器程序存储器进行寻址。进行寻址。(2) 变址寻址的指令只有三条变址寻址的指令只有三条 MOVC A,ADPTR MOVC A,APC JMP ADPTR 其中前两条是程序存储器读指令,后一条是无条件转移指令。其中前两条是程序存储器读指令,后一条是无条件转移指令。(3) 尽管变址寻址方式操作较为复杂,但变址寻址指令

31、都是尽管变址寻址方式操作较为复杂,但变址寻址指令都是单字单字节指令节指令。 说明:说明:第第4章章 MCS-51 指令系统指令系统39(6) 相对寻址相对寻址 寻址方式主要用于通过修改寻址方式主要用于通过修改PCPC值而实现程序的分支转移。值而实现程序的分支转移。 例如:例如: ORG 2000HORG 2000HJC 30H JC 30H ;双字节指令;双字节指令 relrel为一字节补码数,范围为为一字节补码数,范围为128128127127。在在汇编语言汇编语言中,相对转移指令后给出的地址即为中,相对转移指令后给出的地址即为程序的目程序的目标地址标地址. 第第4章章 MCS-51 指令系

32、统指令系统40注意注意: 在在机器语言机器语言中相对转移指令指令代码后跟的不是汇编中相对转移指令指令代码后跟的不是汇编语言中给出的语言中给出的目标地址目标地址,而是,而是该目标地址和程序计数器该目标地址和程序计数器PC的当前值(指跳转指令的下条指令的地址)之间的相对偏的当前值(指跳转指令的下条指令的地址)之间的相对偏差差rel。 第第4章章 MCS-51 指令系统指令系统141 ORG 0000H(0H) MOV A, #89H; 2字节指令字节指令, 机器代码为机器代码为74H, 89H(2H) ADDA, #78H; 2字节指令字节指令, 机器代码为机器代码为24H, 78H(4H) JC

33、 30H ; 2字节指令字节指令, 机器代码为机器代码为40H, 2AH(6H) NOP; 1字节指令字节指令, 机器代码为机器代码为00HORG 30H(30H) ADDA, #30H; 2字节指令字节指令, 机器代码为机器代码为24H, 30H(32H) NOP; 1字节指令字节指令, 机器代码为机器代码为00H END第第4章章 MCS-51 指令系统指令系统142图图4-9 相对寻址操作示意图相对寻址操作示意图第第4章章 MCS-51 指令系统指令系统43在编程中,经常用标号代替目标地址。在编程中,经常用标号代替目标地址。 ORG 0000H MOV A, #89H ADD A, #7

34、8H JC LOOP NOP ORG 30HLOOP:ADD A, #30H NOP END第第4章章 MCS-51 指令系统指令系统144(7) 位寻址方式位寻址方式在进行位操作时,借助于进位位在进行位操作时,借助于进位位C作为操作累加器。作为操作累加器。例如:例如: MOV 20H,C ;20H(CY),),20H是位寻址的位地址是位寻址的位地址 CLR C; 第第4章章 MCS-51 指令系统指令系统145(1) 位名称表示方法:位名称表示方法:CLR CY(2) 位地址表示法:位地址表示法:CLR 0D7H(3) 单元地址加位的表示方法:单元地址加位的表示方法:CLR 0D0H.7 (

35、4) 专用寄存器符号加位的表示方法:专用寄存器符号加位的表示方法:CLR PSW.7D7D6D5D4D3D2D1D0CYACF0RS1RS0OVP对于特殊功能寄存器中具有位地址和位名称的位,可以采用对于特殊功能寄存器中具有位地址和位名称的位,可以采用以下四种方法表示以下四种方法表示.PSW0D0HSFR地址地址SFR名称名称第第4章章 MCS-51 指令系统指令系统146区别区别: MOV C, 20H MOV A, 20H说明说明: 源操作数和目的操作数各有自己的寻址方式。源操作数和目的操作数各有自己的寻址方式。MOV 50H, R1源操作数:寄存器寻址方式,源操作数:寄存器寻址方式,目的操

36、作数:直接寻址方式,目的操作数:直接寻址方式,第第4章章 MCS-51 指令系统指令系统47小结:小结: 操作数寻址方式和有关的寻址空间操作数寻址方式和有关的寻址空间寻寻 址址 方方 式式寻寻 址址 空空 间间立即数寻址立即数寻址ROM(汇编后数据直接存放在汇编后数据直接存放在ROM中中)直接寻址直接寻址片内低片内低128字节和字节和SFR寄存器寻址寄存器寻址通用寄存器通用寄存器R0R7某些某些SFR,如,如A、B(乘除指令中乘除指令中)、DPTR寄存器间接寻址寄存器间接寻址片内片内RAM低低128B Ri片外片外RAM(Ri,DPTR)变址寻址变址寻址(基址基址+变址寻址变址寻址)ROM:

37、(A + PC,A + DPTR)相对寻址相对寻址ROM : 256B范围范围位寻址位寻址片内片内RAM 20H2FH单元的位单元的位(128位位)部分部分SFR中的可寻址位中的可寻址位第第4章章 MCS-51 指令系统指令系统48 4.3 指令系统指令系统五大类:五大类:数据传送类指令、数据传送类指令、算术运算类指令、算术运算类指令、逻辑运算及移位类指令、逻辑运算及移位类指令、控制转移类指令控制转移类指令位操作类指令位操作类指令。 共计共计111条指令条指令第第4章章 MCS-51 指令系统指令系统149 4.3.1 数据传送类指令数据传送类指令指令功能:指令功能:一般是把源操作数传输到目的

38、操作数,指令一般是把源操作数传输到目的操作数,指令执行后,源操作数不变,而目的操作数修改为源操作数。执行后,源操作数不变,而目的操作数修改为源操作数。 第第4章章 MCS-51 指令系统指令系统1501) 内部内部 RAM数据传送指令组数据传送指令组 单片机芯片内部数据传送范围:单片机芯片内部数据传送范围:寄存器、累加器、专用寄存器、累加器、专用寄存器以及寄存器以及RAM单元。单元。分类介绍:分类介绍:(1) 以累加器以累加器A为目的操作数的指令:为目的操作数的指令:MOV A,Rn ;A(Rn),), RnR0R7MOV A,direct ;A(direct)MOV A,Ri ;A(Ri),

39、), RiR0,R1MOV A,#data ;A data功能:将源操作数所指定的内容送入累加器功能:将源操作数所指定的内容送入累加器A。第第4章章 MCS-51 指令系统指令系统51(2) 以通用寄存器以通用寄存器Rn为目的操作数的指令:为目的操作数的指令:MOV Rn,A ;Rn(A),), RnR0R7MOV Rn,direct ;Rn(direct)MOV Rn,#data ;Rndata功能:将源操作数所指定的内容送到当前工作寄存器组功能:将源操作数所指定的内容送到当前工作寄存器组R0R7中的某个寄存器中。中的某个寄存器中。第第4章章 MCS-51 指令系统指令系统52例如:例如:

40、(A)78H,(,(R5)47H,(,(70H)0F2H, 执行指令:执行指令:MOV R5,A ;R5(A),), (R5)78HMOV R5,70H;R5(70H),(),(R5)0F2HMOV R5,#0A3H ;R50A3H, (R5)0A3H注意:注意: 8051指令系统中无指令系统中无 MOV Rn,Rn 第第4章章 MCS-51 指令系统指令系统53(3) 以直接地址为目的操作数的指令:以直接地址为目的操作数的指令:MOV direct,A;direct(A)MOV direct,Rn;direct(Rn)MOV direct,direct;direct(direct)MOV d

41、irect,Ri;direct(Ri)MOV direct, #data;direct data功能:将源操作数所指定的内容送入由直接地址功能:将源操作数所指定的内容送入由直接地址direct所指定所指定的片内存储器中。的片内存储器中。第第4章章 MCS-51 指令系统指令系统154(4) 以间接地址为目的地址操作数的指令:以间接地址为目的地址操作数的指令:MOV Ri,A;(;(Ri)(A)MOV Ri,direct;(;(Ri)(direct)MOV Ri,#data;(;(Ri)data功能:将源操作数所指定的内容送入以功能:将源操作数所指定的内容送入以R0或或R1为地址指针为地址指针的

42、片内存储器单元中。的片内存储器单元中。第第4章章 MCS-51 指令系统指令系统155(5)十六位数据传送指令:)十六位数据传送指令:MOV DPTR, #data16 ;DPHdataH, DPLdataL 唯一的唯一的16位立即数传送指令。位立即数传送指令。第第4章章 MCS-51 指令系统指令系统156RidirectRnACC#data传送指令在片内的操作功能第第4章章 MCS-51 指令系统指令系统572) 外部外部RAM数据传送指令组数据传送指令组寻址方式:寻址方式:寄存器间接寻址方式寄存器间接寻址方式,使用使用DPTR、Ri作间址寄作间址寄存器。存器。(1) 使用使用DPTR进行

43、间接寻址进行间接寻址MOVX A,DPTR ;A(DPTR)MOVX DPTR,A ;(;(DPTR)(A)指令的寻址范围:指令的寻址范围:64KB。指令执行时,指令执行时,DPH中存放的高中存放的高8位地址送位地址送P2口输出,口输出,DPL中存放的低中存放的低8位地址由位地址由P0口分时输出。口分时输出。第第4章章 MCS-51 指令系统指令系统158例例4-2 编写汇编语言源程序,将外部编写汇编语言源程序,将外部RAM 1000H单元的内容清单元的内容清零。零。 ORG 0 ENDMOVXDPTR,A ;写入;写入0给给1000H单元单元 MOVA,#0START: MOV DPTR,#

44、1000H;(;(DPTR)=1000H第第4章章 MCS-51 指令系统指令系统159(2) 使用使用Ri进行间接寻址进行间接寻址 MOVX A,Ri;A(Ri)MOVX Ri,A ;(;(Ri)(A) i=0或或1。指令的寻址范围:指令的寻址范围:只限于外部只限于外部RAM的低的低256单元。单元。此时:(此时:(Ri)的值送)的值送P0,默认的高,默认的高8位地址位地址P2为为0。第第4章章 MCS-51 指令系统指令系统160对外部对外部RAM数据传送指令作如下数据传送指令作如下说明说明: 外部数据存储器数据传送指令就是外部外部数据存储器数据传送指令就是外部RAM的读写指令。的读写指令

45、。 外部外部RAM数据传送指令与内部数据传送指令与内部RAM数据传送指令的助记数据传送指令的助记符不同。符不同。内部内部RAM:MOV,外部外部RAM:MOVX。 增加的增加的“X”表示外部之意表示外部之意(External) 外部外部RAM传送,只能通过累加器传送,只能通过累加器A进行。进行。 第第4章章 MCS-51 指令系统指令系统161A寄存器寄存器寄存器间接寻址寄存器间接寻址R1、R0(外部(外部RAM 低低256B)寄存器间接寻址寄存器间接寻址DPTR(外部(外部RAM 64KB)外部数据存储器传送操作示意图外部数据存储器传送操作示意图第第4章章 MCS-51 指令系统指令系统16

46、23) 程序存储器数据传送指令组(查表指令):程序存储器数据传送指令组(查表指令):ROM: 内部内部ROM, 外部外部ROM。 对对ROM的操作:只能读,不能写。的操作:只能读,不能写。 说明说明: 累加器累加器A内内8位无符号数。位无符号数。 1字节指令。字节指令。仅有两条仅有两条 : MOVC A,A+PC ;PC(PC)+1,A(A)+(PC) MOVC A,A+DPTR ;A(A)+(DPTR)第第4章章 MCS-51 指令系统指令系统163作用:常用于查表操作,又称作用:常用于查表操作,又称查表专用指令查表专用指令。二者的区别:二者的区别:MOVC A,A+PC;PC的查表范围在的

47、查表范围在256B内,内, 称近程查表。称近程查表。MOVC A,A+DPTR ;DPTR可指向可指向64KB空间,空间, 称远程查表称远程查表。第第4章章 MCS-51 指令系统指令系统164例例4-3 在外部在外部ROM从从3000H单元开始存放了一个字节型数组,该单元开始存放了一个字节型数组,该数组中的数据依次是数组中的数据依次是09之间整数的平方,编程采用查表的方之间整数的平方,编程采用查表的方法求出法求出5的平方的平方。 3009H40H3008H31H3007H24H3006H19H3005H10H3004H09H3003H04H3002H01H3001H00H3000H2FFFH

48、ROM中的内容中的内容单元地址单元地址51H第第4章章 MCS-51 指令系统指令系统165ORG 0000HMOV DPTR,#3000H;DPTR指向表头指向表头MOV A,#5 MOVC A,A+DPTR;查表并将结果存于;查表并将结果存于A中中MOV 50H,A ;存平方值;存平方值NOP ORG 3000HDB 0,1,4,9,16,25,36,49,64,81END第第4章章 MCS-51 指令系统指令系统166ORG 0000HMOV DPTR,#TABLE;DPTR指向表头指向表头MOV A,#5 MOVC A,A+DPTRMOV 50H,A NOPTABLE: DB 0,1,

49、4,9,16,25,36,49,64,81END第第4章章 MCS-51 指令系统指令系统167例例4-4: 以近程查表指令实现例以近程查表指令实现例4-3的功能。的功能。 MOVCA,A+PC ;机器码;机器码83HSTART: MOV A, #5;机器码为;机器码为7405H ORG 0 ENDTABLE:DB 0,1,4,9,16,25,36,49,64,81单元地址单元地址ROM中的内容中的内容00H74H01H05H02H83H03H0H04H1H05H4H06H9H07H10H08H16H09H24H0AH31H200BH40H200CH51H200DH图图4-10 数据存放示意图

50、数据存放示意图第第4章章 MCS-51 指令系统指令系统168 ORG 0 START: MOV A, #5;机器码为;机器码为7405H MOVCA,A+PC ;机器码;机器码83H NOP ;1字节字节TABLE:DB 0,1,4,9,16,25,36,49,64,81 END 如果加一个如果加一个NOP,程序该如何变化?,程序该如何变化?INC A第第4章章 MCS-51 指令系统指令系统单片机内部空间的数据传送指令(单片机内部空间的数据传送指令(16条)条)RidirectRnACC#dataDPTR第第4章章 MCS-51 指令系统指令系统70单片机对外部数据存储器的读、写指令单片机

51、对外部数据存储器的读、写指令MOVX(4条)条)单片机访问程序空间指令(查表指令)单片机访问程序空间指令(查表指令) (2条)条)第第4章章 MCS-51 指令系统指令系统1714)数据交换指令组)数据交换指令组 数据交换主要是在数据交换主要是在内部内部RAM单元单元与与累加器累加器A之间进行。之间进行。有有整字节整字节和和半字节半字节交换指令两种。交换指令两种。(1) 整字节交换指令整字节交换指令XCHA,Rn ;(;(A)(Rn)XCH A,direct;(;(A)(direct)XCH A,Ri;(;(A)(Ri)第第4章章 MCS-51 指令系统指令系统172(2)低半字节交换指令:)

52、低半字节交换指令:XCHDA,Ri ;(;(A)30 (Ri)30(3)累加器高低半字节交换指令:)累加器高低半字节交换指令:SWAP A ;(;(A)30 (A)74例如:例如:若(若(R0)5BH,(,(5BH)6 DH,(,(A)0 0H,指令:指令: XCHD A,R0结果:结果:(A)0DH, (5BH)60H。第第4章章 MCS-51 指令系统指令系统1735)堆栈操作指令组:)堆栈操作指令组:进栈、出栈两种操作。进栈、出栈两种操作。 PUSH direct ;SP(SP)+1,(,(SP)(direct)POP direct ;direct(SP),SP(SP)1注意:注意:使用

53、堆栈前,需设定使用堆栈前,需设定SP的初始值。的初始值。寻址方式:寻址方式: 以以SP为间址寄存器的间接寻址方式为间址寄存器的间接寻址方式。第第4章章 MCS-51 指令系统指令系统74例例: 已知片内已知片内RAM 40H单元中存放数据为单元中存放数据为80H,设堆栈指针为,设堆栈指针为30H,把此,把此数值压入堆栈,然后再弹出到数值压入堆栈,然后再弹出到41H单元中。单元中。MOVSP,#30H;SP30HPUSH40H;SP(SP)+1,(,(31H)(40H) POP41H;41H(31),),(SP)(SP)1 FF80805641H40H31H30HSP压入压入8080805641

54、H40H31H30HSP弹出弹出第第4章章 MCS-51 指令系统指令系统175堆栈操作应堆栈操作应遵循遵循“先进后出先进后出”的原则的原则。例如:例如:PUSHAPUSHPSW POPPSWPOPA若若改为:改为:PUSHAPUSHPSWPOPAPOPPSW 结果?结果?第第4章章 MCS-51 指令系统指令系统176数据传送类指令说明数据传送类指令说明(1)同样的数据传送,可以使用不同寻址方式的指令来实同样的数据传送,可以使用不同寻址方式的指令来实现。现。例如:把累加器例如:把累加器A的内容送内部的内容送内部RAM 26H单元单元,可由以下,可由以下不同的指令完成:不同的指令完成: MOV

55、 26H,A MOV R0,26H MOV R0,A MOV 26H,0E0H第第4章章 MCS-51 指令系统指令系统177(2)数据传送类指令一般不影响程序状态字)数据传送类指令一般不影响程序状态字PSW。 个别影响个别影响P位,如位,如 :A累加器原值为累加器原值为1,指令,指令MOV A,#0 但堆栈指令(但堆栈指令(PUSH和和POP)可以直接修改状态字)可以直接修改状态字PSW。例如:例如: PUSH 40HPOP PSW第第4章章 MCS-51 指令系统指令系统17824条指令,完成加、减、乘、除等算术运算。条指令,完成加、减、乘、除等算术运算。1)加法指令组()加法指令组(AD

56、D)ADD A, Rn ;A(A)+(Rn)ADD A, direct ;A(A)+(direct)ADD A, Ri ;A(A)+((Ri))ADD A, #data ;A(A)+data4.3.2 算术运算类指令算术运算类指令第第4章章 MCS-51 指令系统指令系统179加法运算影响加法运算影响PSW位的状态。位的状态。如果位如果位3有进位,则辅助位标志有进位,则辅助位标志AC置置1,否则,否则AC清清0;如果位如果位7有进位,则进位标志有进位,则进位标志CY置置1,否则,否则CY清清0。两个带符号数相加,还有溢出的问题。如果运算结果使溢两个带符号数相加,还有溢出的问题。如果运算结果使溢

57、出标志出标志OV置置1,则表示有溢出出现。,则表示有溢出出现。OV溢出判断方法:溢出判断方法:(1)根据带符号数的性质判断:两个正数相加变负数,)根据带符号数的性质判断:两个正数相加变负数,或两个负数相减变正数或两个负数相减变正数(2)双高位法:第六位的进位位与第七位的进位位异或)双高位法:第六位的进位位与第七位的进位位异或结果判断,结果判断,67VCCO第第4章章 MCS-51 指令系统指令系统1801 1 0 0, 0 0 1 1 B 1 0 1 0, 1 0 1 0 B 1 0 1 1 0 1 1 0 1 B C60 C71 1, 所以有溢出。所以有溢出。结果:(结果:(A)=6DH,(

58、,(AC)0,(,(CY)1,(,(OV)=1,P1, PSW85H67VCCOCyACF0RS1RS0OVP1000010085H第第4章章 MCS-51 指令系统指令系统812)带进位加法指令组:)带进位加法指令组:三个数参加运算:累加器三个数参加运算:累加器A,不同寻址方式的加数,以及进,不同寻址方式的加数,以及进位标志位位标志位CY,运算结果送累加器,运算结果送累加器A。 ADDC A, Rn ;A(A)+(Rn)+(CY)ADDC A, direct ;A(A)+(direct)+(CY)ADDC A, Ri ;A(A)+(Ri)+(CY)ADDC A, #data ;A(A)+da

59、ta+(CY)带进位加法运算指令常用于带进位加法运算指令常用于多字节数的加法运算多字节数的加法运算。第第4章章 MCS-51 指令系统指令系统82例例4-5 利用利用ADDC指令编写计算指令编写计算9878H8934H的汇编语言的汇编语言源程序。源程序。 假设:被加数放在内部假设:被加数放在内部RAM: 31H、32H单元单元 (低位在前),(低位在前), 加数放在内部加数放在内部RAM: 33H、34H单元(低位在前),单元(低位在前), 和存于和存于 :35、36H 单元,单元, 进位位:进位位: :37H 单元。单元。第第4章章 MCS-51 指令系统指令系统83 ORG 0START:

60、MOV 31H,#78H MOV 32H,#98HMOV 33H,#34HMOV 34H,#89HMOV A,33HADDA,31HMOV 35H,AMOV A,34HADDCA,32HMOV 36H,AMOV A,#0ADDC A,#0MOV 37H,AEND第第4章章 MCS-51 指令系统指令系统843)带借位减法指令组:)带借位减法指令组:带带借借位减法指令也有四条:位减法指令也有四条:SUBB A,Rn ; A(A)()(Rn)()(CY)SUBB A,direct ; A(A)()(direct)()(CY)SUBB A,Ri ; A(A)((Ri))(CY)SUBB A,#dat

温馨提示

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

评论

0/150

提交评论