单片机技术与应用 高级 教学课件 PPT 作者 许志刚 第3章 8051单片机的指令系统

上传人:E**** 文档编号:89355073 上传时间:2019-05-23 格式:PPT 页数:227 大小:1.40MB
返回 下载 相关 举报
单片机技术与应用 高级  教学课件 PPT 作者 许志刚 第3章 8051单片机的指令系统_第1页
第1页 / 共227页
单片机技术与应用 高级  教学课件 PPT 作者 许志刚 第3章 8051单片机的指令系统_第2页
第2页 / 共227页
单片机技术与应用 高级  教学课件 PPT 作者 许志刚 第3章 8051单片机的指令系统_第3页
第3页 / 共227页
单片机技术与应用 高级  教学课件 PPT 作者 许志刚 第3章 8051单片机的指令系统_第4页
第4页 / 共227页
单片机技术与应用 高级  教学课件 PPT 作者 许志刚 第3章 8051单片机的指令系统_第5页
第5页 / 共227页
点击查看更多>>
资源描述

《单片机技术与应用 高级 教学课件 PPT 作者 许志刚 第3章 8051单片机的指令系统》由会员分享,可在线阅读,更多相关《单片机技术与应用 高级 教学课件 PPT 作者 许志刚 第3章 8051单片机的指令系统(227页珍藏版)》请在金锄头文库上搜索。

1、第3章 8051单片机的指令系统,3.1 指令及寻址方式,3.1.1 指令及指令格式 一、指令及指令系统的概念 1指令。指令就是CPU执行某种操作的命令,即能被计算机识别和执行的命令。,指令是以指令代码的形式表示的,它由两部分组成:操作码和操作数。 占据内部ROM中若干个字节,8051单片机共有111条指令,其中,单字节指令49条、双字节指令45条、三字节指令17条。,2指令系统。指令系统是一台计算机所能执行的全部指令的集合。,二、指令的表示形式,指令有二进制、十六进制和助记符3种表示形式。,三、8051单片机的指令格式,8051单片机的汇编语言指令由操作码字段和操作数字段两部分组成,其具体格

2、式为 标号:操作码操作数1,操作数2,操作数3;注释,四、8051单片机指令系统中的符号意义,在8051单片机系统中,一些常用符号的意义如下。 1#data:8位立即数据,即包含在指令中的8位常数。 2#data16:16位立即数据,即包含在指令中的16位常数。,3addr11:11位目的地址。 4addr16:16位目的地址。 5direct:8位内部数据存储器单元地址,它可以是内部RAM单元的地址(0127)或一个专用寄存器的地址(128255)。,6Rn:工作寄存器R0R7中的一个。 7Ri:工作寄存器R0或R1中的一个。 8rel:补码形式的8位地址偏移量。 9DPTR:16位寄存器。

3、常用来存放外部RAM的地址,用作外部RAM的指针;也可用于查表指令,存放ROM的16位地址。,10BIT:内部RAM或专用寄存器中的直接寻址位。 11A:累加器ACC。 12B:特殊功能寄存器,用于乘除法指令中;也可作为通用寄存器使用。,13C:即PSW中的CY位。进位标志位或进位位,在位操作指令中,相当于累加器。 14:间址寄存器或基址寄存器的前缀,如Ri表示以Ri中的内容为地址的单元内容。,15$:当前指令的地址,用于条件转移指令中,原地等待情况下。 16/:位操作数的取反操作。,17(X):X中的内容,即X为一个直接地址。 18(X):以X中的内容为单元地址的单元内容。 19:将箭头左面

4、的内容,赋给箭头右面。,以下是在编译过程中产生的列表文件,读出各条指令的字节数,并计算程序占据内存的字节总数。 Line I Addr Code Source 1: N 0000 ORG 0000H 2: 0000 01 30 AJMP START 3: N 0030 ORG 0030H 4: 0030 75 81 30 START: MOV SP, #30H 5: 0033 75 90 FF MOV P1, #0FFH,6: 0036 20 80 FD STA: JB P0.0, STA 7: 0039 00 NOP 8: 003A 00 NOP 9: 003B 00 NOP 10: 003

