§51单片机及其应用第五课ASM

上传人:w****i 文档编号:92308555 上传时间:2019-07-08 格式:PPT 页数:64 大小:607KB
返回 下载 相关 举报
§51单片机及其应用第五课ASM_第1页
第1页 / 共64页
§51单片机及其应用第五课ASM_第2页
第2页 / 共64页
§51单片机及其应用第五课ASM_第3页
第3页 / 共64页
§51单片机及其应用第五课ASM_第4页
第4页 / 共64页
§51单片机及其应用第五课ASM_第5页
第5页 / 共64页
点击查看更多>>
资源描述

《§51单片机及其应用第五课ASM》由会员分享,可在线阅读,更多相关《§51单片机及其应用第五课ASM(64页珍藏版)》请在金锄头文库上搜索。

1、2019/7/8,1,3.1 概述,7种寻址方式,111条指令,字节数,运算速度,单字节指令:49条 双字节指令:45条 三字节指令:17条,单周期指令:64条 双周期指令:45条 四周期指令: 2 条,第三章 MCS-51指令系统 Instruction Set,2019/7/8,2,功能,数据传送类:29条 算术运算类:24条 逻辑运算类:24条 控制转移类:17条 位操作类: 17条,2019/7/8,3,常用符号,Rn:工作寄存器中的寄存器R0、R1R7之一,,Ri:工作寄存器中的寄存器R0或R1,#data:8位立即数,#data16:16位立即数,direct:片内RAM或SFR的

2、地址(8位),间接寻址寄存器,Bit:片内RAM或SFR的位地址,addr11:11位目的地址,addr16:16位目的地址,2019/7/8,4,rel: 补码形式的8位地址偏移量。 偏移范围为-128127 /:位操作指令中,该位求反后参与操作,不影响该位 X:片内RAM的直接地址或寄存器 (X):相应地址单元中的内容 :箭头左边的内容送入箭头右边的单元内,2019/7/8,5,3.2 寻址方式,3.2.1 立即寻址 Immediate Addressing,操作数就包含在指令代码中,在操作码之后,称为立即数,用“”表示。 MCS-51 如:MOV P1, #80H MOV R7, #0F

3、5H MOV DPTR,#1245H,操作数存在程序存储器中,2019/7/8,6,3.2.2 直接寻址 Direct Addressing 直接使用数所在单元的地址找到了操作数,所以称 这种方法为直接寻址。 操作数在SFR、内部RAM、位地址空间。 如: MOV A,00H MOV C,60H MOV A,0F0H,2019/7/8,7,3.2.3 寄存器寻址 Register Addressing,对选定的工作寄存器R0R7、累加器A、通用寄存器B、地址寄存器DPTR中的数进行操作。 例:MOV A,R0;将R0工作寄存器中的数据送到累加器A中去。,提一个问题:我们知道,工作寄存器就是内存

4、单元的一部分,如果我们选择工作寄存器组0,则R0就是RAM的00H单元,那么这样一来,MOV A,00H 和 MOV A,R0不就没什么区别了吗?,2019/7/8,8,的确,这两条指令执行的结果是完全相同的,都是将00H单元中的内容送到A中去,但是执行的过程不同,执行第一条指令需要2个机器周期,而第二条则只需要1个机器周期,第一条指令变成最终的目标码要两个字节(E5H 00H),而第二条则只要一个字节(E8H)就可以了。,2019/7/8,9,3.2.4 寄存器间接寻址 Register Indirect Addressing,把地址放在另外一个寄存器中,根据这个寄存器中的数值决定该到哪个单

5、元中取数据。 R0,R1-8位地址,片内低128字节或片外 DPTR-16位,片外64KB MCS-51 如: MOV A,R0 MOVX A,R0 MOVX A,DPTR,操作数在片内RAM中,操作数在片外RAM中,操作数在片外RAM中,2019/7/8,10,以DPTR或PC为基址寄存器,累加器A为变址寄存器。把两者内容相加,结果作为操作数的地址。 常用于查表操作。 MCS-51 MOVC A, A+DPTR ;(A+DPTR) A MOVC A, A+PC ; PC+1 PC,(A+PC)A,3.2.5 变址寻址(基址+变址),Base-Register-plus-Index-Regis

