第三章MCS-51指令系统及汇编语言程序设计.ppt
《第三章MCS-51指令系统及汇编语言程序设计.ppt》由会员分享,可在线阅读,更多相关《第三章MCS-51指令系统及汇编语言程序设计.ppt(115页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、3.1 MCS-51指令系统简介指令系统简介3.2 MCS-51指令系统的寻址方式指令系统的寻址方式3.3 MCS-51指令系统及一般说明指令系统及一般说明3.4 汇编语言程序设计汇编语言程序设计 教学目的和要求教学目的和要求 本章主要介绍本章主要介绍MCS-51MCS-51系列单片机的寻址系列单片机的寻址方式指令系统及汇编语言程序设计。寻址方方式指令系统及汇编语言程序设计。寻址方式和指令系统是学习和使用单片机的基础和式和指令系统是学习和使用单片机的基础和工具,是必须掌握的重要内容。工具,是必须掌握的重要内容。51指指令令系系统统简简介介v MCS-51 MCS-51指令系统简介指令系统简介
2、MCS-51MCS-51的基本指令共的基本指令共111111条,其中单字节指令条,其中单字节指令4949条双字节指条双字节指令令4545条,三字节指令条,三字节指令1717条。条。 从指令的执行时间来看,单机器周期从指令的执行时间来看,单机器周期(12(12个时钟振荡周期个时钟振荡周期) )指指令令6464条,双机器周期条,双机器周期(24(24个时钟振荡周期个时钟振荡周期) )指令指令4545条,只有乘、除条,只有乘、除两条指令的执行时间为两条指令的执行时间为4 4个机器周期个机器周期(48(48个时钟振荡周期个时钟振荡周期) )。 MCS-51MCS-51的指令系统按指令功能划分可分为五大
3、类:的指令系统按指令功能划分可分为五大类: 数据传送类数据传送类 算术运算类算术运算类 逻辑运算类逻辑运算类 控制转移类控制转移类 位操作类位操作类指指令令系系统统的的寻寻址址方方式式v MCS-51MCS-51指令系统的寻址方式指令系统的寻址方式 所谓寻址方式是指所谓寻址方式是指CPUCPU用何种方式寻找参与运算的操作数或操用何种方式寻找参与运算的操作数或操作数地址的方法。作数地址的方法。MCS-51MCS-51采用了采用了7 7种寻址方式种寻址方式 寄存器寻址寄存器寻址 直接寻址直接寻址 寄存器间接寻址寄存器间接寻址 立即寻址立即寻址 基址寄存器加变址寄存器间址寻址基址寄存器加变址寄存器间
4、址寻址 相对寻址相对寻址 位寻址位寻址 指指令令系系统统的的寻寻址址方方式式指指令令系系统统的的寻寻址址方方式式 寄存器寻址寄存器寻址 寄存器寻址方式可用于访问选定寄存器区的寄存器寻址方式可用于访问选定寄存器区的8 8个工作寄存器个工作寄存器R0R0R7R7。由指令操作码的低。由指令操作码的低3 3位指示所用的寄存器,寄存器位指示所用的寄存器,寄存器A A、B B、DPTRDPTR和和C C位位( (位处理机的累加器位处理机的累加器) )也可作为寻址的对象。也可作为寻址的对象。 在这种寻址方式中,被寻址寄存器中的内容就是操作数。在这种寻址方式中,被寻址寄存器中的内容就是操作数。例如例如 MOV
5、 AMOV A,Rn(nRn(n07) ) 表示把寄存器表示把寄存器RnRn的内容传送给累加器的内容传送给累加器A A,其中源操作数就是,其中源操作数就是RnRn的内容。的内容。 指指令令系系统统的的寻寻址址方方式式例如例如 MOV AMOV A,R7 R7 ;机器码为;机器码为EFH EFH 该指令功能是把寄存器该指令功能是把寄存器R7R7的内容送给累加器的内容送给累加器A A。 指指令令系系统统的的寻寻址址方方式式 直接寻址直接寻址 直接寻址是访问特殊功能寄存器的唯一方法。它也用于访问直接寻址是访问特殊功能寄存器的唯一方法。它也用于访问内部内部RAM(RAM(低低128128个字节个字节)
6、 )。 采用直接寻址方式的指令是双字节指令,其中第一个字节是采用直接寻址方式的指令是双字节指令,其中第一个字节是操作码,第二个字节是内部操作码,第二个字节是内部RAMRAM或特殊功能寄存器的直接地址。或特殊功能寄存器的直接地址。例如例如 MOV AMOV A,3FH3FH 表示把内部表示把内部RAM 3FHRAM 3FH单元的内容传送给单元的内容传送给A A 指指令令系系统统的的寻寻址址方方式式 寄存器间接寻址寄存器间接寻址 寄存器间接寻址方式可用于访问内部寄存器间接寻址方式可用于访问内部RAMRAM或外部数据存储器。或外部数据存储器。 这种寻址方式是由指令指定某一寄存器的内容作为操作数的这种
7、寻址方式是由指令指定某一寄存器的内容作为操作数的地址。地址。例如例如 MOV AMOV A,RiRi ;(;(i i0 0或或1 1),),其中其中( (Ri)=40HRi)=40H 这条指令表示从这条指令表示从RiRi中找到源操作数所在单元的地址中找到源操作数所在单元的地址,把该地把该地址中的内容传送给址中的内容传送给A A。即把内部。即把内部RAMRAM中中40H40H单元的内容送到累加器单元的内容送到累加器A A中。中。指指令令系系统统的的寻寻址址方方式式 访问外部数据存储器,还可用数据指针访问外部数据存储器,还可用数据指针DPTRDPTR作为间址寄存作为间址寄存器,器,DPTRDPTR
8、是是1616位寄存器,故它可对整个外部数据存储器空间位寄存器,故它可对整个外部数据存储器空间(64K)(64K)寻址。寻址。例如例如 MOVX AMOVX A,DPTRDPTR 把数据指针把数据指针DPTRDPTR所指的某一外部存储单元的内容送给累加所指的某一外部存储单元的内容送给累加器器A A。立即寻址立即寻址 采用立即寻址方式的指令是双字节的。第一个字节是操作码,采用立即寻址方式的指令是双字节的。第一个字节是操作码,第二字节就是操作数。因此,操作数就是存放在程序存储器内的第二字节就是操作数。因此,操作数就是存放在程序存储器内的常数。常数。指指令令系系统统的的寻寻址址方方式式例如例如 MOV
9、 AMOV A,#5AH#5AH 表示把立即数表示把立即数5AH(5AH(应冠以前缀应冠以前缀# #号,以便与地址相区别号,以便与地址相区别) )送给累加器送给累加器A A。5AH5AH这个常数是指令代码的一部分。这个常数是指令代码的一部分。 指指令令系系统统的的寻寻址址方方式式基址寄存器加变址寄存器间址寻址基址寄存器加变址寄存器间址寻址 这种寻址方式用于访问程序存储器的一个单元,该单元的地这种寻址方式用于访问程序存储器的一个单元,该单元的地址是基址寄存器址是基址寄存器(DPTR(DPTR或或PC)PC)的内容与变址寄存器的内容与变址寄存器A A的内容之和。的内容之和。例如例如 MOVC AM
10、OVC A,A+DPTRA+DPTR 其中其中A A的原有内容为的原有内容为05H05H,DPTRDPTR的内容为的内容为4000H4000H,该指令执行,该指令执行的结果是把程序存储器的结果是把程序存储器4005H4005H单元的内容传送给累加器单元的内容传送给累加器A A。 指指令令系系统统的的寻寻址址方方式式 相对寻址相对寻址 相对寻址用于访问程序存储器,出现在相对转移指令中。相对寻址用于访问程序存储器,出现在相对转移指令中。 相对寻址是将程序计数器相对寻址是将程序计数器PCPC中的当前值与指令第二字节所中的当前值与指令第二字节所给出的数据(该数据也称为偏移量)相加,其和为跳转指令的给出
11、的数据(该数据也称为偏移量)相加,其和为跳转指令的转移地址。转移地址也称为转移目的地址。偏移量是一有符号转移地址。转移地址也称为转移目的地址。偏移量是一有符号数,其取值范围为数,其取值范围为-128-128+127+127。例如例如 SJMP 20HSJMP 20H 指令代码为指令代码为80H80H、20H20H两个字节。假设当前的值为指令所在两个字节。假设当前的值为指令所在地址地址 2100+2 2100+2 即即PC=2102HPC=2102H,则程序将转移到,则程序将转移到2122H2122H地址去执行。地址去执行。指指令令系系统统的的寻寻址址方方式式 位寻址位寻址 位寻址是指对片内位寻
12、址是指对片内RAMRAM的位寻址区(的位寻址区(2020H H2FH2FH)和可以位寻)和可以位寻址的专用寄存器进行位操作时的寻址方式。址的专用寄存器进行位操作时的寻址方式。 这种寻址方式在进行位操作时,借助于进位这种寻址方式在进行位操作时,借助于进位C C作为操作的位作为操作的位累加器,操作数直接给出该位的地址,然后根据操作码的性质累加器,操作数直接给出该位的地址,然后根据操作码的性质对其进行位操作。对其进行位操作。例如例如 MOV CMOV C,24H.024H.0 该指令是把该指令是把24H24H字节中的第字节中的第0 0位传送给位传送给C C。 指指令令系系统统及及一一般般说说明明vM
13、CS-51MCS-51指令系统及一般说明指令系统及一般说明在介绍指令之前,先对指令中使用的一些符号意义进行简单在介绍指令之前,先对指令中使用的一些符号意义进行简单的说明。的说明。 direct- direct-直接地址,即直接地址,即8 8位的内部数据存储器单元或特位的内部数据存储器单元或特殊功能寄存器的地址。殊功能寄存器的地址。 #data- #data-包含在指令中的包含在指令中的8 8位常数。位常数。 #datal6- #datal6-包含在指令中的包含在指令中的1616位常数。位常数。 rel-8 rel-8位的带符号的偏移量。用于位的带符号的偏移量。用于SJMPSJMP及所有的条件转
14、移及所有的条件转移指令中。偏移量按相对于下一条指令的第一个字节地址与跳转指令中。偏移量按相对于下一条指令的第一个字节地址与跳转后指令第一个字节地址之差计算,在后指令第一个字节地址之差计算,在128128+127+127范围内取值。范围内取值。 DPTR- DPTR-数据指针,可用作数据指针,可用作1616位的地址寄存器。位的地址寄存器。指指令令系系统统及及一一般般说说明明 bit-bit-内部内部RAMRAM或特殊功能寄存器中的直接寻址位。或特殊功能寄存器中的直接寻址位。 Cy- Cy-进位标志或进位位,或位处理机中的累加器。进位标志或进位位,或位处理机中的累加器。 - -间址寄存器或基址寄存
15、器的前缀。如间址寄存器或基址寄存器的前缀。如 RiRi,AA十十DPTRDPTR (X)-X (X)-X中的内容中的内容 (X)- (X)-由由X X寻址的单元中的内容寻址的单元中的内容 addr11 addr11 低低1111位目标地址。位目标地址。 addr16 16addr16 16位目标地址。位目标地址。 $ $ 当前指令地址。当前指令地址。111112121313指指令令系系统统及及一一般般说说明明 数据传送类指令数据传送类指令 数据传送类指令是把源操作数传送到目的操作数。数据传送类指令是把源操作数传送到目的操作数。 数据传送类指令不影响标志,这里所说的标志是指数据传送类指令不影响标
16、志,这里所说的标志是指CyCy、AcAc和和OVOV,但不包括检验累加器奇偶性的标志位,但不包括检验累加器奇偶性的标志位P P。1.1.内部数据传送指令内部数据传送指令指令格式指令格式 MOV MOV , , 指令的源操作数和目的操作数都在单片机内部。他们既可指令的源操作数和目的操作数都在单片机内部。他们既可以是片内以是片内RAMRAM地址,也可以是特殊功能寄存器地址,也可以是特殊功能寄存器SFRSFR的地址。当然的地址。当然源操作数也可以是立即数。源操作数也可以是立即数。(1)(1)以累加器为目的操作数的指令以累加器为目的操作数的指令 这组指令的功能是把源操作数的内容送入累加器这组指令的功能
17、是把源操作数的内容送入累加器A A,源操作,源操作数有寄存器寻址,直接寻址,间接寻址和立即寻址等方式。数有寄存器寻址,直接寻址,间接寻址和立即寻址等方式。指指令令系系统统及及一一般般说说明明MOV A, Rn MOV A, Rn ;(;(A A) (Rn (Rn) 其中其中n=0n=07MOV AMOV A,Ri Ri ;(;(A A) (Rn) (Rn) 其中其中i=0i=0,1 1MOV AMOV A,direct direct ;(;(A A) (direct)(direct)其中其中directdirect为内部为内部RAMRAM 或或SFRSFR的地址的地址MOV AMOV A,#d
18、ata #data ; (A) #data (A) #data 其中其中datadata为为8 8位的立即数位的立即数例例3-13-1:以累加器为目的操作数的指令举例。:以累加器为目的操作数的指令举例。 MOV A, R4 MOV A, R4 ;寄存器寻址;寄存器寻址: : 寄存器寄存器R4R4的内容送累加器的内容送累加器A A中。中。 MOV A, 20H MOV A, 20H ;直接寻址;直接寻址: : 内部内部RAM 20HRAM 20H单元的内容送累加单元的内容送累加 器器A A中。中。 MOV AMOV A,R0 R0 ;间接寻址;间接寻址: : R0 R0内容所指定的内部内容所指定
19、的内部RAMRAM单元的单元的 内容送累加器内容送累加器A A中。中。 MOV AMOV A,#20H #20H ;立即寻址;立即寻址: : 立即数立即数2020H H送累加器送累加器A A中。中。 指指令令系系统统及及一一般般说说明明(2) (2) 以以RnRn为目的操作数的指令为目的操作数的指令 MOV RnMOV Rn,A A ;(Rn) (A(Rn) (A) 其中其中n=0n=07 7MOV RnMOV Rn,direct direct ;(Rn) (direct(Rn) (direct) MOV RnMOV Rn,#data #data ;(Rn) date (Rn) date 这组
20、指令的功能是把源操作数的内容送入当前工作寄存器这组指令的功能是把源操作数的内容送入当前工作寄存器区的区的R0R0R7R7中的某中的某个寄存器中。个寄存器中。例例3-23-2:以:以RnRn为目的操作数的指令应用举例。为目的操作数的指令应用举例。MOV R3MOV R3,A A ;累加器;累加器A A中的内容送寄存器中的内容送寄存器R3R3中。中。MOV R6MOV R6,32H 32H ;内部;内部RAM 32HRAM 32H单元的内容送寄存器单元的内容送寄存器R6R6中。中。MOV R1MOV R1,#0FFH #0FFH ;立即数;立即数0FFH0FFH送寄存器送寄存器R1R1中。中。指指
21、令令系系统统及及一一般般说说明明(3) 3) 以直接地址为目的操作数的指令以直接地址为目的操作数的指令MOV directMOV direct, A A ;(direct(direct) (A)(A)MOV direct, Rn MOV direct, Rn ;(direct(direct) (Rn (Rn) 其中其中n=0n=07 7MOV direct1MOV direct1,direct2 direct2 ;(direct1(direct1) (direct2 (direct2)MOV directMOV direct, Ri Ri ;(direct(direct) (Ri) (Ri)
22、其中其中i=0,1i=0,1MOV directMOV direct, #data #data ;(direct(direct) datadata 这组指令的功能是把源操作数送入直接地址指定的存储单元。这组指令的功能是把源操作数送入直接地址指定的存储单元。其中其中directdirect指内部指内部RAMRAM或或SFRSFR的地址。的地址。例例3-33-3:以直接地址为目的操作数的指令应用举例。:以直接地址为目的操作数的指令应用举例。MOV 22HMOV 22H,A A ;累加器;累加器A A的内容送内部的内容送内部RAM 22HRAM 22H单元中。单元中。MOV 22HMOV 22H,5
23、0H 50H ;内部;内部50H50H单元的内容送内部单元的内容送内部22H22H单元中。单元中。MOV SPMOV SP,#65H #65H ;立即数;立即数65H65H送特殊功能寄存器送特殊功能寄存器SPSP(地址为(地址为 81H81H)中。)中。 指指令令系系统统及及一一般般说说明明(4) (4) 以寄存器间接地址为目的操作数的指令以寄存器间接地址为目的操作数的指令MOV RiMOV Ri, A A ;(Ri) (A)(Ri) (A)其中其中i=0i=0,1 1MOV RiMOV Ri,direct direct ;(Ri) (direct(Ri) (direct)MOV RiMOV
24、Ri, #data #data ;(Ri) (Ri) data data 这组指令的功能是把源操作数内容送入这组指令的功能是把源操作数内容送入R0R0或或R1R1指定的存储指定的存储单元中。单元中。例如例如 假设寄存器假设寄存器R0R0中的内容为中的内容为28H28H,则下面的指令将完成把立,则下面的指令将完成把立即数即数0AAH0AAH送内部送内部RAM 28HRAM 28H中。中。 MOV R0MOV R0,#0AAH #0AAH ;(5) 16(5) 16位数传送指令位数传送指令MOV DPTRMOV DPTR,#datal6 #datal6 ;(;(DPTRDPTR) datadata
25、 这条指令的功能是把这条指令的功能是把1616位常数送入位常数送入DPTRDPTR,这是整个指令系,这是整个指令系统中唯一的一条统中唯一的一条1616位数据的传送指令,用来设置地址指针。地位数据的传送指令,用来设置地址指针。地址指针址指针DPTRDPTR由由DPHDPH和和DPLDPL组成。这条指令执行的结果把高组成。这条指令执行的结果把高8 8位立即位立即数送入数送入DPHDPH,低,低8 8位立即数送入位立即数送入DPLDPL。指指令令系系统统及及一一般般说说明明2. 2. 堆栈操作指令堆栈操作指令 在在MCS-51MCS-51内部内部RAMRAM中可以设定一个后进先出中可以设定一个后进先
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三 MCS 51 指令系统 汇编语言 程序设计
限制150内