指令系统及汇编程序设计 (2)培训资料

上传人:yuzo****123 文档编号:143849345 上传时间:2020-09-02 格式:PPT 页数:123 大小:1.24MB
返回 下载 相关 举报
指令系统及汇编程序设计 (2)培训资料_第1页
第1页 / 共123页
指令系统及汇编程序设计 (2)培训资料_第2页
第2页 / 共123页
指令系统及汇编程序设计 (2)培训资料_第3页
第3页 / 共123页
指令系统及汇编程序设计 (2)培训资料_第4页
第4页 / 共123页
指令系统及汇编程序设计 (2)培训资料_第5页
第5页 / 共123页
点击查看更多>>
资源描述

《指令系统及汇编程序设计 (2)培训资料》由会员分享,可在线阅读,更多相关《指令系统及汇编程序设计 (2)培训资料(123页珍藏版)》请在金锄头文库上搜索。

1、2.7 MCS-51单片机指令系统,2.7.1 MCS-51指令系统的分类、格式及一般说明 2.7.2 寻址方式 2.7.3 分类指令,2.7.1 MCS-51指令系统的分类、格式及一般说明,1 指令分类 2 指令格式 3 指令描述符号介绍,返回本节首页,1 指令分类,按指令功能,MCS-51指令系统分为数据传递与交换、算术运算、逻辑运算、程序转移、布尔处理操作、CPU控制等6类。 布尔处理操作类指令又称位操作指令。,返回本节,3 指令描述符号介绍,Rn当前选中的寄存器区中的8个工作寄存器R0R7(n=07)。 Ri当前选中的寄存器区中的2个工作寄存器R0、R1(i=0,1)。 direct8

2、位的内部数据存储器单元中的地址。 #data包含在指令中的8位常数。 #data16包含在指令中的16位常数。 addr1616位目的地址。 addr1111位目的地址。,rel8位带符号的偏移字节,简称偏移量。 DPTR数据指针,可用作16位地址寄存器。 bit内部RAM或专用寄存器中的直接寻址位。 A累加器。 B专用寄存器,用于乘法和除法指令中。 C进位标志或进位位,或布尔处理机中的累加器。,间址寄存器或基址寄存器的前缀,如Ri,DPTR。 / 位操作数的前缀,表示对该位操作数取反,如/bit。 片内RAM的直接地址或寄存器。 ()由寻址的单元中的内容。 箭头左边的内容被箭头右边的内容所代

3、替。,返回本节,2.7.2 寻址方式,1 立即寻址 2 直接寻址 3 寄存器寻址 4 寄存器间接寻址 5 变址寻址 6 相对寻址 7 位寻址,返回本节首页,立即寻址Immediate Addressing,指令中直接给出操作数的寻址方式。立即操作数用前面加有#号的8位或16位数来表示。 例如:MOVA,# 60H;A#60H MOVDPTR,# 3400H;DPTR#3400H MOV30H,# 40H;30H单元#40H 上述三条指令执行完后,累加器A中数据为立即数据60H,DPTR寄存器中数据为3400H,30H单元中数据为立即数40H。,返回本节,直接寻址 Direct Addressi

4、ng,指令中直接给出操作数地址的寻址方式,能进行直接寻址的存储空间有SFR寄存器和内部数据RAM。 例如:MOVPSW,# 20H; PSW#20H PSW为直接寻址寄存器的符号地址。 MOVA,30H;A30H内部RAM 单元中的内容 30H为直接给出的内部RAM的地址。,返回本节,寄存器寻址 Register Addressing,以通用寄存器的内容为操作数的寻址方式。通用寄存器指A、B 、DPTR以及R0R7 。 例如:CLR A;A0 INC DPTR;DPTRDPTR+1 ADDR5,# 20H;R5#20H+R5,返回本节,寄存器间接寻址 Register Indirect Add