6、ter-Indirect Addressing,操作数在程序存储器中,2019/7/8,11,如:MOVC A,A+DPTR 设DPTR=2000H,A=E0H,20E0H,47,指令代码,2019/7/8,12,3.2.6 相对寻址,将PC中的当前内容与指令第二字节给出的数相加,结 果作为跳转指令的转移地址(转移目的地址)。 PC中的当前内容称为基地址(本指令后的字节地址) 指令第二字节给出的数据称为偏移量,1字节带符号数. 常用于跳转指令。 如: JC 23H 若C=0,不跳转; C=1,跳转.,Relative Addressing,改变PC,2019/7/8,13,如:JC 23,10

7、25H,23H,1002H,指令代码,当前PC,2019/7/8,14,对片内RAM的位寻址区和某些可位寻址的特殊功能寄存器进行位操作时的寻址方式。 如: SETB 3DH; 将27H.5位置1 CLR C ;Cy位清0,3.2.7 位寻址 Bit Addressing,操作数在片内RAM位地址区或SFR某些位中,2019/7/8,15,寻址方式涉及的存储器空间,2019/7/8,16,3.3 数据传送类指令(29条) Data Transfer Instruction,MCS-51 助记符: 助记符: MOV、MOVX、MOVC XCH、XCHD、SWAP PUSH、POP 源操作数寻址方式

8、(5种): 立即寻址、直接寻址、寄存器寻址、 寄存器间接寻址、变址寻址。 目的操作数寻址方式(3种): 直接寻址、寄存器寻址、寄存器间接寻址 除了目的操作数为ACC的指令影响奇偶标志P外,一般不影响 标志位。,2019/7/8,17,3.3.1 十六位数的传递指令(1条),MOV DPTR,#data16 8051是一种8位机,这是唯一的一条16位立即数传递指令。功能:将一个16位的立即数送入DPTR中去。其中高8位送入DPH,低8位送入DPL。 例:MOV DPTR,#1234H 执行完了之后DPH中的值为12H,DPL中的值为34H。 如果我们分别向DPH,DPL送数,则结果也一样。 如下

9、面两条指令: MOV DPH,#35H MOV DPL,#12H。 则就相当于执行了 MOV DPTR,#3512H。,2019/7/8,18,3.3.2 累加器A与片外RAM之间的数据传递类指令(4条),MOVX A,Ri MOVX Ri,A MOVX A,DPTR MOVX DPTR,A 说明: 1.在51中,与外部存储器RAM打交道的只可以是A累加器。所有 需要送入外部RAM的数据必需要通过A送去,而所有要读入的外部 RAM中的数据也必需通过A读入。 在此我们可以看出内外部RAM的区别了,内部RAM间可以直接进行数据的传递,而外部则不行。 比如,要将外部RAM中某一单元(设为0100H单

10、元的数据)送入另一个单元(设为0200H单元),也必须先将0100H单元中的内容读入A,然后再送到0200H单元中去。,2019/7/8,19,2.要读或写外部的RAM,当然也必须要知道RAM的地址,在后两条指令中,地址是被直接放在DPTR中的。而前两条指令,由于Ri(即R0或R1)只是8位的寄存器,所以只提供低8位地址。高8位地址由P2口来提供。 3.使用时应先将要读或写的地址送入DPTR或Ri中,然后再用读写命令。 例:将外部RAM中100H单元中的内容送入外部RAM中200H单元中。 MOV DPTR,#0100H MOVX A,DPTR MOV DPTR,#0200H MOVX DPT

