第3章 指令系统.ppt
《第3章 指令系统.ppt》由会员分享,可在线阅读,更多相关《第3章 指令系统.ppt(151页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、课程主讲人:第第3章章 指令系统指令系统2 2第第3章章 8051指令系统与指令系统与 编程基础编程基础 23 3第第3章章 8051指令系统与编程基础指令系统与编程基础3.1 3.1 指令系统概述指令系统概述3.2 3.2 指令格式指令格式3.3 3.3 指令系统的寻址方式指令系统的寻址方式3.4 3.4 80518051指令系统分类介绍指令系统分类介绍 3.4.1 3.4.1 数据传送类指令数据传送类指令 3.4.2 3.4.2 算术运算类指令算术运算类指令 3.4.3 3.4.3 逻辑操作类指令逻辑操作类指令 3.4.4 3.4.4 控制跳转类指令控制跳转类指令 3.4.5 3.4.5
2、位操作类指令位操作类指令3.5 3.5 80518051指令系统汇总指令系统汇总3.6 3.6 某些指令的说明某些指令的说明3.7 3.7 80518051汇编语言程序设计基础汇编语言程序设计基础4 4 3.7.1 3.7.1 编程语言概述编程语言概述 3.7.2 3.7.2 汇编语言语句和格式汇编语言语句和格式 3.7.3 3.7.3 伪指令伪指令 3.7.4 3.7.4 汇编语言源程序的汇编汇编语言源程序的汇编3.8 3.8 80518051汇编语言程序设计举例汇编语言程序设计举例 3.8.1 3.8.1 子程序的设计子程序的设计 3.8.2 3.8.2 查表程序设计查表程序设计 3.8.
3、3 3.8.3 分支转移程序设计分支转移程序设计 3.8.4 3.8.4 循环程序设计循环程序设计5 5内容概要内容概要凡是凡是8051内核的单片机均使用内核的单片机均使用8051的汇编语言指令系统。的汇编语言指令系统。介绍指令系统介绍指令系统寻寻址方式址方式对对111111条条基本指令基本指令按功能分类详细讲解按功能分类详细讲解。指令指令-是是CPUCPU按照人们的意图来完成某种操作的命令,它以英文名称或缩按照人们的意图来完成某种操作的命令,它以英文名称或缩写形式作为写形式作为助记符助记符。汇编语言指令汇编语言指令-用助记符、符号地址、标号等表示的书写程序的语言。用助记符、符号地址、标号等表
4、示的书写程序的语言。熟知并掌握熟知并掌握8051指令系统的各类指令是指令系统的各类指令是AT89S51/52单片机汇编语言源程序单片机汇编语言源程序的设计基础。的设计基础。6 63.1 3.1 指令系统概述指令系统概述简明、易掌握、效率较高的指令系统简明、易掌握、效率较高的指令系统,复杂指令集复杂指令集。按按所占字节分所占字节分,分,分三种三种:(1 1)单字节指令)单字节指令4949条;条;(2 2)双字节指令)双字节指令4545条;条;(3 3)三字节指令)三字节指令1717条。条。按按执行时间来分执行时间来分,分三种:,分三种:(1 1)1 1个个机器周期(机器周期(1212个时钟振荡周
5、期)的指令个时钟振荡周期)的指令6464条条;(2 2)2 2个个机器周期指令机器周期指令4545条条;(3 3)4 4个个机器周期机器周期乘、除指令乘、除指令。67 712MHz12MHz晶振,每个机器周期为晶振,每个机器周期为1 1s s。AT89S52AT89S52一大特点一大特点是在硬件结构中有一个是在硬件结构中有一个位处理机位处理机,一个处理一个处理位变量位变量的的指指令子集令子集。3.2 3.2 指令格式指令格式 指令格式指令格式:指令的表示方法。指令的表示方法。指令通常由指令通常由两部分两部分组成:组成:操作码操作码和和操作数操作数。操作码操作码指令进行什么指令进行什么操作操作。
6、操作数操作数指令操作的指令操作的对象对象。可能是一具体数据,也可能是指出到哪里取。可能是一具体数据,也可能是指出到哪里取得数据的地址或符号。得数据的地址或符号。指令长度不同,格式也就不同。指令长度不同,格式也就不同。78 8(1 1)单字节指令:操作码和操作数同在一个字节中。)单字节指令:操作码和操作数同在一个字节中。(2 2)双字节指令:一个字节为操作码,另一个字节是操作数)双字节指令:一个字节为操作码,另一个字节是操作数。(3 3)三字节指令:操作码占一个字节,操作数占二个字节)三字节指令:操作码占一个字节,操作数占二个字节。3.3 3.3 指令系统的寻址方式指令系统的寻址方式寻址方式寻址
7、方式在指令中说明操作数所在地址的方法。在指令中说明操作数所在地址的方法。一般说,寻址方式越多,功能就越强,灵活性则越大,指令系统就越复杂一般说,寻址方式越多,功能就越强,灵活性则越大,指令系统就越复杂。寻址方式所要解决的主要问题寻址方式所要解决的主要问题就是如何在整个存储器和寄存器的寻址空间就是如何在整个存储器和寄存器的寻址空间内快速地内快速地找到指定的地址单元找到指定的地址单元。下面介绍指令系统下面介绍指令系统7 7种种寻址方式。寻址方式。89 91 1寄存器寻址方式寄存器寻址方式指令中的操作数为某一寄存器的内容。指令中的操作数为某一寄存器的内容。 例如:例如:MOVMOVA A,R Rn
8、n ;(R(Rn n) )A A,n n =0=07 7把把R Rn n中的源操作数送入到累加器中的源操作数送入到累加器A A中。由于指令指定了从寄存器中。由于指令指定了从寄存器R Rn n中取得中取得源操作数,所以称为寄存器寻址方式。源操作数,所以称为寄存器寻址方式。2 2直接寻址方式直接寻址方式指令中直接给出操作数的单元地址,该单元地址中的内容就是操作数,直指令中直接给出操作数的单元地址,该单元地址中的内容就是操作数,直接的操作数单元地址用接的操作数单元地址用“directdirect”表示。表示。例如:例如: MOVMOVA A,directdirect “directdirect”就是
9、操作数的单元地址就是操作数的单元地址。91010 例如:例如: MOVMOV A A,40H40H 表示把内部表示把内部RAM 40HRAM 40H单元(单元(directdirect)的内容传送到)的内容传送到A A。指令中。指令中源操作数(源操作数(右边的操作数)采用的是右边的操作数)采用的是直接寻址方式直接寻址方式。 指令中两个操作数都可由直接寻址方式给出指令中两个操作数都可由直接寻址方式给出。 例如:例如: MOVMOVdirect1direct1,direct2direct2 具体指令:具体指令:MOV 42HMOV 42H,62H62H 把片内把片内RAMRAM中中62H62H单元
10、的内容送到片内单元的内容送到片内RAMRAM中的中的42H42H单元中单元中。直接寻址直接寻址是访问片内所有特殊功能寄存器的是访问片内所有特殊功能寄存器的唯一寻址方式。唯一寻址方式。1011113. 3. 寄存器间接寻址方式寄存器间接寻址方式寄存器中存的是寄存器中存的是操作数地址操作数地址,即先从寄存器中找到操作数的地址,再按该,即先从寄存器中找到操作数的地址,再按该地址找到操作数。地址找到操作数。为了区别寄存器寻址和寄存器间接寻址,在寄存器间接寻址方式中,应在为了区别寄存器寻址和寄存器间接寻址,在寄存器间接寻址方式中,应在寄存器名称前面加寄存器名称前面加前缀标志前缀标志“ ”。例如:例如:M
11、OV AMOV A,RRi i ;i i=0=0或或1 1其中,其中, R Ri i的内容为的内容为40H40H,即把,即把内部内部RAM 40HRAM 40H地址单元中的内容传送给地址单元中的内容传送给A A。1112124 4立即数寻址方式立即数寻址方式直接在指令中给出操作数直接在指令中给出操作数也称也称立即数立即数。为了与直接寻址指令中的直接。为了与直接寻址指令中的直接地址加以区别,地址加以区别,需在操作数前加前缀标志需在操作数前加前缀标志“# #”。例如:例如: MOV AMOV A,#40H#40H第一个字节是操作码,第二字节是立即数第一个字节是操作码,第二字节是立即数,就是放在程序
12、存储器内的常数就是放在程序存储器内的常数。1213135 5基址寄存器加变址寄存器间址寻址方式基址寄存器加变址寄存器间址寻址方式以以DPTRDPTR或或PCPC作为作为基址寄存器基址寄存器,以累加器,以累加器A A作为作为变址寄存器变址寄存器,以两者内容相,以两者内容相加形成的加形成的1616位地址作为目的地址进行寻址。例如指令:位地址作为目的地址进行寻址。例如指令: MOVCMOVCA A,A+DPTRA+DPTR 其中,其中,(A A)=05H=05H,(DPTRDPTR)=0400H=0400H,指令执行结果是把程序存储器,指令执行结果是把程序存储器0405H0405H单元的内容传送给单
13、元的内容传送给A A。本寻址方式的本寻址方式的指令有指令有3 3条条:MOVCMOVCA A,A+DPTRA+DPTRMOVCMOVCA A,A+PCA+PCJMPJMPA A,A+DPTRA+DPTR前两条指令适用于读程序存储器中固定的数据。前两条指令适用于读程序存储器中固定的数据。例如,例如,将固定的、按将固定的、按131414一定顺序排列的一定顺序排列的表格表格存放在程序存储器中,在程序运行中由存放在程序存储器中,在程序运行中由A A的动态参量的动态参量来确定读取对应的表格参数来确定读取对应的表格参数。第第3 3条为条为散转指令散转指令,A A中内容为程序运行后的动态结果,可根据中内容为
14、程序运行后的动态结果,可根据A A中不同内中不同内容,实现跳向不同程序入口的跳转。容,实现跳向不同程序入口的跳转。6 6相对寻址方式相对寻址方式解决程序转移。解决程序转移。该该寻址是以该转移指令的地址(寻址是以该转移指令的地址(PCPC值)加上它的字节数值)加上它的字节数,再加上,再加上相对偏移量(相对偏移量(relrel),),形成形成新的转移目的地址新的转移目的地址,从而程序转,从而程序转移到该目的地址。转移的目的地址移到该目的地址。转移的目的地址用下式计算:用下式计算: 目的地址目的地址= =转移指令所在的地址转移指令所在的地址+ +转移指令字节数转移指令字节数+rel+rel1515其
15、中,其中,偏移量偏移量relrel是带符号是带符号8 8位二进制补码数位二进制补码数,128128+127+127。程序转移范围程序转移范围是以转移指令的是以转移指令的下条指令首地址下条指令首地址为基准地址,相对偏移在为基准地址,相对偏移在128128+127+127之间。之间。例如,例如, SJMP rel SJMP rel程序要转移到该指令的程序要转移到该指令的PCPC值加值加3 3再加上再加上relrel的目的地址处。编写程序时,只的目的地址处。编写程序时,只需在转移指令中直接写要转向的地址标号。需在转移指令中直接写要转向的地址标号。例如:例如: SJMP LOOPSJMP LOOP“L
16、OOPLOOP” 为目的地址标号。汇编时,由汇编程序自动计算和填入偏移量。为目的地址标号。汇编时,由汇编程序自动计算和填入偏移量。但手工汇编时,偏移量的值但手工汇编时,偏移量的值由由手工计算。手工计算。1516167 7位寻址方式位寻址方式 对内部对内部RAMRAM和特殊功能寄存器具有位寻址功能的某位内容进行置和特殊功能寄存器具有位寻址功能的某位内容进行置1 1和清和清0 0操操作。作。位地址一般以位地址一般以直接位地址直接位地址给出,位地址符号为给出,位地址符号为“bitbit”。例如:例如:MOV CMOV C,bitbit 其具体指令:其具体指令: MOV CMOV C,40H40H把位
17、地址为把位地址为40H40H的值送到进位位的值送到进位位C C。由于由于AT89S52AT89S52具有位处理功能,可直接对数据位方便地实现置具有位处理功能,可直接对数据位方便地实现置1 1、清、清0 0、求、求反、传送、判跳和逻辑运算等操作,为测控系统的应用提供了最佳代反、传送、判跳和逻辑运算等操作,为测控系统的应用提供了最佳代码和速度,增强了实时性。码和速度,增强了实时性。1617177 7种寻址方式种寻址方式已介绍完毕。已介绍完毕。问题:问题:当一条指令给定后,如何来确定该指令的寻址方式?当一条指令给定后,如何来确定该指令的寻址方式?例如例如: : MOV MOV A A,#40H#40
18、H,属于立即数寻址还是寄存器寻址?,属于立即数寻址还是寄存器寻址?要看以哪个操作数要看以哪个操作数作为参照系作为参照系。操作数分为操作数分为源操作数源操作数和和目的操作数目的操作数。对于。对于源操作数源操作数“#40H#40H”来说,是来说,是“立即数寻址立即数寻址”方式,但对方式,但对目的操作数目的操作数“A A”来说,是属于来说,是属于“寄存器寻寄存器寻址址”方式。方式。一般而言,一般而言,寻址方式指的是寻址方式指的是源操作数源操作数,所以此例为立即数寻址方式。,所以此例为立即数寻址方式。对指令系统对指令系统7 7种寻址方式种寻址方式总结,概括总结,概括见见表表3-13-1。1718181
19、8表表3-1 3-1 7 7种寻址方式及其寻址空间种寻址方式及其寻址空间19193.4 80513.4 8051指令系统分类介绍指令系统分类介绍共共111111条条指令,按功能分为指令,按功能分为五类五类:(1 1)数据传送类()数据传送类(2828条)条)(2 2)算术运算类()算术运算类(2424条)条)(3 3)逻辑操作类()逻辑操作类(2525条)条)(4 4)控制转移类()控制转移类(1717条)条)(5 5)位操作类()位操作类(1717条)条)先简单介绍指令先简单介绍指令用到用到的符号。的符号。Rn 当前寄存器区的当前寄存器区的8个工作寄存器个工作寄存器R0R7(n=07)。Ri
20、 当前寄存器区中作为间接寻址寄存器的当前寄存器区中作为间接寻址寄存器的2个寄存器个寄存器R0、R1(i=0,1)。19202020directdirect直接地址,即8位内部数据存储器单元或特殊功能寄存器的地址。#data#data指令中的8位立即数。#data16#data16指令中的16位立即数。relrel偏移量,8位的带符号补码数。DPTRDPTR数据指针,可用作16位数据存储器单元地址的寄存器。bitbit内部RAM或特殊功能寄存器中的直接寻址位。C C或或CyCy进位标志位或位处理机中的累加器。addr11addr1111位目的地址。addr16addr1616位目的地址。 间接寻
21、址寄存器前缀,如Ri,A+DPTR。( () )表示地址单元或寄存器中的内容。()表示以单元或寄存器中的内容作为地址间接寻址单元的内容。箭头右边的内容被箭头左边的内容所取代。21213.4.1 3.4.1 数据传送类指令数据传送类指令使用最频繁使用最频繁。一般数据传送类指令的助记符为。一般数据传送类指令的助记符为“MOVMOV”,通用格式通用格式如下:如下: MOV MOV , 数据传送类指令是数据传送类指令是把把源操作数源操作数传送传送到到目的操作数目的操作数。指令执行。指令执行之之后,源操作后,源操作数不改变,目的操作数修改为源操作数。所以数据传送类操作属数不改变,目的操作数修改为源操作数
22、。所以数据传送类操作属“复制复制”性质,性质,而不是而不是“搬家搬家”。本本类指令类指令不影响标志位不影响标志位: :CyCy、AcAc和和OVOV,但,但不包括不包括奇偶标志位奇偶标志位P P。2122221以累加器为目的操作数的指令以累加器为目的操作数的指令MOVA,Rn; (Rn)A,n =07MOVA, R Ri i ; (R Ri i)A i =0,1MOVA,direct ; (direct)AMOVA,#data ; #dataA把源操作数内容送累加器把源操作数内容送累加器A,源操作数源操作数有寄存器寻址、直接寻址、间接寻有寄存器寻址、直接寻址、间接寻址和立即数寻址等方式,例如:
23、址和立即数寻址等方式,例如:MOVA,R6;(R6)A,寄存器寻址,寄存器寻址MOVA,R0;(R0)A,间接寻址,间接寻址MOVA,70H ;(70H)A,直接寻址,直接寻址MOVA,#78H;78HA,立即数寻址,立即数寻址2223232 2以以RnRn为目的操作数的指令为目的操作数的指令MOV MOV Rn ,A A ;(A)(A)Rn ,n n =0=07 7MOV MOV Rn ,direct direct ;(direct)(direct)Rn ,n n =0=07 7MOV MOV Rn ,#data#data;#data#dataRn ,n n =0=07 7把源操作数送入当前
24、寄存器区的把源操作数送入当前寄存器区的R0R0R7R7中的某一寄存器。中的某一寄存器。3 3以直接地址以直接地址directdirect为目的操作数的指令为目的操作数的指令MOV directMOV direct,A A ; (A)(A)directdirectMOV directMOV direct,Rn ; ( (Rn) )directdirect,n n =0=07 7MOV direct1MOV direct1,direct2 direct2 ;(direct2)(direct2)direct1direct1MOV directMOV direct, Ri ; (Ri)directdi
25、rect,i i =0=0,1 1MOV directMOV direct,#data #data ; #data#datadirectdirect232424把源操作数送入直接地址指定的存储单元。把源操作数送入直接地址指定的存储单元。directdirect指的是内部指的是内部RAMRAM或或SFRSFR地址。地址。4 4以寄存器间接地址为目的操作数的指令以寄存器间接地址为目的操作数的指令MOVMOVRRi i,A A ;(A)(A)(R(Ri i), i i=0=0,1 1MOVMOVRRi i,direct direct ;(direct)(direct)(R(Ri i),i i=0=0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第3章 指令系统
限制150内