5、C 20 80 F7 JB P0.0, STA 11: 003F B2 90 CPL P1.0 12: 0041 30 80 FD JNB P0.0, $ 13: 0044 01 36 AJMP STA 14: END,表3.1 列表文件(.lst)中指令字节表,从表中得知,本程序指令共占内存24个字节,地址范围分成两块:一块是0000H,0001H;另一块是0030H0045H。,3.1.2 寻址方式,8051单片机的寻址方式共有如下7种。 一、立即寻址 二、直接寻址 三、寄存器寻址,四、寄存器间接寻址 五、变址寻址(基址寄存器 + 变址寄存器间接寻址) 六、相对寻址 七、位寻址,表3.2

6、7种寻址方式的寻址范围,PC是程序指针,它永远指向将要执行的下一条程序的所在单元地址。 请问:8051单片机系统中除了程序指针PC外,还有哪些指针?,所谓指针,是指指令操作数中存放的是单元地址,这个地址指向存储器某一个单元,单元内容就是指令所要求提取的数据。 8051单片机系统中指针形式有如下几种。,1堆栈指针SP:指向的是堆栈地址。 2程序指针PC和A+DPTR,A+PC:指向的是ROM地址。 3数据指针DPTR和Ri:指向的是RAM地址。,一、ORG(汇编起始命令) 标号: ORG #addr16 二、END(汇编结束命令) 三、EQU(等值命令) 字符名称 EQU 数或汇编符号,四、DA

7、TA(数据地址赋值命令) 字符名称 DATA 表达式 五、DB(定义字节命令) 标号: DB 字节常数(串)或字符或表达式,ORG 0300H TAB1:DB 0FFH,0F9H,30H TAB2:DB 20H,2FH,0FCH,六、DW(定义字命令),标号: DW 16位数据(或16位数据表) ORG 1000H HTAB: DW 1234H,80H,3FH,七、BIT(位地址符号命令),字符名称 BIT 位地址 AA BIT P1.0 BB BIT P3.2,分析下列程序的结构。 AAA EQU R3 BBB EQU R4 NUMB EQU 60H IN232 BIT P3.0 OUT1

8、BIT P1.0 OUT2 BIT P1.1 ORG 0000H AJMP START ,ORG 0030H START:MOV SP , #NUMB CLR IN232 NOP SETB IN232 CLR OUT1 CLR OUT2 ,MOV DPTR, #TAB MOV A, #01H MOVC A, A+DPTR TAB: DB 30H, 21H, 32H, 33H DB 44H, 55H, 66H, 00H END,3.2 数据传送类指令,3.2.1 内部存储器间的传送指令 一、以累加器A为目的操作数的指令,表3.3 以累加器A为目的操作数的传送指令,【例3.1】 已知(R0) =

9、20H,(20H) = 30H依次执行以下4条指令过程中,A的内容是怎样变化的? MOV A, #20H MOV A, 20H MOV A, R0 MOV A, R0,解:A中内容变化过程以注释的方式列于每条指令后面。 MOV A, #20H ;A = 20H MOV A, 20H ;A = 30H MOV A, R0 ;A = 30H MOV A, R0 ;A = 20H,表3.4 以寄存器为目的操作数的传送指令,二、以寄存器Rn为目的操作数的指令,【例3.2】 已知累加器A中的内容为23H,50H中的内容为45H,R3的内容为33H。依次执行以下3条指令过程中,R3的内容发生怎样的变化?

10、MOV R3, A MOV R3, 50H MOV R3, #00H,分析:第条指令是将A中的内容送入R3中;第条指令是将50H单元的内容送入R3中;第条指令是将一个常数0送入R3中,即R3各位清零。,解: MOV R3, A ;R3 = 23H MOV R3, 50H ;R3 = 45H MOV R3, #00H ;R3 = 00H,表3.5 以直接地址为目的操作数的传送指令,三、以直接地址为目的操作数的指令,续表,【例3.3】 要使3FH中的内容传送至40H,有几种编程方式实现之? 解:可用下列3种方式实现。 MOV 40H,3FH MOV R0,#3FH MOV 40H,R0 MOV A

