学习单片机的指令系统

上传人:mg****85 文档编号:50685484 上传时间:2018-08-09 格式:PPT 页数:63 大小:359KB
返回 下载 相关 举报
学习单片机的指令系统_第1页
第1页 / 共63页
学习单片机的指令系统_第2页
第2页 / 共63页
学习单片机的指令系统_第3页
第3页 / 共63页
学习单片机的指令系统_第4页
第4页 / 共63页
学习单片机的指令系统_第5页
第5页 / 共63页
点击查看更多>>
资源描述

《学习单片机的指令系统》由会员分享,可在线阅读,更多相关《学习单片机的指令系统(63页珍藏版)》请在金锄头文库上搜索。

1、第2章 单片机的指令系统2.1 指令系统概述n单片机所能执行的指令的集合称为指令系统 。 n以助记符、符号地址、标号等书写程序的语 言称为汇编语言。 2.1.1 指令分类n (1) 按功能分n(2) 按字长分n(3) 按执行时间分2.1.2 指令格式标号:操作码 目的操作数,源操作数;注释 2.1.3 指令字长和指令周期 指令周期是指执行一条指令所需要的时间。 2.1.4 符号约定n #data:8位立即数,取值在00H 0FFH之间。n #data16:16位立即数,取值在0000H 0FFFFH之间。n Rn:工作寄存器,n=07,即工作寄 存器组中的一个工作寄存器。n Ri:用于寄存器间

2、接寻址的工作寄存器 ,i=0或1,即工作寄存器R0和R1。n direct:8位直接地址,片内RAM地址 00H0FFH。n addr11:11位目的地址。n addr16:16位目的地址。n bit:位地址。n DPTR:双数据指针寄存器n Pi:MCS-51单片机的I/O口,i=03。n :寄存器间接寻址前缀。n rel:8位带符号地址偏移量。n $:当前指令的地址。n (X):片内RAM单元X中的内容。n (X):X中的内容所指向单元的内容。n :左边的内容被右边的内容所取代。2.2 寻址方式2.2.1 直接寻址n直接寻址:指令中直接给出操作数存储 地址的寻址方式。n1. 寻址范围。 (

3、1)片内RAM的低128单元。 (2)特殊功能寄存器 SFR。 n2. 使用注意事项 寻址特殊功能寄存器 SFR 时,可以用直 接地址,也可以用寄存器名。 INC A ;A内容加1,寄存器寻址方式 INC ACC ;直接寻址方式 INC 0E0H ;直接寻址方式2.2.2 立即寻址n立即寻址:在指令中直接给出操作数的寻址方 式。 例如:将十进制数200传送到累加器A中 。 MOV A,#0C8H MOV A,#200 MOV A,#11001000B2.2.3 寄存器寻址 寄存器寻址:操作数存放于寄存器中的 寻址方式。 可用于寄存器寻址的寄存器有: (1)四个工作寄存器组中的工作寄存 器 R0

4、R7,共32个工作寄存器。 (2)特殊功能寄存器,如 A、B、DPTR 、Pi等。 2.2.4 寄存器间接寻址 寄存器间接寻址:操作数的地址存放在 寄存器中的寻址方式。 1. 寻址范围 (1)片内RAM 256B地址单元 。 (2)对片外RAM 64KB地址单元。 例如:将片内RAM 55H单元的数据50H 传送到累加器A中。指令如下: MOV R0,#55H MOV A, R0 ;执行结果(A)=50H例如:将片外RAM 0500H单元的数据50H 传送到累加器A中。指令如下: MOV DPTR,#0500H MOVX A,DPTR2. 使用注意事项 (1)为区别寄存器寻址方式,作为寄存 器

