单片机应用技术第3章单片机的指令系统

上传人:w****i 文档编号:102580390 上传时间:2019-10-03 格式:PPT 页数:73 大小:933KB
返回 下载 相关 举报
单片机应用技术第3章单片机的指令系统_第1页
第1页 / 共73页
单片机应用技术第3章单片机的指令系统_第2页
第2页 / 共73页
单片机应用技术第3章单片机的指令系统_第3页
第3页 / 共73页
单片机应用技术第3章单片机的指令系统_第4页
第4页 / 共73页
单片机应用技术第3章单片机的指令系统_第5页
第5页 / 共73页
点击查看更多>>
资源描述

《单片机应用技术第3章单片机的指令系统》由会员分享,可在线阅读,更多相关《单片机应用技术第3章单片机的指令系统(73页珍藏版)》请在金锄头文库上搜索。

1、1,第3章 单片机的指令系统,2,主要内容,汇编语言指令格式 寻址方式 各种指令功能、格式及应用,3,先导案例,单片机的编程语言,(a)机器语言,(b)汇编语言 (c)C51语言,4,单片机的编程语言,机器语言(Machine Language)是指直接用机器码编写程序、能够为计算机直接执行的机器级语言。 汇编语言(Assembly Language)是指用指令助记符代替机器码的编程语言。 高级语言(High-Level Language)是在汇编语言的基础上用高级语言来编写程序 ,通常用C51编程。,5,汇编语言指令格式,标号: 操作码助记符 操作数1,操作数2, 操作数3 ;注释,例:,L

2、OOP:,ADD,A,#50H,,,; 执行加法,标号:表示该指令所在的地址。通常在程序分支、转移所需要的地方才加上一个标号。标号是以字母开始的,由1-8个字符(字母或数字)组成,标号不能使用汇编语言中已经定义过的符号名。标号以“:”结尾。特别应注意的是,在一个程序中不允许重复定义标号。,操作码:表示该语句要执行的操作内容。操作码用指令助记符表示。操作码后面至少留一个空格,使其与后面的操作数分隔。,操作数:表示操作码的操作对象,常用符号(如寄存器、标号)、常量(如立即数、地址值等)来表示。各操作数之间用逗号“,”分隔。指令的操作数可以有三个、两个、一个或没有。,注释:该字段可有可无,是用户为阅

3、读程序方便而加的解释说明。注释段以“;”开始,不影响程序的执行。,6,指令符号意义,7,3.2 寻址方式,寻址方式是指CPU寻找操作数或操作数地址的方法。 5l系列单片机共有7种寻址方式: 立即寻址 直接寻址 寄存器寻址 间接寻址 变址寻址 相对寻址 位寻址,8,立即寻址,例如: MOV A,#5CH ;机器码为74 5CH MOV DPTR,#1234H ;机器码为90 1234H,9,直接寻址,MOV A,40H ;机器码为E5 40H,用直接寻址方式可访问的存储空间,1、内部RAM低128单元,2、特殊功能寄存器SFR,MOV A,PSW = MOV A,0D0H,10,寄存器寻址,代表

4、寄存器号为4(100B),MOV A,R4 ;机器码为ECH(11101100B),11,寄存器间接寻址,寄存器间接寻址就是所要查找的操作数位于以寄存器的内容为地址的单元中。寄存器间接寻址使用的寄存器为Ri或DPTR,并在寄存器名前面加“”标志。和寄存器寻址相比,寄存器间接寻址时寄存器中存放的是操作数所在的地址,寄存器寻址时寄存器中存放的是操作数。,用寄存器间接寻址方式可访问的存储空间,1、内部RAM低128单元,2、外部RAM 64K,12,例如:设(R0)= 40H,(40H)= 55H,执行指令 MOV A,R0 ;机器码为E6H(11100110B),13,相对寻址,相对寻址用于访问程