11、R,A,2019/7/8,20,3.3.3 读程序存储器指令(2条),MOVC A,A+DPTR MOVC A,A+PC 本组指令是将ROM中的数送入A中。本组指令也被称为查表指令,常用此指令来查一个已做好在ROM中的表格 说明:查找到的结果被放在A中,因此,本条指令执行前后,A 中的值不一定相同。 例:有一个数在R0中,要求用查表的方法确定它的平方值(此 数的取值范围是0-5) MOV DPTR,#100H MOV A,R0 MOVC A,A+DPTR . ORG 0100H DB 0,1,4,9,16,25,如果R0中的值为2,则最终地址为100H+2为102H,到102H单元中找到的是4

12、。,2019/7/8,21,3.3.4 堆栈操作(2条),PUSH direct ;SPSP+1,(SP)(direct) POP direct ; (direct) (SP), SPSP-1 第一条为压入指令,就是将direct中的内容送入堆栈中,第二条为弹出指令,就是将堆栈中的内容送回到direct中。例: MOV SP,#5FH MOV A,#100 MOV B,#20 PUSH ACC PUSH B 则执行第一条PUSH ACC指令是这样的:将SP中的值加1,即变为60H,然后将A中的值送到60H单元中,因此执行完本条指令后,内存60H单元的值就是100,同样,执行PUSH B时,是将

13、SP+1,即变为61H,然后将B中的值送入到61H单元中,即执行完本条指令后, 61H单元中的值变为20。,2019/7/8,22,1.给出每条指令执行后的结果,MOV 23H,#30H MOV 12H,#34H MOV R0,#23H MOV R7,12H MOV R1,#12H MOV A,R0 MOV 34H,R1 MOV 45H,34H MOV DPTR,#6712H MOV 12H,DPH MOV R0,DPL MOV A,R0,;(23H)=30H ;(12H)=34H ;R0=23H,;R7=34H ;R1=12H ;A=30H,;(34H)=34H ;(45H)=34H ;DP

14、TR=6712H,;(12H)=67H ;R0=12H ;A=67H,内部RAM,2019/7/8,23,3.4 算术运算类指令(24条) Arithmetic Operations,主要对8位无符号数;也可用于带符号数运算。 包括:加、减、乘、除、加1、减1运算指令 影响PSW有关位。,2019/7/8,24,3.4.1 加法指令,ADD A,#data ; AdataA ADD A,direct ; A(direct )A ADD A,Rn ; ARnA ADD A,Ri ; A(Ri)A 用途:将A中的值与源操作数所指内容相加,最终结果 存在A中。,1.不带进位位的加法指令(4条),20

15、19/7/8,25,2.带进位位的加法指令(4条),ADDC A,Rn ; ARnCYA ADDC A,direct ; A(direct )CYA ADDC A,Ri ; A(Ri)CYA ADDC A,#data ; AdataCYA 用途:将A中的值和其后面的值以及进位位C中的值相加, 最终结果存在A,常用于多字节数运算中。 说明:由于51单片机是一种8位机,所以只能做8位的数学运算,但8位运算的范围只有0255,这在实际工作中是不够的,因此就要进行扩展,一般是将2个8位(两字节)的数学运算合起来,成为一个16位的运算,这样,可以表达的数的范围就可以达到065535。,2019/7/8,

16、26,例:,先做67H+A0H=107H,而107H显然超过了0FFH,因此最终保存在A中的是07H,而1则到了PSW中的CY位了。换言之,CY就相当于是100H。 然后再做10H + 30H + CY,结果是41H,所以最终的结果是4107H。,1067H+30A0H,0001 0000 0110 0111,0011 0000 1010 0000,0100 0001 0000 0111,1067H,30A0H,4107H,2019/7/8,27,设:1067H存在R1R0中, 30A0H存在R3R2中,计算R1R0+R3R2,结果存在R5R4中。,MOV A,R0 ADD A,R2 ;R0+R2A和CY MOV R4,A MOV A,R1 ADDC A,R3 ;R1+R3+CYA和CY MOV R5,A,20

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

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

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