单片机指令系统及汇编语言程序设计ppt课件

上传人:资****亨 文档编号:145586592 上传时间:2020-09-21 格式:PPT 页数:103 大小:1.15MB
返回 下载 相关 举报
单片机指令系统及汇编语言程序设计ppt课件_第1页
第1页 / 共103页
单片机指令系统及汇编语言程序设计ppt课件_第2页
第2页 / 共103页
单片机指令系统及汇编语言程序设计ppt课件_第3页
第3页 / 共103页
单片机指令系统及汇编语言程序设计ppt课件_第4页
第4页 / 共103页
单片机指令系统及汇编语言程序设计ppt课件_第5页
第5页 / 共103页
点击查看更多>>
资源描述

《单片机指令系统及汇编语言程序设计ppt课件》由会员分享,可在线阅读,更多相关《单片机指令系统及汇编语言程序设计ppt课件(103页珍藏版)》请在金锄头文库上搜索。

1、MCS-51单片机指令系 统及汇编语言程序设计,内容提要:,3-1 汇编语言与指令系统简介,3-2 数据传送类指令,3-3 算术运算类指令,3-4 逻辑运算类指令,3-5 控制转移类指令,3-6 位操作类指令,3-7 汇编语言的汇编过程,3-8 汇编语言的程序设计及应用,高级语言:,3-1 汇编语言与指令系统简介,一、汇编语言程序设计的意义 什么是程序? 完成某项特定任务的指令的集合。 计算机按程序一条一条地依次执行指令,从而完成指定任务。 要让计算机完成各项任务,就应设计各种程序。,汇编语言:,机器语言:,程序设计语言:,用二进制代码表示指令和数据。,用助记符表示指令操作功能,用标号表示操作

2、对象。,独立于机器,面向过程,接近自然语言和数学表达式.,汇编语言程序的每一条语句都与计算机的某一条指令对应,所以必需熟悉指令系统。 指令 = 操作码 + 操作数 操作码表示了该指令所能执行的操作功能。 操作数表示参加操作的数的本身或操作数所在的地址。 MCS-51指令格式:,标号:,操作码助记符,第一操作数,,第二操作数,;注释,二、MCS-51系列单片机的指令系统 111条指令,共分五大类: 数据传送类;(29条) 算术运算类;(24条) 逻辑运算类;(24条) 控制转移类;(17条) 位操作类。(17条),指令中操作数的描述符号: Rn 工作寄存器R0 R7 Ri 间接寻址寄存器R0、R

3、1 Direct 直接地址,包括内部128B RAM单元地址、 26个SFR地址。 #data 8位常数 #data 16 16位常数 addr 16 16位目的地址 addr 11 11位目的地址 rel 8位带符号的偏移地址 DPTR 16位外部数据指针寄存器 bit 可直接位寻址的位,A 累加器 B 寄存器B C 进、借位标志位,或位累加器 间接寄存器或基址寄存器的前缀 / 指定位求反 (x) x中的内容 (x) x中的地址中的内容 当前指令存放的地址,三、寻址方式 寻找操作数存放单元的地址的方式,共6种方式。 1、立即数寻址 所要找的操作数是一二进制数或十进制数,出现在指令中,用“#”

4、作前缀 MOV A,#20H 2、寄存器寻址 操作数存放在工作寄存器R0 R7中,或寄存器B中。 MOV A,R2 3、直接寻址 指令中直接给出操作数的地址。 MOV A,30H MOV 30H,DPH,;书放在甲抽屉中 ;甲抽屉的钥匙放在乙抽屉中 ;取书,,A中,20H,MOV 30H,#20H,MOV R0,#30H,MOV A,R0,此例中,20H就当成是那本书;30H就当成是甲抽屉; R0就当成是乙抽屉,执行的结果就是将20H这个立即数装入A中。期间也经历了两次寻址,即间接寻址。,4、寄存器间接寻址 指令中寄存器的内容作为操作数存放的地址,在工作上间接寻址寄存器前用“”表示前缀。 例如

