单片机胡汉才班第3章幻灯片

上传人:F****n 文档编号:88139657 上传时间:2019-04-19 格式:PPT 页数:71 大小:3.40MB
返回 下载 相关 举报
单片机胡汉才班第3章幻灯片_第1页
第1页 / 共71页
单片机胡汉才班第3章幻灯片_第2页
第2页 / 共71页
单片机胡汉才班第3章幻灯片_第3页
第3页 / 共71页
单片机胡汉才班第3章幻灯片_第4页
第4页 / 共71页
单片机胡汉才班第3章幻灯片_第5页
第5页 / 共71页
点击查看更多>>
资源描述

《单片机胡汉才班第3章幻灯片》由会员分享,可在线阅读,更多相关《单片机胡汉才班第3章幻灯片(71页珍藏版)》请在金锄头文库上搜索。

1、第3章 MCS-51单片机指令系统 和汇编语言程序示例,3.1 MCS-51单片机指令系统概述 3.2 寻址方式 3.3 数据传送类指令 3.4 算术运算类指令 3.5 逻辑运算及移位指令 3.6 控制转移类指令 3.7 子程序调用与返回指令 3.8 位操作类指令,3.1 MCS-51单片机指令系统概述,3.1.1 指令、指令系统的概念 指令-是CPU按照人们的意图来完成某种操作的命令,它以英文名称或缩写形式作为助记符。 汇编语言指令-用助记符、符号地址、标号等表示的书写程序的语言。 掌握汇编语言指令是程序设计的基础。,指令系统概述 简明、易掌握、效率较高的指令系统,复杂指令集。 按所占字节分

2、,分三种: (1)单字节指令49条; (2)双字节指令45条; (3)三字节指令17条。 按执行时间来分,分三种: (1)1个机器周期(12个时钟振荡周期)的指令64条; (2)2个机器周期指令45条; (3)4个机器周期乘、除指令。,3.1.2 MCS-51单片机指令系统及其指令格式 指令系统中的指令描述了不同的操作,不同操作对应不同的指令。 每条指令通常由操作码和操作数两部分组成。 操作码表示计算机执行该指令将进行何种操作,操作数表示参加操作的数的本身或操作数所在的地址。 MCS-51单片机的指令有无操作数、单操作数、双操作数三种情况。汇编语言指令有如下的格式: 标号: 操作码助记符 目的

3、操作数,源操作数 ;注释,一些符号的约定意义说明: (1) Ri和Rn:表示当前工作寄存器区中的工作寄存器,i取0或1,表示R0或R1。n取07,表示R0R7。 (2) #data:表示包含在指令中的8位立即数。 (3) #data16:表示包含在指令中的16位立即数。 (4) rel:以补码形式表示的8位相对偏移量,范围为-128127,主要用在相对寻址的指令中。,(5) addr16和addr11:分别表示16位直接地址和11位直接地址。 (6) direct:表示直接寻址的地址。 (7) bit:表示可位寻址的直接位地址。 (8) (X):表示X单元中的内容。 (9) (X):表示以X单

4、元的内容为地址的存储器单元内容,即(X)作地址,该地址单元的内容用(X)表示。 (10) / 和符号:“/”表示对该位操作数取反,但不影响该位的原值。“”表示操作流程,将箭尾一方的内容送入箭头所指另一方的单元中去。,3.2.1 寄存器寻址,寻址方式:寻找(源)操作数或指令转移地址的方式 80C51单片机有7种寻址方式,3.2 80C51的寻址方式,操作数在寄存器中 寻址空间: R0R7、A、B(AB形式) 和DPTR,特点: 传送和执行速度快,【例】若(R0)=30H,,执行MOV A,R0后,(A)=30H,3.2.2 直接寻址,操作码后字节存放的是操作数的地址 寻址空间: 片内RAM低12

