基于汇编与C语言的单片机原理及应用教学课件 程启明 第3章 MCS 51单片机的指令和汇编语言程序设计——指令系统 赵永熹制作 1

上传人:w****i 文档编号:94556029 上传时间:2019-08-08 格式:PPT 页数:89 大小:1.19MB
返回 下载 相关 举报
基于汇编与C语言的单片机原理及应用教学课件 程启明 第3章 MCS 51单片机的指令和汇编语言程序设计——指令系统 赵永熹制作 1_第1页
第1页 / 共89页
基于汇编与C语言的单片机原理及应用教学课件 程启明 第3章 MCS 51单片机的指令和汇编语言程序设计——指令系统 赵永熹制作 1_第2页
第2页 / 共89页
基于汇编与C语言的单片机原理及应用教学课件 程启明 第3章 MCS 51单片机的指令和汇编语言程序设计——指令系统 赵永熹制作 1_第3页
第3页 / 共89页
基于汇编与C语言的单片机原理及应用教学课件 程启明 第3章 MCS 51单片机的指令和汇编语言程序设计——指令系统 赵永熹制作 1_第4页
第4页 / 共89页
基于汇编与C语言的单片机原理及应用教学课件 程启明 第3章 MCS 51单片机的指令和汇编语言程序设计——指令系统 赵永熹制作 1_第5页
第5页 / 共89页
点击查看更多>>
资源描述

《基于汇编与C语言的单片机原理及应用教学课件 程启明 第3章 MCS 51单片机的指令和汇编语言程序设计——指令系统 赵永熹制作 1》由会员分享,可在线阅读,更多相关《基于汇编与C语言的单片机原理及应用教学课件 程启明 第3章 MCS 51单片机的指令和汇编语言程序设计——指令系统 赵永熹制作 1(89页珍藏版)》请在金锄头文库上搜索。

1、MCS-51单片机的指令和汇编语言程序设计,指令系统,本章学习目标,MCS-51单片机的指令格式及寻址方式 汇编语言的指令类型 伪指令的使用 难点在于控制转移指令和位操作指令的理解及各种指令的灵活应用,3.1 MCS-51单片机的指令系统,指令格式 MCS-51单片机指令格式采用了单地址指令格式。一条汇编语句是由标号、操作码、目的操作数、源操作数和注释等5部分组成的,其中方括号中的部分是可以选择的。 指令的具体格式为: 标号:操作码 目的操作数,源操作数;注释 例如: HY1:MOV R3 , #08H ;执行数据传送操作,指令符号,A:累加器,用于运算及存放数据。 B:专用寄存器,用于MUL

2、和DIV指令中,存放第二操作数、乘积高位字节。 CY:进位标志位,或布尔处理器中的累加器。 bit:内部RAM或专用寄存器中的直接寻址位。 /bit:位地址单元内容取反。 DPTR:16位数据指针,也可作为16位地址寄存器。 Rn:工作寄存器中的寄存器Rn、R1R7之一 Ri:工作寄存器中的寄存器R0或R1 #data:8位立即数 #data16:16位立即数,direct:片内RAM或SFR的地址(8位)。 :间接寻址寄存器。 Bit:片内RAM或SFR的位地址。 addr11:11位目的地址。 addr16:16位目的地址。 rel: 补码形式的8位地址偏移量。 偏移范围为-128127。

3、 /:位操作指令中,该位求反后参与操作,不影响该位。 X:片内RAM的直接地址或寄存器。 (X):相应地址单元中的内容。 :箭头左边的内容送入箭头右边的单元内。,功能,数据传送类:29条 算术运算类:24条 逻辑运算类:24条 控制转移类:17条 位操作类: 17条,指令分类,MCS-51单片机共有111条指令,可以实现51种基本操作。 1.按指令功能分类,2按指令字节分类,单片机中的指令并不是固定的长度,对于不同的指令,指令的字节数不同。MCS-51单片机用机器语言表示的指令格式按字节划分,有一字节指令、两字节指令和三字节指令等三种。 (1)一字节指令中的8位二进制代码既包含操作码的信息,也

4、包含操作数的信息。 例如指令: INC A MOV A,Rn XCH A,Rn ADD A,Ri DEC Rn,(2)二字节指令中的第一个字节表示操作码,第二个字节表示操作数,操作数既可能是立即数,也可能是地址。其指令格式如右所示:,例如: ANL A,#90H ADD A,#06H DEC 30H MOV R2,#0F0H,(3)三字节指令中,第一字节表示操作码,另两个字节是操作数,其指令格式如右所示:,例如:ANL 30H,#66H MOV DPTR,#1000H LJMP 0300H CJNE A,20H,HL5,3按指令执行时间分类,MCS-51系列单片机按指令的机器周期数可以分为单周

5、期指令57条,双周期指令52条和四周期指令2条等。 (1)单周期指令的执行指令时间为一个机器周期。例如: XCH A,R1 ADD A,R1 CLR A MOV R3,#0F0H (2)双周期指令的执行指令时间为2个机器周期。例如: MOV Rn,30H DJNZ R3,LOOP JMP a+dptr (3)四周期指令的执行指令时间为4个机器周期。例如: DIV AB MUL AB,立即寻址(Immediate Addressing),操作数就包含在指令代码中,在操作码之后,称为立即数,用“”表示。 MCS-51 如:MOV P1, #80H MOV R7, #0F5H MOV DPTR,#1