5、间接寻址的寄存器前面加 。 (2)寄存器间接寻址方式不能用于对特 殊功能寄存器SFR的寻址。 例如:MOV R0,#0F0H;MOV A, R0 (3)堆栈操作指令也是间接寻址方式,它 以堆栈指针SP 作为间接寻址寄存器。2.2.5 变址寻址 变址寻址:以DPTR或PC中的数据为基本 地址,以A中的数据为地址偏移量,基地 址与地址偏移量之和作为被寻址数据地址 的寻址方式。 查表操作指令为: MOVC A,A+PC MOVC A,A+DPTR例如:将程序存储器050AH单元中的常数 50H送到累加器A中。指令如下: MOV A,#0AH MOV DPTR,#0500H MOVC A, A +DP

6、TR几点说明: (1)变址寻址方式只能对程序存储器进 行寻址,因此只能用于读取数据,而不能 用于存放数据,它主要用于查表操作。 (2)变址寻址指令只有3条: MOVC A, A +PC MOVC A, A +DPTR JMP A +DPTR2.2.6 相对寻址 相对寻址:在执行程序的过程中,CPU 寻找相对于当前程序计数器PC值的下一 条指令地址的寻址方式。例如:当程序状态字寄存器PSW的最高位时, 程序转移到标号为LOOP的语句执行。 ORG 0000H SJMP MAIN ORG 0030H MAIN:SETB CJC LOOP LOOP:MOV A,#30H2.2.7 位寻址 位寻址:针

7、对可位地址的片内RAM空间和可 位寻址的特殊功能寄存器进行寻址的方式。 (1)内部 RAM 的位寻址区,共16个单元的128 位,单元地址为20H7FH,位地址的表示方法 可以用直接位地址或单元地址加位的表示方法 。 例如:将2FH单元的最高位的值传送到PSW.7 。指令如下: MOV C,7FH MOV C,2FH.7(2)特殊功能寄存器SFR中可位寻址的寄存器共 11个,其位地址在指令中有4 种表达方式。 例如:对程序状态字PSW寄存器辅助进位位AC 进行操作 直接使用位地址:MOV C,0D6H 位名称表示法:MOV C, AC 单元地址加位的表示法:MOV C,0D0H.6 专用寄存器

8、符号加位的表示法: MOV C, PSW .62.3 数据传送类指令2.3.1 内部数据传送指令 MOV , ;注释 (1)立即寻址数据传送指令 指令功能:把源操作数送指定单元或寄存 器,源操作数为立即数。 MOV A, #data MOV Rn, #data MOV Ri, #data MOV direct, #data(2)片内RAM单元与累加器A间传送数据指 令MOV A,RnMOV Rn,AMOV A, Ri MOV Ri, AMOV A,direct MOV direct,A(3)片内RAM单元间的数据传送指令 MOV direct, Rn MOV Rn, direct MOV di

9、rect, Ri MOV Ri, direct MOV direct2, direct1例2-1:将P1口读得的数据传送给P2口。 指令如下: 直接寻址: MOV 0A0H,90H 通过累加器A: MOV A,P1 MOV P2,A 直接传送: MOV P2,P1例如:将R0中的数传给R7。指令如下: MOV A,R0 MOV R7,A (4)十六位数据传送指令 MOV DPTR,#data16 例2-2:将数据1000H传送到数据指针DPTR 中。指令如下: MOV DPTR,#1000H例2-3:设内部 RAM 中(30H)=40H, (40H)=10H,P1口作输入口,(P1) =0CA

10、H,程序如下: MOV R0, #30H MOV A, R0 MOV R1, A MOV B, R1 MOV R1,P1 MOV P2, P1 执行后的结果是什么? 2.3.2 堆栈操作指令 PUSH direct ;SP(SP)+1,(SP)(direct) POP direct ;direct(SP),SP(SP)-1 例2-4:设(30H)=X,(40H)=Y,试用堆栈实现 30H 和 40H 单元中的数据交换。 MOV SP, #50H PUSH 40H PUSH 30H POP 40H POP 30H2.3.3 数据交换指令(1)整字节交换指令 XCH A, Rn ;(A)(Rn)