5、序存储器,只出现在转移指令中,用于程序控制。,目的地址 = 转移指令下一条指令所在的首地址 + rel = 转移指令首地址 + 转移指令字节数 + rel,14,变址寻址,例如:设(A)=05H,(DPTR)= 1213H,(1218H)= 45H,执行指令 MOVC A,A+DPTR ;机器码是93H 该条指令的功能是把累加器A中的内容05H与数据指针DPTR中的内容1213H相加形成操作数地址1218H,将1218H中的内容送入A,执行过程如图所示。,15,位寻址,位寻址类似于直接寻址,由指令给出位地址,操作数位于位地址中。,1. 直接使用位地址 例:MOV C,00H 2. 单元地址加位

6、的表示法 例:MOV C,20H.0 3. 位名称表示法 例:MOV C,OV 4. 特殊功能寄存器名加位的表示法 例:MOV C,PSW.2,16,寻址空间,17,数据传送类指令,18,direct,Ri,Rn,#data,A,3.3.1 内部传送指令MOV,MOV 目的操作数,源操作数,功能:,把源操作数传送到目的操作数指定的存储单元之中,而不改变源操作数。,是复制不是搬家,源地址,目的地址,传送方向,19,传送指令,MOV A ,Rn #data direct Ri,MOV direct ,A Rn Ri #data direct,MOV Rn ,A direct #data,MOV R

7、i,A direct #data,8位数据传送指令:,16位数据传送指令:,MOV DPTR,#data16,20,MOV指令应用,例如:设(30H)=40H,(40H)=20H,(20H)=FFH,(P1)=55H。执行如下程序: MOV R0,#30H MOV A,R0 MOV R1,A MOV B,R1 MOV R1,P1 MOV 10H,#20H MOV 30H,10H 则程序执行后结果为?,21,数据交换指令,(1)字节交换指令XCH XCH A,Rn ;(A)(Rn) XCH A,direct ;(A)(direct) XCH A,Ri ;(A)(Ri) 这组指令的功能是将累加器A

8、的内容和源操作数互相交换。 例:设(A)=80H,(R7)=08H,(40H)=0F0H,(R0)=30H,(30H)=0FH,连续执行指令 XCH A,R7 XCH A,40H XCH A,R0 结果为:(A)=?,(R7)=?,(40H)=?,(30H)=?,22,半字节交换指令XCHD XCHD A, Ri ;(A)30(Ri)30 功能:将累加器A的低4位与源操作数的低4位进行交换,各自的高4位不变。 例如:(R0)=60H,(60H)=3EH,(A)=59H,执行指令 XCHD A,R0 结果为:(A)=?,(60H)=?,数据交换指令,23,SWAP,累加器高低半字节交换指令SWA

9、P SWAP A ;(A)74(A)30 功能:将累加器A中的高4位与低4位交换。 例:设(A)=8FH,执行指令 SWAP A 结果为:(A)=?,24,堆栈指令PUSH和POP,(1)入栈指令PUSH PUSH direct ;SP(SP)+1,(SP)(direct) 功能:把堆栈指针加1后,将直接地址单元的内容送进栈顶单元,原直接地址单元内容不变。 特点:该指令的操作数只有一个为源操作数,目的操作数已默认为堆栈区的栈顶位置。 例如:设(SP)=60H,(A)=30H,(B)=70H,执行下列指令 PUSH A PUSH B 结果:(61H)=30H,(62H)=70H,(SP)=62H

10、,25,(2)出栈指令POP POP direct ;direct(SP),SP(SP)1 功能:将栈顶单元的内容传送给直接地址单元后,SP内容减1。 例如:设(SP)=62H,(62H)=70H,(61H)=30H,执行下列指令 POP DPH POP DPL 结果:(DPTR)=7030H,(SP)=60H,堆栈指令PUSH和POP,26,3.3.2 MOVX指令,1. 用Ri进行间接寻址的指令 MOVX A ,Ri ;A(Ri) MOVX Ri,A ;(Ri)(A) 功能:通过累加器A与外部RAM低256字节单元进行数据传送。,例如:设(R1)=43H,(R0)=21H,片外RAM(43

11、H)=65H,执行指令 MOVX A,R1 MOVX R0,A 结果为:(A)=65H,片外RAM 21H单元内容为65H。,27,2. 用DPTR进行间接寻址的指令 MOVX A ,DPTR ;A(DPTR) MOVX DPTR,A ;(DPTR)(A) 功能:通过累加器A与外部RAM进行数据传送。DPTR为16位数据指针,该指令可寻址外部RAM 64KB范围(0000H0FFFFH)。,例如:将片外RAM 2100H单元内容送到片外3000H单元中。 MOV DPTR,#2100H MOVX A,DPTR MOV DPTR,#3000H MOVX DPTR,A,3.3.2 MOVX指令,2