5、: “一本书放在甲抽屉中,上了锁;其开锁的钥匙放在乙抽屉中,乙抽屉也上了锁。问如何才能取到哪本书?” 这就是一个间接寻址的问题,要经过两次寻址才能找到哪本书。而寄存器间接寻址也是同样。 例如:,5、变址寻址 操作数地址 = 变地址 + 基地址 基地址寄存器 DPTR 或 PC 变址寄存器 A 该寻址方式常用于访问程序存储器,查表。 如 MOVC A,A + DPTR,6、相对寻址 把指令中给定的地址偏移量与本指令所在单元地址(PC内容)相加得到真正有效的操作数所存放的地址。 例如 “李同学20岁,张同学比李同学大3岁,问张同学多少岁?” 这就是一个相对寻年龄的问题,而相对寻址与此类似。 如 J

6、C 60H ;设(PC) = 2000H为基址,相对偏移量为60H; ; 则当C = 1时,转移的目的地址 = 2000H + 2 + 60H,3-2 数据传送类指令,一、内部RAM数据传送类 1、一般数据传送指令,回忆前述操作数描述符:A,direct,Rn,Ri,#data,DPTR等。 经排列组合可写出下列指令: MOV A,Rn ;(A) (Rn)以下类似。,MOV A,direct MOV A,Ri MOV A,#data MOV Rn,A MOV Rn,direct MOV Rn,#data,MOV direct,Rn MOV direct,direct MOV direct,Ri

7、 MOV direct,#data MOV Ri,A MOV Ri, direct MOV Ri,#data MOV DPTR,#data16 ;唯一的16位数据传送指令。 上述指令不影响任何标志位,但PSW的P位除外。,(direct),(A),MOV direct,A ;,上述指令不影响任何标志位,但PSW的P位除外。 注意:MOV Rn,Rn MOV Ri, Ri MOV Rn, Ri MOV #data, A 等等指令是非法指令。,哇!好容易出错啊!,(2) (direct),2、栈操作指令 PUSH direct POP direct 不影响任何标志位。 PUSH direct 指令

8、执行中,机器自动进行两步操作: (1) (SP)+ 1,例1、设(SP) = 09H,(DPTR)= 0123H,分析: 执行 PUSH DPL PUSH DPH 后,各单元中的内容。,(SP),(SP),POP direct 指令执行中,机器也自动进行两步操作: (1)(direct) (SP) (2)(SP) (SP) 1 例2、设(SP)= 0BH,(0BH)= 01H,(0AH)= 23H 执行 POP DPH POP DPL 后,各单元中的内容。,结论:1)PUSH 与 POP 操作过程刚好相反; 2)进、出栈规则: 先进后出,后进先出。应注意指令书写先后顺序; 3)可用于“保护现场

9、,恢复现场”。,3、字节交换指令 XCH A,Rn XCH A,direct 整字节交换 XCH A,Ri XCHD A,Ri SWAP A 半字节交换 不影响任何标志位。,二、 外部RAM数据传送 MOVX A,Ri MOVX A, DPTR MOVX Ri, A MOVX DPTR,A 执行过程中会使/WR、/RD有效。,例3、试编写一程序段,实现将外RAM 0FAH单元中的内容传送到外RAM 04FFH单元中。,解: MOV DPTR,#04FFH MOV R0,#0FAH MOVX A,R0 MOVX DPTR, A,三、 查表指令 与ROM之间的数据传送。 MOVC A,A + DP

10、TR MOVC A, A + PC 执行后会使/PSEN有效。 MOVC 含义是传送常数。 以DPTR 为基地址的指令,可在ROM 的64KB范围内查表; 而以PC为基地址的指令只能在(PC)+ 1为中心上、下256B范围内查表。,例4、设(A)= 一个BCD码常数,试用查表法获得其相应的ASCII码。,解法II: MOVC A,A+PC TAB:DB 30H,31H,32H,33H DB 34H,35H,36H,37H ,解法I: MOV DPTR,#TAB MOVC A,.A+DPTR TAB:DB 30H DB 31H DB 32H,33H,34H,35H ,3-3 算术运算类指令,包括