11、XCH A, Ri ;(A)(Ri) XCH A, direct ;(A)(direct) (2)低半字节交换指令 XCHD A, Ri ;(ACC.3ACC.0)(Ri.3)(Ri.0) (3)累加器高、低半字节交换指令 SWAP A ;(ACC.7ACC.4)(ACC.3ACC.0) 例2-6 已知片内50H单元中有一个十进 制数09,试编程把它变为相应的ASCII 码并存入50H单元。 2.3.4 外部数据传送指令存储器 (1)用数据指针DPTR作地址寄存器的寄存器 间接寻址指令 MOVX A, DPTR ;A(DPTR) MOVX DPTR, A ;(DPTR)(A) (2)用Ri作地

12、址寄存器的寄存器间接寻址指 令 MOVX A, Ri ;A(Ri) MOVX Ri, A ;(Ri)(A) 例2-6:若外部RAM中,(20FFH)=30H, (2100H)=15H。执行下列指令后A中的 内容是多少? MOV DPTR, #20FFH MOV A,DPTR INC DPTR MOV A,DPTR例2-7:把片外RAM的70H单元中的一个数 X,送到片外RAM的1010H单元。 2.3.5 查表操作指令 MOVC A,A +DPTR ; A(A) +(DPTR) MOVC A, A +PC ; A(A)+(PC)例2-8:已知累加器A中有一个09范围内 的数,用以上查表指令编出

13、能查出该数平 方值的程序。设平方表表头地址为TABLE 。 (1)采用DPTR作为基址寄存器 MOV DPTR, #TABEL MOVC A, A +DPTR TABLE:DB 0, 1, 4, 9,16 DB 25,36,49,64,81 (2)采用PC作为基址寄存器 ORG 1FFBH 1FFBH ADD A,#data ;修正量 1FFDH MOVC A,A +PC ;查表 1FFEH SJMP $ 2000H DB 0 2001H DB 1 2002H DB 4 2009H DB 812.4 算术运算和逻辑指令2.4.1 算术运算指令1. 加法指令 (1)不带进位的加法指令 ADD A

14、, Rn ADD A, direct ADD A, Ri ADD A, #data 例2-9:试分析8051执行如下指令后, 累加器 A 和 PSW 各标志位的变化状况。 MOV A, #0CFH ADD A, #0A5H(2)带进位加法指令 带进位加法运算指令常用于多字节加法运算。 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)+data+Cy 例2-10:设(A)=0AAH,(R0)=55H, Cy=1 执行如下指令后,PS

15、W的值是多少? ADDC A,R02. 带借位减法指令 SUBB A, Rn ;A(A)+(Rn)- Cy SUBB A, direct ;A(A)-(direct)-Cy SUBB A, Ri ;A(A)-(Ri)-Cy SUBB A, #data ;A(A)-data-Cy 3. 加1和减1指令 (1)加1指令 INC A ; A(A)+1 INC Rn ;Rn(Rn)+1 INC direct ;direct(direct)+1 INC Ri ;(Ri)(Ri)+1 INC DPTR ;DPTR(DPTR)+1(2)减1指令 减1指令与加1指令使用方法相同。 DEC A ; A(A)-1 DEC Rn ;Rn(Rn)-1 DEC Ri ;(Ri)(Ri)-1 DEC direct ;direct(direct)-14. 乘法指令MUL AB (1)进位标志位Cy总是清“0”。 (2)累加器A中的值影响奇偶标志位P。 (3)当积大于255(B中的内容不为0)时 ,OV=1,否则OV =0。 5. 除法指令 DIV AB (1)对Cy和P标志的影响与乘法时相同。 (2)当除数为0时,除法没有意义,OV =1 ,否则OV =0。 6. 二十进制调整指令 DA A 若AC =1或A3A09,则 A(A)+06H ; 若Cy =1或A7A49,则 A(A)+60H 。 2.4.2

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

当前位置:首页 > 生活休闲 > 科普知识

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