5、ressing,以寄存器中内容为地址,以该地址中内容为操作数的寻址方式。间接寻址的存储器空间包括内部数据RAM和外部数据RAM。 能用于寄存器间接寻址的寄存器有R0,R1,DPTR,SP。其中R0、R1必须是工作寄存器组中的寄存器。SP仅用于堆栈操作。,例如:MOV R0,A ;内部RAM(R0)A其指令操作过程示意图如图2-15所示。 又如:MOVX A,R1;A外部RAM(P2R1)其指令操作过程示意图如图2-16所示。 再如:MOVX DPTR,A;外部RAM(DPTR)A 其指令操作过程示意图如图2-17所示。,图2-15 MOV R0,A间接寻址示意,图2-16 MOVX A,R1间

6、接寻址示意图,图2-17 MOVX DPTR,A间接寻址示意图,返回本节,5 变址寻址(基址+变址),变址寻址只能对程序存储器中数据进行操作。由于程序存储器是只读的,因此变址寻址只有读操作而无写操作,在指令符号上采用MOVC的形式(如图2-18所示)。 例如:MOVC A, A+DPTR;A(A+DPTR) 又如,MOVC A, A+PC ;A(A+PC) 这条指令与上条指令不同的是,基址寄存器是PC。,Base-Register-plus-Index-Register-Indirect Addressing,如:MOVC A,A+DPTR 设DPTR=2000H,A=E0H,20E0H,47

7、,指令代码,如:MOVC A,A+PC 设A=E0H,2121H,45,当前PC,指令代码,图2-18 变址寻址示意图,返回本节,相对寻址,以当前程序计数器PC的内容为基础,加上指令给出的一字节补码数(偏移量)形成新的PC值的寻址方式。 相对寻址用于修改PC值,主要用于实现程序的分支转移。 例如,SJMP 08H ;PCPC+2+08H 指令操作示意图如图2-19所示。,Relative Addressing,如:JC 23,1025H,23H,1002H,指令代码,当前PC,图2-19 相对寻址示意图,返回本节,7 位寻址,位寻址只能对有位地址的单元作位寻址操作。 位寻址其实是一种直接寻址方

8、式,不过其地址是位地址。 例如:SETB 10H ;将10H位置1 若22H单元中存放着数据40H,22H单元的D0位的位地址为10H, 执行上述指令后(22H)=41H。 又如:MOV 32H,C ;32H进位位C ORL C ,32H ;CC32H,返回本节,Bit Addressing,2.7.3 分类指令,1 数据传送类指令 2 算术运算类指令 3 逻辑运算与循环类指令 4 程序转移类指令 5 调用子程序及返回指令 6 位操作指令,返回本节首页,1 数据传送类指令(29条) Data Transfer Instruction,MCS-51 助记符: 助记符: MOV、MOVX、MOVC

9、 XCH、XCHD、SWAP PUSH、POP 源操作数寻址方式(5种): 立即寻址、直接寻址、寄存器寻址、 寄存器间接寻址、变址寻址。 目的操作数寻址方式(3种): 直接寻址、寄存器寻址、寄存器间接寻址 除了目的操作数为ACC的指令影响奇偶标志P外,一般不影响 标志位。,图2-20 MCS-51单片机片内数据传送图,1 以累加器为目的操作数的指令(4条),MOV A,Rn ;RnA MOV A,direct;(direct)A MOV A,Ri ;(Ri)A MOV A,#data;dataA 将源操作数指定内容送到A中。,2 以寄存器Rn为目的操作数的指令 (3条),MOV Rn,A MO

10、V Rn,direct MOV Rn,#data 这组指令功能是把源操作数指定的内容送入当前工作寄存器,源操作数不变。,3 以直接地址为目的操作数的指令(5条),MOV direct,A MOV direct,Rn MOV direct1,direct2 MOV direct,Ri MOV direct,#data 这组指令功能是把源操作数指定的内容送入由直接地址指出的片内存储单元。 例: MOV 20H,A MOV 20H,R1 MOV 20H,30H MOV 20H,R1 MOV 0A0H,#34H MOV P2,#34H,4 以间接地址为目的操作数的指令(3条),MOV Ri,A ;A

