第3章指令系统培训讲学

上传人:yuzo****123 文档编号:140937210 上传时间:2020-08-03 格式:PPT 页数:87 大小:1,006KB
返回 下载 相关 举报
第3章指令系统培训讲学_第1页
第1页 / 共87页
第3章指令系统培训讲学_第2页
第2页 / 共87页
第3章指令系统培训讲学_第3页
第3页 / 共87页
第3章指令系统培训讲学_第4页
第4页 / 共87页
第3章指令系统培训讲学_第5页
第5页 / 共87页
点击查看更多>>
资源描述

《第3章指令系统培训讲学》由会员分享,可在线阅读,更多相关《第3章指令系统培训讲学(87页珍藏版)》请在金锄头文库上搜索。

1、第3章 指令系统,1.掌握指令格式和寻址方式 2.理解每条指令的含义 3.熟练运用每条指令编写程序 4.掌握汇编语言程序编译环境,本章学习要求:,单片机原理及应用,3.1 AT89C51程序设计语言介绍,3.1 AT89C51程序设计语言介绍,机器语言: 用二进制代码表示的指令,也是CPU唯一能够接受的指令形式. 如:MOV A,R0;机器语言(机器码)为:1110_1000b MOV R1,A;机器码为:1111_1001b 汇编语言: 汇编语言就是用助字符表示的指令,与机器语言指令一一对应。 如:两个寄存器相加汇编语言指令:ADD A,R0 C51语言: 语法同标准C语言。开发效率高,可读

2、性强,是目前使用最为广泛的单片机开发语言。一条C语言通常需要由多条机器语言组成。,3.2 指令格式和寻址方式,3.2 指令格式和寻址方式,3.2.1汇编语言指令格式: 标号:操作码 操作数1,操作数2 ;注释 例如: LOOP: MOV A,#40H ;取参数,1.标号:指令的符号地址。 2.操作码:指明指令功能。 3.操作数:指令操作对象。 数据、地址、寄存器名及约定符号。 操作数1:目的操作数; 操作数2:源操作数. 4.注释行:说明指令在程序中的作用。 操作码和操作数是指令主体。换行表示一条指令结束。,3.2 指令格式和寻址方式,3.2.2机器语言指令格式:,内部数据存储器开辟的工作寄存

3、器区可以减小程序长度、提高程序运行速度、简化程序设计。,举例: 汇编语言:机器语言: MOV A,R0E8H 1 1 MOV A, 30HE5 30H 2 1 MOV R6,#32H7E 32H 2 1 MOV 40H,#64H75 40 64H 3 2,操作码 操作数1 操作数2 有单字节、双字节和三字节指令。,3.2 指令格式和寻址方式,3.2.3指令寻址方式,一.操作数类型: 位 (bit) 位寻址区中的一位二进制数据 字节(Byte) 8位二进制数据 字 (Word) 16位双字节数据,二.七种寻址方式: (1)立即寻址方式: 指令中给出实际操作数据(立即数),用于寄存器或存储器赋常数

4、初值。 举例: 8位立即数: MOV A,#40H ;A#40H 16位立即数: MOV DPTR,#2100H ;DPTR#2100H,思考题:什么是立即数?,3.2 指令格式和寻址方式,(2)直接寻址方式:,操作数是存储器单元地址,数据放在存储器单元中。 MOV A,40H;A(40H),注意小括弧的含义,直接寻址方式对数据操作时,地址是固定值,而地址所指定的单元内容为变量形式。,例:设存储器两个单元的内容如图所示, 执行指令 MOV A,40H 后 (A) = ?,思考题: 直接寻址方式指令和立即寻址方式指令的形式有什么不同?,56H,3.2 指令格式和寻址方式,(3)寄存器寻址方式:,