11、,3FH MOV 40H,A,四、以间接地址为目的操作数的指令,表3.6 以间接地址为目的操作数的传送指令,【例3.4】 已知:(40H) = 11H,(41H) = 22H,R0 = 40H,R1 = 41H,试问以下指令依次执行后累加器A、40H、41H和42H单元中的内容是什么? MOV A, R0 MOV R1, A MOV 42H, R1,3.2.2 涉及外部存储器间的传送指令,一、16位数据传送指令,表3.7 16位数据传送指令,二、从ROM中读取数据的指令,表3.8 从ROM中读取数据指令,【例3.5】 已知在外部ROM1000H开始,连续存放了10个数字,组成一个数据表格。请编

12、程提取其中的第3个数据(即1002H中的数据)放入内部RAM30H中。,解:程序如下: MOV A,#02H MOV DPTR,#1000H MOVC A,A+DPTR MOV 30H,A,【例3.6】 如上题中,数据表格紧跟在MOVC指令后面,请用近程查表指令编写程序。,解:具体程序如下 ORG 0030H MOV A,#07H MOVC A,A+PC MOV 30H,A SJMP $,DB 00H DB 01H DB 03H DB 04H DB 09H END,三、累加器同外部数据存储器间的传送指令,表3.9 累加器A同外部RAM传送数据指令,【例3.7】 编写外部RAM中的数据传送程序。

13、已知有一数在外部RAM的80H单元中,请将它复制到外部RAM的2FFFH单元。,解:程序如下: ORG 0030H MOV R0,#80H MOV DPTR,#2FFFH MOVX A,R0 MOVX DPTR,A END,3.2.3 堆栈及交换类指令,一、栈操作指令,表3.10 堆栈操作指令,【例3.8】 请用堆栈操作指令编程,交换内部RAM中30H、40H单元中的内容。 分析:前面我们已经讲过,进出堆栈遵循“先进后出”和“后进先出”的原则。因此只要先把两个数据压入堆栈,然后改变它们的出栈顺序,就可实现两个数据的交换。,解:程序如下: ORG 0030H MOV SP,#60H PUSH 3

14、0H PUSH 40H POP 30H POP 40H END,二、交换指令,表3.11 交换指令,【例3.9】 用交换指令实现内部RAM中30H、40H单元中内容的相互交换。 分析:交换指令都是通过累加器A进行交换的,可以先将两个要交换单元的其中一个送入A中,然后用指令XCH A,direct实现两者的交换,交换后,将数据回到原先的单元中。,解:两个单元30H、40H内容相交换的指令如下: MOV A,30H XCH A,40H MOV 30H,A,【例3.10】 编程:将内部RAM中的30H单元的内容同外部RAM中40H单元的内容相交换。 分析:由于要交换的其中一个数在外部RAM中,可先把

15、它取进累加器A中,然后实现交换。,解:内、外RAM单元数据相交换的指令如下: MOV R1,#40H MOVX A,R1 XCH A,30H MOVX R1,A END,已知有8个单极开关SW1SW8,它们一端连在一起接地,另一端分别接单片机AT89C51的P1口,请用8个发光二极管D1D8,显示这8个开关的状态:电路开始工作后,如开关是合上的,则相应的发光二极管发光,如开关是断开的,相应的发光二极管不亮。,一、PROTEUS电路设计。,图3.1 发光二极管显示开关状态电路图,二、设计源程序代码,生成目标代码,加载并仿真。 三、观察并监视运行状态。 1观察源程序代码。 2观察内部RAM区的低128个字节。 3观察内部RAM区的高128个字节。,4观察寄存器状态。 5自行设置观察窗口。 6打开仿真日志文件。,3.3 算术运算类指令,3.3.1 加法指令 一、加法指令,表3.12 加法指令,【例3.11】 内部RAM中30H与40H中分别有两个数89H和5AH,将它们相加,和放到50H中。并说出运算结果对PSW的影响。 分析:加法指令中,被加数总是放在累加器A中,因此,首先要将两个单元中的一个放

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

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

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