11、(Ri) MOV Ri,direct;(direct) (Ri) MOV Ri,#data; data (Ri) 功能:把源操作数指定的内容送入以R0或R1为地址 指针的片内存储单元中。 例:MOV R0,A MOV R1,20H MOV R0,#34H,5 十六位数的传递指令(1条),MOV DPTR,#data16 8051是一种8位机,这是唯一的一条16位立即数传递指令。功能:将一个16位的立即数送入DPTR中去。其中高8位送入DPH,低8位送入DPL。 例:MOV DPTR,#1234H 执行完了之后DPH中的值为12H,DPL中的值为34H。 如果我们分别向DPH,DPL送数,则结果

12、也一样。 如下面两条指令: MOV DPH,#35H MOV DPL,#12H。 则就相当于执行了 MOV DPTR,#3512H。,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单元的数据)送入另一

13、个单元(设为0200H单元),也必须先将0100H单元中的内容读入A,然后再送到0200H单元中去。,2.要读或写外部的RAM,当然也必须要知道RAM的地址,在后两条指令中,地址是被直接放在DPTR中的。而前两条指令,由于Ri(即R0或R1)只是8位的寄存器,所以只提供低8位地址。高8位地址由P2口来提供。 3.使用时应先将要读或写的地址送入DPTR或Ri中,然后再用读写命令。 例:将外部RAM中100H单元中的内容送入外部RAM中200H单元中。 MOV DPTR,#0100H MOVX A,DPTR MOV DPTR,#0200H MOVX DPTR,A,7 读程序存储器指令(2条),MO

14、VC A,A+DPTR MOVC A,A+PC 本组指令是将ROM中的数送入A中。本组指令也被称为查表指令,常用此指令来查一个已做好在ROM中的表格 说明:查找到的结果被放在A中,因此,本条指令执行前后,A 中的值不一定相同。 例:有一个数在R0中,要求用查表的方法确定它的平方值(此 数的取值范围是0-5) MOV DPTR,#100H MOV A,R0 MOVC A,A+DPTR . ORG 0100H DB 0,1,4,9,16,25,如果R0中的值为2,则最终地址为100H+2为102H,到102H单元中找到的是4。,8 堆栈操作(2条),PUSH direct ;SPSP+1,(SP)

15、(direct) POP direct ; (direct) (SP), SPSP-1 第一条为压入指令,就是将direct中的内容送入堆栈中,第二条为弹出指令,就是将堆栈中的内容送回到direct中。例: MOV SP,#10H MOV 40H,#50H PUSH 40H POP 30H 则执行第一条PUSH 40H指令是这样的:将SP中的值加1,即变为11H,然后将40H中的值送到11H单元中,因此执行完本条指令后,内存11H单元的值就是50H,同样,执行POP 30H时,是将11H中的值送入到30H单元中,即执行完本条指令后,30H单元中的值变为50H。,指令PUSH操作示意图,指令PO

16、P操作示意图,9 交换指令(5条),XCH A,Rn ;ARn XCH A, direct ;A(direct) XCH A, Ri ;A(Ri) XCHD A, Ri ;A.3A.0(Ri).3(Ri).0 SWAP A ;A.3A.0A.7A.4 例: 已知A中的内容为34H MOV R6, #29H XCH A, R6 SWAP A XCH A, R6 XCHD A, R0,;R6=29H ;A=29H,R6=34H ;A=92H ;A=34H,R6=92H ;A=36H,(R0)=54H (设原来R0 ;指向的单元的内容为56H),(40H)= H 50H = H A= H (41H)= H 51H= H R0= H,课堂练习,1.设:内部RAM中,(40H)=50H,(41H)=60H,(50H)=30H, (51H)=70H,执行下列片段后:,MOV

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号