5、(4)寄存器间接寻址方式: 操作数为寄存器名,寄存器中存放的是数据地址。 存放地址的寄存器称为间址寄存器或数据指针。 例:MOV A,R0;A(R0) 设指令执行前 A=20H,R0=40H,地址为40H 存储器单元内容如图所示。执行指令后, A= ? ,R0 = ? , (40H)= ?,34H,40H,34H,0100 0000,A,R0,0010 0000,A,20H,R0,40H,例:MOV A,R0;A(R0) 设指令执行前 (A)=20H,(R0)=40H, 执行指令后,(A)= ? ,(R0) = ?,操作数为寄存器名,数据存放在寄存器中。,40H,40H,3.2 指令格式和寻址

6、方式,(5)变址间接寻址方式:,例:MOVC A,A+DPTR;A (A)+(DPTR) 设指令执行前 (A)=09H,(DPTR)=2000H,存储器单元内容如图所示。执行指令后, (A)= ? (DPTR)= ?,12H,2000H,数据在存储器中,指令给出的寄存器中为数据 的基地址和偏移量。 数据地址 = 基地址 + 偏移量。 说明:1、只对程序存储器; 2、指令形式:MOVC A,A+DPTR MOVC A,A+PC,3.2 指令格式和寻址方式,指令给出位地址。一位数据在存储器位寻址区。 (1)内部RAM中的位寻址区:字节地址为20H2FH; (2)专用寄存器的可寻址位. 表示方法:1

7、)直接使用位地址;如:PSW的位6可表示为0D6H 2)位名称表示; 或AC 3)字节地址加位数表示; 或D0H.6 4)专用寄存器符号加位数表示。 或PSW.6 例: MOV C,40H;Cy(位地址40H) 设指令执行前 Cy=1,位地址40H存储器单元如图, 执行指令后,Cy= ?,0,(6)位寻址方式:,3.2 指令格式和寻址方式,(7)相对寻址方式:,主要用于相对跳转指令。 目的地址=转移指令地址+rel (偏移量),当前PC值加上指令中规定的偏移量rel,构成实际的操作数地址 例: SJMP rel 操作:跳转到的目的地址 = 当前16位PC值 + rel,注意: 符号“rel”表

8、示“偏移量”,是一个带符号的单字节数,范围是:-128+127(80H7FH)。,在实际编程中,“rel” 通常用标号代替。不需要手工计算,3.2.4指令执行过程,3.2 指令格式和寻址方式,例:MOV A,30H,1.PC直针按照当前指令字节数递增,指向下一条指令; 2.执行指令主体功能,将30H单元内数据传送到A; 3.修改PSW中的相关标志位,本例中涉及校验位P。,3.3 指令分类介绍,3.3 指令分类介绍,指令按功能分类: 数据传送、算术运算、逻辑运算、布尔处理、程序控制。,实现寄存器、存储器之间的数据传送。 一、内部传送指令:片内数据存储器数据传送。 二、外部传送指令:片外数据存储器

9、数据传送。 三、查表指令: 程序存储器数据传送。 四、交换指令: 片内数据存储器数据传送。 五、堆栈操作指令:片内数据存储器数据传送。,3.3.1 数据传送指令,3.3 指令分类介绍,一内部传送指令:(MOV),指令机器码: 11101rrr E8EF 11100101 n E5 n 1110011i E6、E7 01110100 d 74 d 10101rrr n 1010011i n 85 n1 n2 90 d1 d2,MOV A,Rn ;A(Rn),n=07 MOV A,direct ;A(direct) MOV A,Ri ;A(Ri),i=0、1 MOV A,#data ;AdataM

10、OV Rn, direct ;Rn(direct) MOV Ri, direct ;(Ri)(direct) MOV direct1,direct2 ;direct1(direct2) MOV DPTR,#data16 ;DPTRdata16,实现片内数据存储器中数据传送。 指令格式: MOV 目的操作数,源操作数 寻址方式:立即寻址、直接寻址、寄存器寻址、寄存器间址。,3.3 指令分类介绍,例1:,MOV A,#30H MOV4FH,A MOV R0,#20H MOV R0,4FH MOV 21H,20H,例2:用两种寻址方式实现,将片内RAM 60H单元的数据传送给累加器A。,解: MOV