5、8字节 SFR(符号形式),另一类直接寻址是转移目标地址的寻址。如:LJMP ADDR16,【例】若(50H)=3AH ,,执行MOV A,50H后,(A)=3AH,3.2.3 寄存器间接寻址,寄存器中的内容是操作数的地址 寻址空间: 片内RAM(Ri、SP) 片外RAM(Ri、DPTR),【例】若(R0)=30H,(30H)=5AH,执行MOV A,R0后,(A)=5AH,片内:MOV 片外:MOVX,3.2.4 立即寻址,操作数在指令编码中 寻址空间: ROM,对于MOV DPTR,#2100H指令,立即数高8位“21H”装入DPH,【例】执行MOV A,#50H,结果:(A)=50H,3

6、.2.5 变址寻址,操作数地址:基地址+偏移量 寻址空间: ROM,变址寻址还用于跳转指令,如JMP A+DPTR,【例】(A)0FH,(DPTR)=2400H,执行MOVC A,A+DPTR”后,结果:(A)=88H,3.2.6 相对寻址,用于跳转指令,实现程序分支,Rel常用符号地址表示,离源地址不要超过(128127 ),【例】若rel为75H,PSW.7为1,JC rel存于1000H开始的单元。,执行JC rel指令后,程序将跳转到1077H单元取指令并执行。,3.2.7 位寻址,寻址位数据 寻址空间 片内RAM位空间 SFR位空间,【例】位地址00H内容为1,MOV C,00H执行

7、后,位地址PSW.7的内容为1。,位寻址方式实质属于位的直接寻址。,7种寻址方式已介绍完毕。 问题:当一条指令给定后,如何来确定该指令的寻址方式?例如: MOV A,#40H,属于立即数寻址还是寄存器寻址? 要看以哪个操作数作为参照系。 操作数分为源操作数和目的操作数。对于源操作数“#40H”来说,是“立即数寻址”方式,但对目的操作数“A”来说,是属于“寄存器寻址”方式。 一般而言,寻址方式指的是源操作数,所以此例为立即数寻址方式。 对指令系统7种寻址方式总结,概括见表3-1。,14,15,表3-1 7种寻址方式及其寻址空间,3.3 数据传送类指令(29条),一般不影响标志寄存器PSW的状态。

8、,传送类指令有两大类 一般传送( MOV ) 特殊传送,如: MOVC MOVX PUSH、POP XCH、XCHD SWAP,3.3.1 一般传送指令,16位传送(仅1条),MOV DPTR,#data16; DPTR data16,例:执行指令 MOV DPTR,#1234H 后 (DPH)=12H,(DPL)=34H。,8位传送,通用格式: MOV , ;,以A为目的,【例】若(R1)= 20H,(20H)= 55H。执行指令 MOV A,R1 后,(A)= 55H。,以Rn为目的,【例】执行指令 MOV R6,#50H 后,(R6)= 50H,以direct为目的,【例】若(R1)=5

9、0H,(50H)=18H,执行指令 MOV 40H,R1 后,(40H)=18H,以Ri为目的,【例】若(R1)=30H,(A)=20H,执行指令 MOV R1,A 后,(30H)=20H。,3.3.2 特殊传送指令,以DPTR内容为基址,读ROM中常数表项指令MOVC,ROM中可以存放程序代码,还经常存放常数表,MOVC A,A+DPTR;A (A)+(DPTR),以PC内容为基址,MOVC A,A+PC ;A (A)+(PC),常数表存放约束小,称为远程查表指令。占用DPTR,常数表存放约束大,称为近程查表指令。不占用DPTR,读片外RAM,读片外RAM及接口单元数据的指令MOVX,片外R

10、AM中经常存放数据采集与处理的中间数据,MOVX A,DPTR ;A (DPTR) MOVX A,Ri ;A (Ri),写片外RAM,MOVX DPTR,A ;(DPTR)A MOVX Ri,A ;(Ri)A,注意:用Ri寻址时,高8位地址由P2口提供,入栈指令PUSH,堆栈操作指令PUSH和POP,堆栈是一片存储区,遵循“后进先出”原则,栈顶由SP指示。 80C51的堆栈设在片内RAM低端的128个单元,向上生长。,PUSH direct ;SP(SP)1,(SP)(direct),出栈指令POP,POP direct ;(direct)(SP),SP (SP)1,注:堆栈用于子程序调用时保

