《嵌入式系统应用》课件:单片机3 第三章指令系统.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《嵌入式系统应用》课件:单片机3 第三章指令系统.ppt》由用户(罗嗣辉)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式系统应用 嵌入式系统应用课件:单片机3 第三章指令系统 嵌入式 系统 应用 课件 单片机 第三 指令系统
- 资源描述:
-
1、1 单片机原理及应用北京化工大学北京化工大学信息科学与技术学院信息科学与技术学院郭郭 青青第三章 80C51指令系统本章重点本章重点寻址方式寻址方式指令格式指令格式操作结果及对标志位影响操作结果及对标志位影响3.1 概述分类分类数据传送类指令数据传送类指令 2929数学运算类指令数学运算类指令 2424逻辑运算类指令逻辑运算类指令 2424控制转移类指令控制转移类指令 1717位操作指令位操作指令 1717111111条指令条指令按指令长度分类按指令长度分类单字节指令单字节指令双字节指令双字节指令三字节指令三字节指令指令执行时间指令执行时间1212个振荡周期个振荡周期 64642424个振荡周
2、期个振荡周期 45454848个振荡周期个振荡周期 2 2指令格式指令格式标号:操作码标号:操作码 (目的操作数),(源操作数)(目的操作数),(源操作数) ;注释;注释指令的符号地址指令的符号地址由字母打头的字母数字串组成,长度一由字母打头的字母数字串组成,长度一般不超过般不超过6 6个符号个符号指令操作的性质指令操作的性质用规定的汇编语言助记符表示指令操作的对象3.2 寻址方式和寻址空间概念:概念:说明操作数所在的位置(地址),把操作数提取说明操作数所在的位置(地址),把操作数提取出来的方法出来的方法基本寻址方式:1 1、寄存器寻址、寄存器寻址2 2、直接寻址、直接寻址3 3、寄存器间接寻
3、址、寄存器间接寻址4 4、立即寻址、立即寻址5 5、相对寻址、相对寻址 6 6、变址寻址、变址寻址7 7、位寻址、位寻址一、寄存器寻址操作数操作数 通用寄存器的内容通用寄存器的内容表示符号表示符号 寄存器名称寄存器名称寻址范围寻址范围工作寄存器工作寄存器Rn(R0R7)寄存器寄存器ACC(累加器累加器A)寄存器寄存器B,DPTR,位寄存器,位寄存器Cy880C52片内数据片内数据RAM 位寻址区R7R0 3组R7R0 2组R7R0 1组R7R0 0组20H18H10H08H00H寄寄存存器器30H7FH80HFFH特殊特殊功能功能寄存寄存器器( (SFR) )RAM64KBFFFFH0000H
4、片内数据存储器片外数据存储器ACCDPTRB二、直接寻址操作数操作数 指令中直接地址的内容指令中直接地址的内容寻址范围:1、内部数据、内部数据RAM的低的低128个字节单元个字节单元2、特殊功能寄存器、特殊功能寄存器3、位地址空间、位地址空间通用符号:通用符号:direct1080C52片内数据片内数据RAM 位寻址区位寻址区R7R0 3组R7R0 2组R7R0 1组R7R0 0组20H18H10H08H00H寄寄存存器器30H7FH80HFFH特殊特殊功能功能寄存寄存器器( (SFR) )RAM64KBFFFFH0000H片内数据存片内数据存储储器器片外数据存片外数据存储储器器三、寄存器间接
5、寻址方式指令指定的寄存器内容为操作数地址指令指定的寄存器内容为操作数地址间址寄存器间址寄存器 R0, ,R1, ,DPTR, ,SP寻址范围寻址范围1、内部、内部RAM的低的低128字字节节( (00H7FH) ) R0, R1 (Ri ,i=0,1)2、外部、外部RAM的的64KB( (0000HFFFFH) ) DPTR, R0, R1符号符号 寄存器名寄存器名3、堆栈区、堆栈区 SPSP为间址寄存器为间址寄存器1280C52片内数据片内数据RAM 位寻址区R7R0 3组R7R0 2组R7R0 1组R7R0 0组20H18H10H08H00H寄寄存存器器30H7FH80HFFH特殊特殊功能
6、功能寄存寄存器器( (SFR) )RAM64KBFFFFH0000H片内数据存片内数据存储储器器片外数据存片外数据存储储器器四、立即寻址方式指令直接给出操作数,操作数为指令直接给出操作数,操作数为8 8位或位或1616位位二进制数,称立即数二进制数,称立即数寻址范围程序存储器中的立即数程序存储器中的立即数通用符号通用符号: :#data (8位),位),#data16( (16位)位)五、相对寻址方式以以PC当前值为基址,加上指令中给出的偏当前值为基址,加上指令中给出的偏移量(移量(rel)形成有效的程序转移地址。)形成有效的程序转移地址。控制转移类指令控制转移类指令转移范围: :以以PC当前
7、值为起始地址,相对当前值为起始地址,相对偏移在偏移在+127 -128个字节单元之间。个字节单元之间。偏移量偏移量rel 八位二进制补码八位二进制补码1005H: :JC 80H执行过程:执行过程:读指令,完成后读指令,完成后 (PC)=(PC)+2如如 C=1,则,则 (PC)=(PC)+rel 转移至转移至 1007H-80H=0F87H 单元单元如如C=0 则执行则执行1007H单元中的指令单元中的指令后向后向128个个单单元元前向前向127个个单单元元1005H 40H1006H 80H1007H 0F87H1086H六、变址间接寻址基址寄存器内容加上间址寄存器内容(地址偏基址寄存器内
8、容加上间址寄存器内容(地址偏移量)为有效地址移量)为有效地址基址寄存器: :PC, ,DPTR变址寄存器:A寻址范围:程序存储器寻址范围:程序存储器例:例: MOVC A, ,A+DPTR 设设 A=11H DPTR=02F1H操作数地址为为 02F1H+11H=0302H操作:操作:( (0302H) )A七、位寻址MCS-51设有独立的位处理器,位地址一般用直接位地设有独立的位处理器,位地址一般用直接位地址方式给出,可归入直接寻址方式址方式给出,可归入直接寻址方式寻址范围: 位寻址内部位寻址内部RAM 128位位 可位寻址的可位寻址的SFR 82位位位地址的表示方式:1 1、直接地址(位地
9、址)、直接地址(位地址)2 2、位名称、位名称3 3、第几单元第几位,寄存器名、第几单元第几位,寄存器名+ +位位4 4、用伪指令指定的符号地址、用伪指令指定的符号地址通用符号 bit例:例: PSW中中F0(用户标志)可表示如下:(用户标志)可表示如下:D5HF0PSW.5AF( (AF EQU F0) )193.3 指令系统3.3.1 数据传送类指令按操作方式,分为三种:按操作方式,分为三种: 数据传送数据传送数据交换数据交换栈操作栈操作一、普通传送类指令格式:MOV (目的操作数),(源操作数)操作码助记符操作码助记符操作:将源操作数单元内容,传送到目的操作数单元中,源操作数内容不变。不
10、影响标志位Cy,AC和OV。操作数的组合关系1、立即数的传送MOV A, #data(A)#dataMOV Rn, #data (Rn)#dataMOV Ri, #data(Ri)#dataMOV direct, #data(direct)#dataMOV DPTR, #data16(DPTR)#data说明:a、MOV A,#data将将8位立即数送入累加器位立即数送入累加器A中中例:例:MOV A,#80H 操作结果:操作结果: (A)= 80Hb、 、MOV Rn, ,#data n=07将将8位立即数送入工作寄存器位立即数送入工作寄存器Rn中中例:例:MOV R4, ,#80H操作结果
11、:操作结果: (R4)= 80Hc、 、MOV Ri, #data将8位立即数送入由Ri指定的地址单元中,i=0,1。Ri中的地址中的地址为为00H7FH( (8051) )00HFFH( (8052) )注:仅寻址内部注:仅寻址内部RAM,不能寻址,不能寻址SFR例:例:MOV R0,#32H 设设 (R0)=70H , (70H)=11H执行结果:(70H)=32Hd: :MOV direct, ,#data将将8位立即数送入由位立即数送入由direct直接寻址的地直接寻址的地址单元中。址单元中。direct:00HFFH,8位二进制地址码 寻址内部RAM(00H7FH)及SFR例:例:M
12、OV 70H, ,#70H MOV P0, ,#70H MOV 80H, ,#70He: :MOV DPTR, ,#data唯一的16位数据传送指令,把16位立即数送入DPTR中例:例:MOV DPTR, ,#2034H执行结果:( (DPH) )=20H ( (DPL) )=34H2、内部数据存储器与累加器A传送数据MOV A, direct(A)(direct)MOV direct, A(A)(direct)MOV A, Rn(A)(Rn)MOV Rn, A(A)(Rn)MOV A, Ri(A)(Ri)MOV Ri, A(Ri)(A)寻址方式的组合例:例:MOV R1, ,#82H MOV
13、 A, ,R180C51指令错误指令错误因为因为82H是是DPL的地址值,对于的地址值,对于SFR,不,不能使用间接寻址方式能使用间接寻址方式正确指令:正确指令:MOV A, ,DPL 或或 MOV A, ,82H80C52 正确,寻址内部正确,寻址内部RAM3、内部数据存、内部数据存储储器中器中Rn、 、SFR和片内数据和片内数据RAM之之间间的数据的数据传传送送MOV direct,direct(direct目的目的)( (direct源)源)MOV direct, Rn(direct)(Rn)MOV Rn, direct(direct)(Rn)MOV direct, Ri(direct)
14、(Ri)MOV Ri, direct(Ri)(direct)例例1:设:设PSW中标志位中标志位RS1,RS0为为“11”,则选中第三组工作寄存器则选中第三组工作寄存器MOV 40H, ,R0MOV 40H, ,18H结果相同用立即寻址指令为片内用立即寻址指令为片内RAM中中20H,25H和和P1口上置数口上置数例例2: :MOV 20H, #25HMOV 25H, #10HMOV P1, #0CAH执行结果 ( (20H) )=25H,(,(25H) )=10H ( (P1) )=CAH将以上状态作为初值,执行以下程序,将以上状态作为初值,执行以下程序,结果如何结果如何MOV R0, #20
15、HMOV A, R0MOV R1, AMOV B, R1MOV R1, P1MOV P3, P1(R0)=20H(A)=(R0)=(20H)=25H(R1)=(A)=25H(B)=(R1)=(25H)=10H(R1)=P1 (25H)=CAHP3=P1=CAH(A)=?(R1)=?(B)=?(25H)=?(P3)=?(P1)=?(20H)=?25H25H10HCAHCAHCAH25H二、外部数据存储器的数据传送指令二、外部数据存储器的数据传送指令只能只能间接寻址间接寻址,且只能与,且只能与累加器累加器A进行数据传送进行数据传送格式:MOVX (目的操作数),(源操作数)MOVX A, DPTR
16、(A)(DPTR)MOVX DPTR, A(DPTR)(A)MOVX A, Ri(A)(Ri)MOVX Ri, A(Ri)(A)例:例: 若片外数据存储单元中,(若片外数据存储单元中,(3007H)=60HMOV DPTR, #3007HMOVX A, DPTR结果:结果:(A)=60H使用使用Ri作间址寄存器,此时需用作间址寄存器,此时需用P2口输出高口输出高八位地址,应事先预置八位地址,应事先预置P2,Ri的值的值以下程序功能与上例相同:以下程序功能与上例相同:MOV P2 , #30HMOV R0 , #07HMOVX A, R0三、程序存储器向累加器三、程序存储器向累加器A A传送指令
17、传送指令MOVCMOVCMOVC A , A+PC(PC)(PC)+1(A)(A)+(PC)MOVC A, A+DPTR(A)(A)+(DPTR) ))功能:把A中内容与基址寄存器(PC,DPTR)内容相加,求得程序存储器某单元地址,再将该地址单元内容送累加器A8位无符号位无符号整数整数说明:说明:1、以、以PC作为基址寄存器,因为作为基址寄存器,因为PC值不能任意更值不能任意更改,所以查表范围为改,所以查表范围为PC当前值开始后的当前值开始后的256字节。字节。偏移量计算式:偏移量计算式:DIS=表首地址(该指令所在地址表首地址(该指令所在地址+1)2、以、以DPTR作为基址寄存器,因为作为
18、基址寄存器,因为DPTR的内的内容可以通过赋值改变,使表格可以设置在容可以通过赋值改变,使表格可以设置在64KB程序存储器的任意地址空间。程序存储器的任意地址空间。例例1:编制根据累加器:编制根据累加器A中的数(中的数(09)查其平方表的)查其平方表的子程序。子程序。COUNT:PUSH DPH; 保护保护DPTR内容内容 PUSH DPL; MOV DPTR,#TABLE ;赋表首地址给;赋表首地址给DPTR MOVC A, A+DPTR ; 根据根据A中内容查表中内容查表 POP DPL; 恢复恢复DPTR内容内容 POP DPH RET; 返回主程序返回主程序 ORG 1000HTABL
19、E: :DB 00 DB 01 DB 04 DB 09 DB 16 DB 25 DB 36 DB 49 DB 64 DB 81DB:伪指令,作用是:伪指令,作用是把其后的值存入由标把其后的值存入由标号开始的连续单元中号开始的连续单元中例例2:编子程序根据:编子程序根据A中二进制数查其中二进制数查其ASCII码码BITOASC: : ADD A, ,#02HMOVC A, A+PCSJMP BARETDB 30H, 31H, 32H, 33HDB 34H, 35H, 36H, 37HDB 38H, 39H, 41H, 42HDB 43H, 44H, 45H, 46HRETTABLE:BARET:
20、;加偏移量调整;加偏移量调整;查表;查表;返回主程序;返回主程序四、数据交换指令1、字节交换指令XCH A, RnXCH A, directXCH A, Ri (A) (Rn) (A) (direct) (A) (Ri) 例:例:设设( (R0) )=20H,(,(A) )=3FH,(,(20H) )=75H执行指令:执行指令:XCH A, ,R0执行结果执行结果:( (A) )=75H,(,(20H) )=3FH2、半字节交换指令XCHD A, Ri (A30) (Ri)30)常用于常用于BCD码处理码处理例:例:设设( (R1) )=30H,(,(A) )=67H,(,(30H) )=84
21、H执行指令:执行指令:XCHD A, R1执行结果执行结果:( (A) )=64H ( (30H) )=87H3、累加器A高4位与低4位内容互换指令SWAP A ;(;( A 47) ) ( (A 03) )例:例:设设( (A) )=0CAH执行指令:执行指令:SWAP A执行结果执行结果:( (A) )=0ACH5、堆栈操作类指令PUSH direct( (SP) ) ( (SP) )+1 (SP) (direct)POP direct(direct) (SP) (SP) (SP)-1要点:入栈操作,先执行要点:入栈操作,先执行SP+1,再入栈,再入栈 出栈操作,先出栈,再执行出栈操作,先
22、出栈,再执行SP-1例:在中断响应时,(例:在中断响应时,(SP)=09H,数据指针,数据指针DPTR的内容为的内容为0123H执行以下指令:执行以下指令:PUSH DPLPUSH DPH(SP)+1,使(,使(SP)=0AH(DPL)压入)压入0AH单元单元(SP)+1,(,(SP)=0BH(DPH)压入)压入0BH单元单元执行结果:执行结果: ( (0AH) )=23H( (0BH) )=01H( (SP) )=0BH堆栈操作需遵循先入后出,后入先出原则,堆栈操作需遵循先入后出,后入先出原则,才能保持原单元内容不变才能保持原单元内容不变例:例:设设( (DPTR) )=0123HPUSH
23、DPHPUSH DPL.POP DPLPOP DPH执行结果执行结果:(DPTR)=0123H如执行:PUSH DPHPUSH DPLPOP DPHPOP DPL执行结果:执行结果:( (DPTR) )=2301H3.3.2 算术运算类指令类型:加,减,乘,除,增量、减量以及二类型:加,减,乘,除,增量、减量以及二十进制调整指令十进制调整指令ADD、ADDC、SUBB指令的执行将影响标指令的执行将影响标志位(志位(PSW中的中的OV,Cy,AC及及P)要求掌握要求掌握指令的操作结果指令的操作结果对标志位的影响对标志位的影响一、加法指令一、加法指令ADD 目的操作数目的操作数 累加器累加器A 源
24、操作数源操作数 4种寻址方式种寻址方式ADD A,Rn (A) (A)+(Rn) ADD A,direct (A) (A)+(direct)ADD A,Ri (A) (A)+(Ri)ADD A,#data (A) (A)+#data运算均针对无符号二进制数进行,但结合运算均针对无符号二进制数进行,但结合OV标志标志可实现有符号数运算。可实现有符号数运算。结果将影响结果将影响OV,Cy,AC,P标志标志A源源+A当最高位有进位,当最高位有进位,Cy=1位位3向位向位4有进位,有进位,AC=1OV取决于取决于6、7两位的进位情况,同时两位的进位情况,同时有进位或无进位,则有进位或无进位,则OV=0
25、;只有一位;只有一位有进位,有进位,OV=1A中有偶数个中有偶数个1,P=0;否则,;否则,P=1例:设(例:设(A)=0C3H,(,(R0)=0AAH 执行指令:执行指令:ADD A,R0 写出执行结果及对标志位影响写出执行结果及对标志位影响 (A) 1 1 0 0 0 0 1 1 + (R0) 1 0 1 0 1 0 1 0 0 1 1 0 1 1 0 1C=1AC=0OV=1P=1(A)=6DH只对有符号数运算有只对有符号数运算有意义。两负数相加,意义。两负数相加,结果为正数,溢出结果为正数,溢出例:设(例:设(A)=0C3H,(,(R0)=0AAH 执行指令:执行指令:ADD A,R0
展开阅读全文