11、 A,#60H,;(A)= 30H ;(4FH)= 30H ;(R0)= 20H ;(20H)= 30H ;(21H)= 30H,MOV R0,60H MOV A,R0,顺序执行下列指令序列,求每一步执行结果。,(),(),3.3 指令分类介绍,1.立即数送累加器A和内部数据存储器(Rn,内部RAM,SFR) 共5条指令: MOV A,#data ;A #data MOV direct,#data ; direct #data MOV Ri,#data ; (Ri ) #data. MOV Rn ,#data ; Rn #data MOV DPTR,#data16 ; DPTR #data16

12、,共有6条指令: MOV A, direct ; A (direct ) MOV A, Ri ;A (R i ) MOV A, Rn ; A (Rn) MOV direct, A ; direct (A) MOV Ri, A ;(Ri ) (A) MOV Rn, A ; Rn (A),2内部数据存贮器(Rn、内部RAM、SFR)与累加器A间传送数据,3.3 指令分类介绍,共有5条指令,三种寻址方式:直接寻址,寄存器寻址,寄存器间接寻址。 : MOV direct 1, direct2 ; direct1 (direct2) MOV direct, Ri ; direct (Ri ) MOV d

13、irect ,Rn ; direct (Rn ). MOV Ri, direct ; (Ri) (direct) MOV Rn, direct ; Rn (direct),3、内部数据存贮器中Rn、SFR和片内数据RAM之间的数据传送,只有指令表中的指令才有对应指令代码,计算机才能执行。编程时,不能随意创造发明指令。,1. 一条指令中不能同时出现两个工作寄存器:非法指令:MOV R1,R2MOV R2,R0,2. 间址寄存器只能使用 R0、R1。 非法指令: MOV A,R2,3. 指令表中的两个参数: 指令字节数和机器周期数,注意:,3.3 指令分类介绍,二 外部数据存储器读写传送指令: (

14、MOVX),DPTR作间接寻址寄存器: MOVX A,DPTR;A(DPTR) (读) MOVX DPTR,A;(DPTR)(A) (写) 2. Ri作间接寻址寄存器(了解): MOVXA,Ri;A(P2Ri) (读) MOVXRi,A ;(P2Ri)A (写),实现外部数据存储器和累加器A之间的数据传送。 指令格式:MOVX 目的操作数,源操作数 寻址方式:通过A并使用寄存器间接寻址方式。,3.3 指令分类介绍,例3:实现片外数据存储器2000H内的数据传送到2100H单元。,MOV DPTR,#2000H MOVX A,DPTR MOV DPTR,#2100H MOVX DPTR,A,;

15、DPTR #2000H ; A (2000H) ; DPTR #2100H ; 2100H (A),片外数据存储器不能采用直接寻址。 下列为非法指令: MOVX A,2000H MOVX 2100H,2000H,思考题:为什么对DPTR的数据传送使用内部传送指令?,3.3 指令分类介绍,三 程序存储器读指令(查表指令):(MOVC),1DPTR为基址寄存器: MOVCA,A+DPTR ;A(A)+(DPTR) (读) 查表范围为 64KB 程序存储器任意空间。 2PC为基址寄存器(了解): MOVCA,A+PC;A(A)+(PC) (读),实现从程序存储器读取数据到累加器A, 只能使用变址寻址

16、方式。 多用于查常数表程序,可直接求取常数表中的函数值。,3.3 指令分类介绍,例4:以查表方法把累加器A中的十六进制数 转换为ASCII码, 并送回累加器中。,指令地址 源程序 ORG 2000H 2000 H2A:INC A 2001 MOVC A,A+PC 2002 RET 2003 DB 30H 2004 DB 31H 2005 DB 32H 2011 DB 45H 2012 DB 46H,思考题1:伪指令ORG和DB的含义是什么?,思考题2:基址寄存器PC的值是如何确定的?,3.3 指令分类介绍,例5:,ORG 1000H SQU: MOV A,20H;取 X(变量:偏移量) MOV DPTR,#3000H;确定表首地址(基地址) MOVC A,A+DPTR;查表求Y=X2 MOV 21H,A;保存

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

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

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