11、:加、 减、乘、除;加一、减一。 一、加法指令 ADD A,Rn ;(A) (A)+ (Rn)以下类同。 ADD A,direct ADD A,Ri ADD A,#data 无符号数相加时:若C = 1,说明有溢出(其值 255)。 带符号数相加时:若OV = D7cD6c = 1,说明有溢出。,ADDC A,Rn ;(A) (A)+(Rn)+(C) ; 以下类同。 ADDC A,direct ADDC A,Ri ADDC A,#data 上述四条指令多用于多字节数相加。,INC A ;(A) (A)+1 ,以下类同。 INC Rn INC direct INC Ri INC DPTR,INC

12、 A ;(A) (A)+1 ;以下类同。 INC Rn INC direct INC Ri INC DPTR,例1、设(R0)= 7FH; (7EH)= 40H 执行:INC R0 INC R0 INC R0 后,(R0)= 7FH;,(7EH)= 00H;,(7FH)= 41H,DA A ;二 十进制调整指令。 执行过程中,CPU能根据加法运算后,累加器中的值和PSW中的AC及C标志位的状况自动选择一个修正值(00H、06H、60H、66H)与原运算结果相加,进行二十进制调整。,选择修正值的规则:,例2、设(A) = 56H 为56的压缩的BCD码数,(R3)= 67H,(CY)=1 执行

13、ADDC A,R3 DA A 结果为:124 注意:1)DA指令只能跟在加法指令后面使用; 2)调整前参与运算的两数是BCD码数; 3)DA指令不能与减法指令配对使用,但可以实现对A中 压缩BCD数进行减一操作。 例3、设(A)=30H(压缩BCD码数),执行: ADD A,#99H DA A 后,便实现了30 1 = 29的操作。,例4、两个4位BCD码相加,一个存放在(31H)(30H);另一个存放在(33H)(32H);和数拟回存在(31H)(30H)中,试编程实现之。 解: MOV R0,#30H MOV R1,#32H MOV A,R0 ADD A,R1 DA A MOV R0,A,

14、INC R1 MOV A,R0 ADDC A,R1 DA A MOV R0,A,INC R0,二、减法指令 SUBB A,Rn ;(A) (A)(Rn)(C),以下类同。 SUBB A,direct SUBB A,Ri SUBB A,#data 注意:减法之前先清零C。 DEC A ;(A) (A)1,以下类同。 DEC Rn DEC Ri DEC direct,例5、设(R0)=7FH,在内RAM中,(7EH)=00H, (7FH)=40H 执行: DEC R0 DEC R0 DEC R0 结果为 :(R0)= 7EH,(7EH)=0FFH,(7FH)=3FH。,三、乘法和除法指令 乘法:

15、MUL AB ;(A)(B),积的低8位在A中,积的 ; 高8位在B中; C总为0。 除法: DIV AB ;(A)(B),商在A中,余数在B中。 ; 若(B)= 0 ,则结果不定,(OV)= 1, ;(C)= 0。,例6、试将A中的二进制数转换为3位BCD码,其中,百位数存放于31H单元,十位数和个位数压缩后存于30H单元中。,解: MOV B,#100 DIV AB MOV 31H,A MOV A,#10 XCH A,B DIV AB SWAP A ADD A,B MOV 30H,A,3-4 逻辑运算类指令,共分两大类:单字节逻辑操作,双字节逻辑操作,共24条。 一、单字节逻辑操作指令 CLR A ;(A) 0 CPL A A中8位按位求反。 循环左移、右移指令: RL A RLC A CY RR A

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

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

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