11、护返回地址,或者用于保护子程序调用之前的某些重要数据(即保护现场),还可以用于数据交换。,利用堆栈完成40H与50H单元内容的交换的示例,MOV SP,#6FH;将堆栈设在70H以上RAM空间 PUSH 40H ;将40H单元的“23H”入栈,之后(SP)=70H PUSH 50H ;将50H单元的“45H”入栈,之后(SP)=71H POP 40H ;将SP指向的71H单元的内容弹到40H单元,之后(SP)=70H POP 50H ;将SP指向的70H单元的内容弹到50H单元,之后(SP)=6FH,(a)初始状态 (b)2条PUSH指令执行后 (c)2条POP指令执行后,字节交换指令XCH,

12、数据交换指令XCH、XCHD和SWAP,数据交换属于同时进行的双向传送,【例】若(R0)=80H,(A)=20H。 执行指令 XCH A,R0 后, (A)=80H,(R0)=20H。,半字节交换指令XCHD,【例】若(R0)30H,(30H)67H, (A)20H。执行指令 XCHD A,R0 指令后,(A)27H,(30H)60H。,XCHD是间址操作数的低半字节与A的低半字节互换。 SWAP是累加器的高低4位互换,【例】若(A)30H,执行指令SWAP A后,(A)03H 。,3.4 算术运算类指令,3.4.1 加、减法指令,图3.4 加减法指令形式结构图 (a) 加减法指令关系图;(b

13、) 加1、减1指令关系图,表3.2 加减法指令表,例6 设(A) = 49H,(R0)=6BH,分析执行指令ADD A,R0后的结果。 结果为:(A)=B4H,OV=1,CY=0,AC=1,P=0。 例7 设(A)=C3H,数据指针低位(DPL)=ABH,CY=1,分析执行指令ADDC A,DPL后的结果。 结果为:(A)=6FH,CY=1,AC=0,P=0。 例8 设 (A) = 52H,(R0)=B4H,分析执行如下指令后的结果 CLR C ;是位操作指令,是进位位清零 SUBB A,R0 结果为:(A)=9EH,CY=1,AC=1,OV=1,P=1。,例9 设 (R0) = 7EH,(7

14、EH)=FFH,(7FH)=38H,(DPTR)=10FEH,分析逐条执行下列指令后各单元的内容。 INC R0 ;使7EH单元内容由FFH变为00H INC R0 ;使R0的内容由7EH变为7FH INC R0 ;使7FH单元内容由38H变为39H INC DPTR ;使DPL为FFH,DPH不变 INC DPTR ;使DPL为00H,DPH为11H INC DPTR ;使DPL为01H,DPH不变,3.4.2 十进制调整指令,若AC=1,CY=1同时发生,或者高4位虽等于9但低4位修正后有进位,则A应加66H修正。 十进制调整指令是一条对二-十进制的加法进行调整的指令。它是一条单字节指令,

15、机器码为D4H。两个压缩BCD码按二进制相加,必须在加法指令ADD、ADDC后,经过本指令调整后才能得到正确的压缩BCD码和数,实现十进制的加法运算。,例10 对BCD码加法65 + 58BDH,进行十进制调整。 参考程序如下: MOV A,#65H ;(A)65 ADD A,#58H ;(A)(A)+58 DA A ;十进制调整,使用时应注意:DA指令不能对减法进行十进制调整。做减法运算时,可采用十进制补码相加,然后用 DA A指令进行调整。例如 70 - 20 = 70 + 20补 = 70 +(100 - 20)= 70 + 80 = 1 50 机内十进制补码可采用:x补 = 9AH -x。,例11 设片内RAM 30H,31H单元中分别存放着两位BCD码表示的被减数和减数,两数相减的差仍以BCD码的形式存放在32H单元中。可用下面的程序实现: CLR C MOV A,#9AH SUBB A,31H ;求减数的十进制补码 ADD A,30H ;作十进制补码加法 DA A ;进行BCD调整 MOV 32H,A ;将BCD码的差送存32H单元,3.4.3 乘、除法指令,MUL AB;,(B)(A)(B)158(A)(A)(B)70 CY0,机器码:A4H,乘法指令的功能是把累加器A和寄存器B中的两个8位无符号数相乘,将乘积16位数中的低8位存放在A中,高8位存放在B中。若乘积大

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

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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