12、8,3.3.3 查表指令MOVC,1. 以DPTR为基址的查表指令 MOVC A,A+DPTR ;A(A)+(DPTR) 这条指令通过变址寻址方式,将A中的内容作为无符号数和DPTR中的内容相加后得到一个16位的地址,把该地址指向的程序存储器单元内容送到累加器A中。该指令中,DPTR常用于存放表格的起始地址。由于用户可以通过16位数据传送指令给DPTR赋值,因此该指令适用范围较为广泛,表格常数可以设置在64KB ROM中的任何位置。,29,例如:分析执行下列程序后,累加器A的内容是? MOV A,#01H MOV DPTR,#M2 ;将M2的地址送DPTR MOVC A,A+DPTR ;A=(

13、M2+1)=77H M1: RET M2: DB 66H,77H,88H,99H;定义一组数据表,30,3.3.3 查表指令,2. 以PC为基址的查表指令 MOVC A,A+PC ;A(A)+(PC) 这条指令通过变址寻址方式,将A中的内容作为无符号数和PC的当前值(即下一指令的起始地址)相加后得到一个16位的地址,把该地址指出的程序存储器单元内容送到累加器A中。这条指令以PC作为基址寄存器,当前的PC值是由该查表指令所在地址确定的,而变址寄存器A的内容为0255,所以A和PC相加所得到的地址只能在PC当前值开始的256个单元的地址之内,因此所查的表格起始地址只能在该指令以下的255个单元内。

14、,31,举例,MOV A,#01H ADD A,#01H ;修正A的值 MOVC A,A+PC ;A=(PC+1+1)=77H M1: RET M2: DB 66H,77H,88H,99H;定义一组数据表,修正量=表首地址PC当前值,32,算术运算类指令,33,3.4.1 不带进位的加法指令ADD,ADD A,Rn ;A(A)+(Rn) ADD A,#data ;A(A)+ #data ADD A,direct ;A(A)+(direct) ADD A,Ri ;A(A)+(Ri),功能是把源操作数和累加器A的内容相加,其结果放入累加器A中。指令的执行会对进位标志CY、辅助进位标志AC、溢出标志

15、OV及奇偶校验标志P产生影响。,34,例如:设(A)=84H,(30H)=8DH,(PSW)=00H,执行指令 ADD A,30H 试分析运算结果及对各标志位的影响。,不带进位的加法指令ADD,运算结果为:(A)=11H;(PSW)=0C4H, 其中(CY)=1,(AC)=1,(OV)=1,(P)=0。,35,加1指令,增量指令INC INC A ;A(A)+1 INC direct ;direct(direct)+1 INC Rn ;Rn(Rn)+1 INC Ri ;(Ri)(Ri)+1 INC DPTR ;DPTR (DPTR)+1,36,带进位的加法指令ADDC,ADDC A,Rn ;A(A)+(Rn) +(CY) ADDC A,#data ;A(A)+ #data +(CY) ADDC A,direct ;A(A)+(direct) +(CY) ADDC A,Ri ;A(A)+(Ri) +(CY),这组指令是把源操作数和累加器A内容及进位标志CY相加,将结果存放在累加器A中。运算结果对PSW对各位的影响与ADD加法指令相同。,【例】设(A)=42H,(R3)=68H,(PSW)=80H, 执行指令: ADDC A,R3,运算结果为:(A)=0ABH;(PSW)=05H,其中(CY)=0,(AC)=0,(OV)=1,(P)=1。,37

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

最新文档


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

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