6、245H,8086/8088 MOV AL,80H MOV AL,0F5H MOV BX,1245H,操作数存在程序存储器中,寻址方式,直接寻址(Direct Addressing) 直接使用数所在单元的地址找到了操作数,所以称 这种方法为直接寻址。 操作数在SFR、内部RAM、位地址空间。 如: MCS-51 MOV A,00H MOV C,60H MOV A,0F0H,8086/8088CPU MOV AL,2000H,寄存器寻址( Register Addressing),对选定的工作寄存器R0R7、累加器A、通用寄存器B、地址寄存器DPTR中的数进行操作。 例:MOV A,R0;将R0

7、工作寄存器中的数据送到累加器A中去。,提一个问题:我们知道,工作寄存器就是内存单元的一部分,如果我们选择工作寄存器组0,则R0就是RAM的00H单元,那么这样一来,MOV A,00H 和MOV A,R0不就没什么区别了吗?,MOV AL,BL (8086CPU的寄存器寻址方式),答案: 的确,这两条指令执行的结果是完全相同的,都是将00H单元中的内容送到A中去,但是执行的过程不同,执行第一条指令需要2个机器周期,而第二条则只需要1个机器周期,第一条指令变成最终的目标码要两个字节(E5H 00H),而第二条则只要一个字节(E8H)就可以了。,寄存器间接寻址 (Register Indirect

8、Addressing),把地址放在另外一个寄存器中,根据这个寄存器中的数值决定该到哪个单元中取数据。 R0,R1-8位地址,片内低128字节或片外64KB DPTR-16位,片外64KB MCS-51 如: MOV A,R0 MOVX A,R0 MOVX A,DPTR,8086/8088CPU MOV AL,BX MOV AX,SI,操作数在片内RAM中,操作数在片外RAM中,操作数在片外RAM中,将PC中的当前内容与指令第二字节给出的数相加,结果作为跳转指令的转移地址(转移目的地址)。 PC中的当前内容称为基地址(本指令后的字节地址) 指令第二字节给出的数据称为偏移量,1字节带符号数。 常用

9、于跳转指令。如:JC 23H ;若C=0,不跳转;C=1,跳转。,相对寻址(Relative Addressing),1025H,23H,1002H,指令代码,当前PC,以DPTR或PC为基址寄存器,累加器A为变址寄存器。把两者内容相加,结果作为操作数的地址。 常用于查表操作。 MCS-51 MOVC A, A+DPTR ;(A+DPTR) A MOVC A, A+PC ; PC+1 PC,(A+PC)A,变址寻址(基址+变址)(Base-Register-plus-Index-Register-Indirect Addressing),8086/8088CPU MOV AL,BX+SI MO

10、V AX,BP+DI,操作数在程序存储器中,20E0H,47,指令代码,如:MOVC A,A+PC 设A=E0H,2121H,45,当前PC,指令代码,对片内RAM的位寻址区和某些可位寻址的特殊功能寄存器进行位操作时的寻址方式。 如: SETB 3DH; 将27H.5位置1 CLR C ;Cy位清0 8086/8088CPU 无此寻址方式,位寻址(Bit Addressing),操作数在片内RAM位地址区或SFR某些位中,寻址方式涉及的存储器空间,指令系统,数据传送类指令(29条) (Data Transfer Instruction) MCS-51 助记符:MOV、MOVX、MOVC XCH

11、、XCHD、SWAP PUSH、POP 源操作数寻址方式(5种): 立即寻址、直接寻址、寄存器寻址、 寄存器间接寻址、变址寻址 目的操作数寻址方式(3种): 直接寻址、寄存器寻址、寄存器间接寻址 除了目的操作数为ACC的指令影响奇偶标志P外,一般不影响标志位。,(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 MOV Rn,direct MOV Rn,#dat

12、a 这组指令功能是把源操作数指定的内容送入当前工作寄存器,源操作数不变。,1内部数据传送指令MOV,(3)以寄存器间接地址为目的字节的传送指令(3条),MOV Ri,A ;A (Ri) MOV Ri,direct ;(direct) (Ri) MOV Ri,#data ; data (Ri) 功能:把源操作数指定的内容送入以R0或R1为地址 指针的片内存储单元中。 例: MOV R0,A MOV R1,20H MOV R0,#34H,(4) 以直接地址为目的操作数的指令(5条),MOV direct,A MOV direct,Rn MOV direct1,direct2 MOV direct,

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

14、果也一样。 如下面两条指令: MOV DPH,#35H MOV DPL,#12H。 则就相当于执行了 MOV DPTR,#3512H。,(6)查表指令(2条),MOVC A,A+DPTR ;A(A)+(DPTR) MOVC A,A+PC ;A(A)+(PC) 已知内存单元40H中有一个09范围内的数,用查表指令编出能查出该数立方值的程序。设立方表表头地址为0200H。程序及执行后的结果如下: MOV A,40H MOV DPTR,#LAB MOVC A,A+DPTR LAB:DB 0,1,8,27,64 若(40H)为2,查表得8并存于A中,2外部数据传送指令MOVX (4条),MOVX A,

15、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单元中去。,(2)要读或写外部的RAM,当然也必须要知道RAM的地址,在后两条指令中,地址是被直接放在DPTR

16、中的。而前两条指令,由于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,3堆栈操作指令(PUSH、POP) (2条),PUSH direct ;SPSP+1,(SP)(direct) POP direct ; (direct) (SP), SPSP-1 第一条为压入指令,就是将direct中的内容送入堆栈中,第二条为弹出指令,就是将堆栈中的内容送回到direct中。例: MOV

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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

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