单片机教案课件80C51的指令系统.ppt
《单片机教案课件80C51的指令系统.ppt》由会员分享,可在线阅读,更多相关《单片机教案课件80C51的指令系统.ppt(80页珍藏版)》请在三一办公上搜索。
1、2023/9/6,1,第3章 80C51的指令系统,指令格式及常用符号,3.1,80C51的寻址方式,3.2,数据传送指令(29条),3.3,算数运算指令(24条),3.4,逻辑运算与循环类指令(24条),3.5,控制转移类指令(17条),3.6,位操作类指令(17条),3.7,2023/9/6,2,3.1 指令格式及常用符号,3.1.1 指令系统的概述,指令是计算机根据人的意图所执行的操作命令,是与计算机内部结构、硬件资源密切联系的。某种计算机所有指令的集合称为指令系统。MCS-51/52系列单片机的指令系统共有111条指令编码少:其中49条是单字节指令,45条是双字节指令,17条是三字节指
2、令。执行周期短:其中有64条指令的执行时间为单机器周期,45条指令的执行时间为双机器周期,乘法和除法指令只需4个机器周期。位操作指令丰富:,机器语言:计算机唯一能够识别的指令,由二进制数“0”和“1”编码构成,也成为目标代码,执行速度最快。汇编语言指令是在机器语言基础上,用英文单词或英文单词缩写表示机器语言指令的操作码(助记符)用符号表示操作数或者操作数的地址。将汇编语言翻译为机器语言的目标代码称为汇编。,2023/9/6,3,2023/9/6,4,书写格式,注意:操作码不能缺少操作数个数可为:1、2、3个2个操作数的指令,目的操作数在左边,一般格式标号:操作码 目的操作数,源操作数;注释,3
3、.1.2 符号指令的书写格式,2023/9/6,5,描述符号,Rn(n=07)-当前工作寄存器组中的寄存器R0R7之一Ri(i=0,1)-当前工作寄存器组中的寄存器R0或R1-间址寄存器前缀#data-8位立即数#data16-16位立即数direct-片内低128个RAM单元地址及SFR地址addr11-11位目的地址addr16-16位目的地址rel-8位地址偏移量,范围:128127bit-片内RAM位地址、SFR的位地址()-表示 地址单元或寄存器中的内容/-位操作数的取反操作前缀()-表示 所指地址单元的内容-表示数据传输的方向,2023/9/6,6,3.2.1 寄存器寻址,寻址方式
4、:寻找(源)操作数或指令转移地址的方式80C51单片机有7种寻址方式,3.2 80C51的寻址方式,操作数在寄存器中寻址空间:R0R7、A、B(AB形式)和DPTR,特点:传送和执行速度快,【例】若(R0)=30H,,执行MOV A,R0后,(A)=30H,2023/9/6,7,3.2.2 直接寻址,操作码后字节存放的是操作数的地址寻址空间:片内RAM低128字节SFR(符号形式),另一类直接寻址是转移目标地址的寻址。如:LJMP ADDR16,【例】若(50H)=3AH,,执行MOV A,50H后,(A)=3AH,2023/9/6,8,3.2.3 寄存器间接寻址,寄存器中的内容是操作数的地址
5、寻址空间:片内RAM(Ri、SP)片外RAM(Ri、DPTR),【例】若(R0)=30H,(30H)=5AH,执行MOV A,R0后,(A)=5AH,片内:MOV片外:MOVX,2023/9/6,9,3.2.4 立即寻址,操作数在指令编码中寻址空间:ROM,对于MOV DPTR,#2100H指令,立即数高8位“21H”装入DPH,【例】执行MOV A,#50H,结果:(A)=50H,2023/9/6,10,3.2.5 变址寻址,操作数地址:基地址+偏移量寻址空间:ROM,变址寻址还用于跳转指令,如JMP A+DPTR,【例】(A)0FH,(DPTR)=2400H,执行MOVC A,A+DPTR
6、”后,结果:(A)=88H,2023/9/6,11,3.2.6 相对寻址,用于跳转指令,实现程序分支,Rel常用符号地址表示,离源地址不要超过(128127),【例】若rel为75H,PSW.7为1,JC rel存于1000H开始的单元。,执行JC rel指令后,程序将跳转到1077H单元取指令并执行。,2023/9/6,12,3.2.7 位寻址,寻址位数据寻址空间片内RAM位空间SFR位空间,【例】位地址00H内容为1,MOV C,00H执行后,位地址PSW.7的内容为1。,位寻址方式实质属于位的直接寻址。,2023/9/6,13,3.3 数据传送类指令(29条),一般不影响标志寄存器PSW
7、的状态。,传送类指令有两大类 一般传送(MOV)特殊传送,如:MOVC MOVX PUSH、POP XCH、XCHD SWAP,2023/9/6,14,3.3.1 一般传送指令,16位传送(仅1条),MOV DPTR,#data16;DPTR data16,例:执行指令 MOV DPTR,#1234H 后(DPH)=12H,(DPL)=34H。,8位传送,通用格式:MOV,;,2023/9/6,15,以A为目的,【例3-9】若(R1)=20H,(20H)=55H。执行指令 MOV A,R1 后,(A)=55H。,1、将R1内容传送至AMOV A,R12、将立即数16H传送至AMOV A,#16
8、H3、将R0指示的内存单元20H单元传送至AMOV R0,#20HMOV A,R04、将30H的内容传送至AMOV A,30H,2023/9/6,16,2023/9/6,17,以Rn为目的,【例3-10】执行指令 MOV R6,#50H 后,(R6)=50H例:如何将R1的内容传送给R2?,MOV A,R1MOV R2,A,2023/9/6,18,以direct为目的,【例3-11】若(R1)=50H,(50H)=18H,执行指令 MOV 40H,R1 后,(40H)=18H,2023/9/6,19,以Ri为目的,【例3-12】若(R1)=30H,(A)=20H,执行指令 MOV R1,A 后
9、,(30H)=20H。,1、将20H开始的32个单元全部清0 MOV A,#00H;A000H MOV R0,#20H;R020H MOV R7,#20H;R7计数,R732 LP1:MOV R0,A;R0指示单元清0 INC R0;R0R0+1 DJNZ R7,LP1;R7 R7-1,2023/9/6,20,2023/9/6,21,3.3.2 特殊传送指令,以DPTR内容为基址,读ROM中常数表项指令MOVC,ROM中可以存放程序代码,还经常存放常数表,MOVC A,A+DPTR;A(A)+(DPTR),以PC内容为基址,MOVC A,A+PC;A(A)+(PC),常数表存放约束小,称为远程
10、查表指令。占用DPTR,常数表存放约束大,称为近程查表指令。不占用DPTR,1、LED显示器09的字形显示码存放在程序存储器中的情况如下:210AH:0C0H 字符“0”210BH:0F9H 字符“1”210CH:0A4H 字符“2”210DH:0B0H 字符“3”从段码表中取出“3”并送LED端口为1200H显示,可用如下指令完成:2100H:MOV A,#0AH2102H:MOVC A,A+PC2103H:MOV DPTR,#1200H2106H:MOVX DPTR,A,2023/9/6,22,2023/9/6,23,读片外RAM,读片外RAM及接口单元数据的指令MOVX,片外RAM中经常
11、存放数据采集与处理的中间数据,MOVX A,DPTR;A(DPTR)MOVX A,Ri;A(Ri),写片外RAM,MOVX DPTR,A;(DPTR)AMOVX Ri,A;(Ri)A,注意:用Ri寻址时,高8位地址由P2口提供,1、将74H的内容送到片外RAM3000H单元 MOV A,74H MOV DPTR,#3000H MOVX DPTR,A2、将片外RAM2040H的内容送到片内 RAM20H单元。MOV DPTR#2040H MOVX A,DPTR MOV 20H,A,2023/9/6,24,2023/9/6,25,入栈指令PUSH,堆栈操作指令PUSH和POP,堆栈是一片存储区,遵
12、循“后进先出”原则,栈顶由SP指示。80C51的堆栈设在片内RAM低端的128个单元,向上生长。,PUSH direct;SP(SP)1,(SP)(direct),出栈指令POP,POP direct;(direct)(SP),SP(SP)1,注:堆栈用于子程序调用时保护返回地址,或者用于保护子程序调用之前的某些重要数据(即保护现场),还可以用于数据交换。,2023/9/6,26,利用堆栈完成40H与50H单元内容的交换的示例,MOV SP,#6FH;将堆栈设在70H以上RAM空间PUSH 40H;将40H单元的“23H”入栈,之后(SP)=70H PUSH 50H;将50H单元的“45H”入
13、栈,之后(SP)=71HPOP 40H;将SP指向的71H单元的内容弹到40H单元,之后(SP)=70HPOP 50H;将SP指向的70H单元的内容弹到50H单元,之后(SP)=6FH,(a)初始状态(b)2条PUSH指令执行后(c)2条POP指令执行后,2023/9/6,27,字节交换指令XCH,数据交换指令XCH、XCHD和SWAP,数据交换属于同时进行的双向传送,【例3-20】若(R0)=80H,(A)=20H。执行指令 XCH A,R0 后,(A)=80H,(R0)=20H。,2023/9/6,28,半字节交换指令XCHD,【例3-21】若(R0)30H,(30H)67H,(A)20H
14、。执行指令 XCHD A,R0 指令后,(A)27H,(30H)60H。,XCHD是间址操作数的低半字节与A的低半字节互换。SWAP是累加器的高低4位互换,【例3-22】若(A)30H,执行指令SWAP A后,(A)03H。,1、编程将内部数据存储器20H30H内容置1.2、试编写8字节外部数据存储器到内部数据存储器的数据传送程序,外部数据存储器地址为40H47H,内部数据存储器的范围为30H37H。,2023/9/6,29,2023/9/6,30,3.4 算数运算类指令(24条),算数运算结果要影响PSW中标志位,CY为1,无符号数(字节)加减发生进位或借位 OV为1,有符号数(字节)加减发
15、生溢出错误 溢出标志位OV=D7C D67=1 0=1 AC为1,十进制数(BCD码)加法的结果应调整 P为1,存于累加器A中操作结果的“1”的个数为奇数,标志位意义,标志位与相关指令影响,2023/9/6,31,算数运算影响标志位示例,【例3-23】有2个参与相加的机器数,一个是84H,另一个是8DH。试分析运算过程及其对状态标志的影响。,结果:CY为1;AC为1;OV为1;P为0,2023/9/6,32,3.4.1 加法,不带进位加法,【例3-24】若有2个无符号数存于累加器A和RAM的30H单元,即(A)=84H,(30H)=8DH,试分析执行指令 ADD A,30H 后的结果。,由于对
16、无符号数相加,要考察CY。由上页图可知,CY=1,因此知道运算的结果发生了进位,即实际值应该是100H+11H。,所以,编程者应确保单字节无符号数运算结果不要超过255,2023/9/6,33,【例3-25】若有2个有符号数存于累加器A和RAM的30H单元,即(A)=84H,(30H)=8DH,试分析执行指令 ADD A,30H 后的结果。,有符号数相加,只需考察溢出标志OV即可。由上图可见OV=1,因此可知运算的结果发生了溢出,这说明累加器A中的结果已经不是正确的值了。溢出标志位OV=D7C D6C=1 0=1,编程者应确保单字节有符号数运算结果不超过-128127。否则,就要将数据用多字节
17、表示或在程序运行中对状态标志进行判断:,无符号数用JNC或JC,有符号数要用JNB或JB。,2023/9/6,34,带进位加法(这组指令方便了多字节加法的实现),这4条指令的功能是把源操作数所指示的内容和A中的内容及进位标志Cy相加,结果存入A中。运算结果对PSW中相关位的影响同上述的4条加法指令。带进位加法指令一般用于多字节数的加法运算,低位字节相加时和可能产生进位,可以通过带进位加法指令将低位字节的进位加到高字节上去。高位字节求和时必须使用带进位的加法指令。,多了加进位标志位CY,主要用于多字节的加运算,两个双字节数存放在内部RAM 30H、31H单元及40H、41H单元,设低位在前,高位
18、在后,求和结果存放在30H、31H。,MOV A,30H;取低8位ADD A,40H;低8位相加MOV 30H,A;存结果MOV A,31H;取高8位ADDC A,41H;高8位带进位加MOV 31H,A;存结果,例:,2023/9/6,36,加1,这一组指令的功能是将操作数所指定的单元或寄存器中的内容加1。其结果送回原操作数单元中。,设R0=7EH,DPTR=10FEH,(7EH)=0FFH,(7FH)=38H,执行下列指令INC R0;(7EH)=00HINC R0;R0=7FHINCR0;(7FH)=39HINC DPTR;DPTR=10FFHINC DPTR;DPTR=1100HINC
19、 DPTR;DPTR=1101H,2023/9/6,37,2023/9/6,38,十进制调整,DA A;调整A的内容为正确的BCD码,两个压缩的BCD码按二进制相加后,必须经过调整方能得到正确的和。注意:该指令必须用在加法指令后边否则出错。,这条指令是在进行BCD码加法运算时,用来对BCD码的加法运算结果自动进行修正(主要是高、低4位是否+6)。另外,对BCD码的减法运算不能用此指令来进行修正。,执行十进制调整指令后,PSW中的CY表示结果的百位值,计算机中只能使用二进制数,所有在计算机中使用的字符和数字都要用特定的二进制编码表示,编码方法很多,常用的有ASCII码(American Stan
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 教案 课件 80 C51 指令系统
链接地址:https://www.31ppt.com/p-5937937.html