单片机原理及应用李建忠课件第3章.ppt

上传人(卖家):三亚风情 文档编号:2810494 上传时间:2022-05-28 格式:PPT 页数:83 大小:4.27MB
下载 相关 举报
单片机原理及应用李建忠课件第3章.ppt_第1页
第1页 / 共83页
单片机原理及应用李建忠课件第3章.ppt_第2页
第2页 / 共83页
单片机原理及应用李建忠课件第3章.ppt_第3页
第3页 / 共83页
单片机原理及应用李建忠课件第3章.ppt_第4页
第4页 / 共83页
单片机原理及应用李建忠课件第3章.ppt_第5页
第5页 / 共83页
点击查看更多>>
资源描述

1、第3章 MCS-51单片机指令系统和汇编语言程序示例第第3 3章章 MCS-51MCS-51单片机指令系统单片机指令系统 和汇编语言程序示例和汇编语言程序示例3.1 MCS-51单片机指令系统概述单片机指令系统概述3.2 寻址方式寻址方式3.3 数据传送类指令数据传送类指令3.4 算术运算类指令算术运算类指令3.5 逻辑运算及移位指令逻辑运算及移位指令3.6 控制转移类指令控制转移类指令3.7 子程序调用与返回指令子程序调用与返回指令3.8 位操作类指令位操作类指令3.9 汇编程序格式与伪指令汇编程序格式与伪指令3.10 汇编程序设计示例汇编程序设计示例第3章 MCS-51单片机指令系统和汇编

2、语言程序示例3.1 MCS-51单片机指令系统概述单片机指令系统概述 指令、指令系统的概念指令、指令系统的概念 指令指令:计算机内部执行的一种操作,提供给用户编程使用的:计算机内部执行的一种操作,提供给用户编程使用的一种命令。一种命令。 指令系统指令系统:计算机能够执行的全部操作所对应的指令集合。:计算机能够执行的全部操作所对应的指令集合。 第3章 MCS-51单片机指令系统和汇编语言程序示例 指令的三种属性属性 功能属性功能属性:每条指令都对应一个特定的操作功能;:每条指令都对应一个特定的操作功能; 时间属性时间属性:一条指令执行所用的时间;:一条指令执行所用的时间; 空间属性空间属性:一条

3、指令在程序存储器中存储所占用的字节数。:一条指令在程序存储器中存储所占用的字节数。第3章 MCS-51单片机指令系统和汇编语言程序示例 MCS-51单片机指令系统及其指令格式单片机指令系统及其指令格式 功能功能: : 数据传送、算术操作、逻辑操作、程序转移、位操作数据传送、算术操作、逻辑操作、程序转移、位操作等五大类;等五大类; 空间属性空间属性: : 单字节指令单字节指令(49(49条条) )、双字节指令、双字节指令(46(46条条) )和最长的和最长的三字节指令三字节指令( (只有只有1616条条) )。 时间属性时间属性: : 单机器周期指令单机器周期指令(64(64条条) )、双机器周

4、期指令、双机器周期指令(45(45条条) )和只有乘、除法两条和只有乘、除法两条4 4个机器周期的指令。个机器周期的指令。第3章 MCS-51单片机指令系统和汇编语言程序示例 结构结构:操作码:操作码+ +操作数。操作数。 操作码操作码:表示计算机执行该指令将进行何种操作。:表示计算机执行该指令将进行何种操作。 操作数操作数:表示参加操作的数的本身或操作数所在的地址。:表示参加操作的数的本身或操作数所在的地址。 (无操作数、单操作数、双操作数)(无操作数、单操作数、双操作数)第3章 MCS-51单片机指令系统和汇编语言程序示例 指令格式指令格式: 标号:标号: 操作码助记符操作码助记符 目的操

5、作数目的操作数,源操作数,源操作数 ;注释;注释 第3章 MCS-51单片机指令系统和汇编语言程序示例 描述指令的一些符号的约定意义的说明:描述指令的一些符号的约定意义的说明: Ri Ri和和RnRn:表示当前工作寄存器区中的工作寄存器,:表示当前工作寄存器区中的工作寄存器,i i取取0 0或或1 1,表示,表示R0R0或或R1R1。n n取取0707,表示,表示R0R7R0R7。 #data #data:表示包含在指令中的:表示包含在指令中的8 8位立即数。位立即数。 #data16 #data16:表示包含在指令中的:表示包含在指令中的1616位立即数。位立即数。 rel rel:以补码形

6、式表示的:以补码形式表示的8 8位相对偏移量,范围为位相对偏移量,范围为- -128127128127,主要用在相对寻址的指令中。,主要用在相对寻址的指令中。第3章 MCS-51单片机指令系统和汇编语言程序示例 addr16 addr16和和addr11addr11:分别表示:分别表示1616位直接地址和位直接地址和1111位直接地位直接地址。址。 direct direct:表示直接寻址的地址。:表示直接寻址的地址。 bit bit:表示可位寻址的直接位地址。:表示可位寻址的直接位地址。 (X) (X):表示:表示X X单元中的内容。单元中的内容。 (X) (X):表示以:表示以X X单元的

7、内容为地址的存储器单元内容,单元的内容为地址的存储器单元内容,即即(X)(X)作地址,该地址单元的内容用作地址,该地址单元的内容用(X)(X)表示。表示。 / / 和和符号:符号:“/”/”表示对该位操作数取反,但不影响表示对该位操作数取反,但不影响该位的原值。该位的原值。“”表示操作流程,将箭尾一方的内容送入箭表示操作流程,将箭尾一方的内容送入箭头所指另一方的单元中去。头所指另一方的单元中去。 第3章 MCS-51单片机指令系统和汇编语言程序示例3.2 寻寻 址址 方方 式式 寻址方式:寻址方式:CPUCPU执行一条指令时怎样找到该执行一条指令时怎样找到该指令所要求的操作数的方式。指令所要求

8、的操作数的方式。第3章 MCS-51单片机指令系统和汇编语言程序示例 立即寻址立即寻址 寄存器寻址寄存器寻址 寄存器间接寻址寄存器间接寻址 直接寻址直接寻址 变址寻址变址寻址 相对寻址相对寻址 位寻址位寻址第3章 MCS-51单片机指令系统和汇编语言程序示例 立即寻址立即寻址 操作数直接出现在指令中,紧跟在操作码的后面,作为操作数直接出现在指令中,紧跟在操作码的后面,作为指令的一部分与操作码一起存放在程序存储器中,可以立即指令的一部分与操作码一起存放在程序存储器中,可以立即得到并执行,不需要经过别的途径去寻找。得到并执行,不需要经过别的途径去寻找。 * * 在一个数的前面冠以在一个数的前面冠以

9、#符号作前缀。符号作前缀。 第3章 MCS-51单片机指令系统和汇编语言程序示例 寄存器寻址寄存器寻址 在指令选定的某寄存器中存放或读取操作数,以完成在指令选定的某寄存器中存放或读取操作数,以完成指令规定的操作。指令规定的操作。 * * ACCACC,DPTRDPTR,ABAB,RnRn,Cy Cy 第3章 MCS-51单片机指令系统和汇编语言程序示例 寄存器间接寻址寄存器间接寻址 由指令指出某一寄存器的内容作为操作数地址的寻址方法。由指令指出某一寄存器的内容作为操作数地址的寻址方法。 * * 寄存器中的内容不是操作数本身,而是操作数的地址,寄存器中的内容不是操作数本身,而是操作数的地址,到该

10、地址单元中才能得到操作数。到该地址单元中才能得到操作数。 * * RiRi,DPTRDPTR * * 可寻址内部可寻址内部RAMRAM(RiRi)和外部数据存储器()和外部数据存储器(Ri,DPTRRi,DPTR) ) 第3章 MCS-51单片机指令系统和汇编语言程序示例图3.1 寄存器间接寻址示意图 第3章 MCS-51单片机指令系统和汇编语言程序示例 直接寻址直接寻址 指令中直接给出操作数所在的存储器地址供存取数。指令中直接给出操作数所在的存储器地址供存取数。 * * 直接寻址可用于访问片内数据存储器(低直接寻址可用于访问片内数据存储器(低128128字节字节) )、SFRSFR。第3章

11、MCS-51单片机指令系统和汇编语言程序示例 变址寻址变址寻址 基址寄存器加变址寄存器两者内容的和作为程序存基址寄存器加变址寄存器两者内容的和作为程序存储器地址,再寻址该单元,读取数据。储器地址,再寻址该单元,读取数据。 * *以数据指针寄存器以数据指针寄存器DPTRDPTR或或PCPC作为基址寄存器作为基址寄存器, ,累加累加器器A A作为变址寄存器(作为变址寄存器(DPTR+A, PC+A)DPTR+A, PC+A)。 * * 常用于访问程序存储器中的常数表。常用于访问程序存储器中的常数表。第3章 MCS-51单片机指令系统和汇编语言程序示例图3.2 变址寻址示意图 第3章 MCS-51单

12、片机指令系统和汇编语言程序示例 相对寻址相对寻址 以当前程序计数器以当前程序计数器PCPC值加上指令中给出的偏移量值加上指令中给出的偏移量relrel,而,而构成实际操作数地址。构成实际操作数地址。 * * 用于访问程序存储器,常出现在相对转移指令中。用于访问程序存储器,常出现在相对转移指令中。 * * 当前当前PCPC值指相对转移指令的存储地址加上该指令的字节值指相对转移指令的存储地址加上该指令的字节数。数。 * * 偏移量偏移量relrel是有符号的单字节数,以补码表示,范围是是有符号的单字节数,以补码表示,范围是- -128128+127+127。转移的地址。转移的地址( (目的地址目的

13、地址) )为:为: 目的地址目的地址= =当前当前PCPC值值+rel+rel = = 指令存储地址指令存储地址+ +指令字节数指令字节数+rel+rel第3章 MCS-51单片机指令系统和汇编语言程序示例 位寻址位寻址 在位操作指令中直接给出位操作数的地址。在位操作指令中直接给出位操作数的地址。 * * 片内片内RAMRAM中的中的128128位和特殊功能寄存器位和特殊功能寄存器SFRSFR中的中的9393位。位。第3章 MCS-51单片机指令系统和汇编语言程序示例3.3 数据传送类指令数据传送类指令第3章 MCS-51单片机指令系统和汇编语言程序示例 访问片内数据存储器的一般数据传送指令访

14、问片内数据存储器的一般数据传送指令 功能功能:实现数在片内:实现数在片内RAMRAM单元之间、寄存器之间、寄存器与单元之间、寄存器之间、寄存器与RAMRAM单元之间的传送。单元之间的传送。 格式格式: MOV MOV , ;目的操作数单元;目的操作数单元源源 操作数操作数( (或单元或单元) ) 第3章 MCS-51单片机指令系统和汇编语言程序示例图3.3 访问片内RAM的一般传送指令操作关系图 第3章 MCS-51单片机指令系统和汇编语言程序示例表表3.1 访问片内访问片内RAM的一般传送指令表的一般传送指令表第3章 MCS-51单片机指令系统和汇编语言程序示例第3章 MCS-51单片机指令

15、系统和汇编语言程序示例 片内特殊传送指令片内特殊传送指令 堆栈操作指令堆栈操作指令第3章 MCS-51单片机指令系统和汇编语言程序示例(SP)(SP)-1 修改指针,指向新栈顶 (direct)(SP)+ 1) 把栈顶的数据弹出到直接寻址单元中去 PUSH direct ; POP direct ; (SP)direct 把直接地址单元的内容压入SP所指单元内 (SP)(SP)+ 1 修改指针,使其指向栈顶上的一个存数单元 * * 机器码分别为:机器码分别为:C0 direct C0 direct 和和 D0 directD0 direct。 第3章 MCS-51单片机指令系统和汇编语言程序示

16、例 数据交换指令数据交换指令第3章 MCS-51单片机指令系统和汇编语言程序示例 片外数据存储器数据传送指令片外数据存储器数据传送指令指令助记符 操作功能注释 机器码(H)MOVX A,DPTR ; (A)(DPTR) E6MOVX A,Ri ; (A)(Ri) E2、E3MOVX DPTR ,A ; (DPTR)(A) F0MOVX Ri,A ; (Ri)(A) F2、F3 * * 对片外扩展的数据存储器对片外扩展的数据存储器RAMRAM或或I/OI/O口进行数据传送,必须口进行数据传送,必须采用寄存器间接寻址的方法,通过累加器采用寄存器间接寻址的方法,通过累加器A A来完成。来完成。第3章

17、 MCS-51单片机指令系统和汇编语言程序示例 访问程序存储器的数据传送指令访问程序存储器的数据传送指令 指令助记符 操作功能注释 机器码(H)MOVC A, A+DPTR ;(A)(A)+(DPTR) 93MOVC A, A+PC ;(PC)(PC)+1,(A)(A)+(PC) 83 第3章 MCS-51单片机指令系统和汇编语言程序示例 * * 访问程序存储器的数据传送指令又称作查表指令,访问程序存储器的数据传送指令又称作查表指令,采用基址寄存器加变址寄存器间接寻址方式。采用基址寄存器加变址寄存器间接寻址方式。 * *前一条指令采用前一条指令采用DPTRDPTR作基址寄存器,数据表格可作基址

18、寄存器,数据表格可以存放在程序存储器以存放在程序存储器64 KB64 KB地址范围的任何地方。地址范围的任何地方。 * *后一条指令以后一条指令以PCPC作为基址寄存器,查表范围只能作为基址寄存器,查表范围只能在在256256个字节范围内。编程时需要进行偏移量的计算,个字节范围内。编程时需要进行偏移量的计算,即即MOVC AMOVC A,A+PCA+PC指令所在地址与表格存放首地址间指令所在地址与表格存放首地址间的距离字节数的计算,并需要一条加法指令进行地址的距离字节数的计算,并需要一条加法指令进行地址调整。偏移量计算公式为:调整。偏移量计算公式为: 偏移量偏移量 = = 表首地址表首地址-(

19、MOVC-(MOVC指令所在地址指令所在地址+1)+1)第3章 MCS-51单片机指令系统和汇编语言程序示例3.4 算术运算类指令算术运算类指令 算术操作类指令共算术操作类指令共2424条,包括加法、带进位加法、带条,包括加法、带进位加法、带减位减法、加减位减法、加1 1、减、减1 1、乘除及十进制调整指令。、乘除及十进制调整指令。 * * 算术运算结果影响标志位算术运算结果影响标志位CyCy、ACAC、OV OV 、P P。第3章 MCS-51单片机指令系统和汇编语言程序示例表表3.2 加减法指令表加减法指令表第3章 MCS-51单片机指令系统和汇编语言程序示例 加、减法指令加、减法指令图3

20、.4 加减法指令形式结构图(a) 加减法指令关系图;(b) 加1、减1指令关系图 第3章 MCS-51单片机指令系统和汇编语言程序示例 十进制调整指令十进制调整指令若(A)309或(AC)=1,则(A)30(A)30+06H若(A)749或(CY)=1,则(A)74(A)74+06HDA A ;第3章 MCS-51单片机指令系统和汇编语言程序示例 * * 若若AC=1AC=1,CY=1CY=1同时发生,或者高同时发生,或者高4 4位虽等于位虽等于9 9但低但低4 4位修正位修正后有进位,则后有进位,则A A应加应加66H66H修正。修正。 * *十进制调整指令是一条对二十进制调整指令是一条对二

21、- -十进制的加法进行调整的指令。十进制的加法进行调整的指令。两个压缩两个压缩BCDBCD码按二进制相加,必须在加法指令码按二进制相加,必须在加法指令ADDADD、ADDCADDC后,经后,经过本指令调整后才能得到正确的压缩过本指令调整后才能得到正确的压缩BCDBCD码和数,实现十进制的码和数,实现十进制的加法运算。加法运算。 * * DA DA指令不能对减法进行十进制调整。做减法运算时,可采指令不能对减法进行十进制调整。做减法运算时,可采用十进制补码相加,然后用用十进制补码相加,然后用 DA ADA A指令进行调整。指令进行调整。 机内十进制补码可采用:机内十进制补码可采用:xx补补 = 9

22、AH -x= 9AH -x。第3章 MCS-51单片机指令系统和汇编语言程序示例 乘、除法指令乘、除法指令MUL AB;(B)(A)(B)158(A)(A)(B)70CY0机器码:A4H * * 乘数放在累加器乘数放在累加器A A和寄存器和寄存器B B中,乘积中,乘积1616位数中的低位数中的低8 8位存位存放在放在A A中,高中,高8 8位存放在位存放在B B中。中。 * * 若乘积大于若乘积大于FFH(255)FFH(255),OVOV置置1 1,否则,否则OVOV清零。清零。 * * 乘法指令执行后乘法指令执行后CYCY总是零。总是零。第3章 MCS-51单片机指令系统和汇编语言程序示例

23、2除法指令除法指令DIV AB;(A)(A)(B)之商,(B)(A)(B)之余数(CY)0,(OV)0机器码:84H * * 被除数放在累加器被除数放在累加器A A,除数放在寄存器,除数放在寄存器B B中,商存于累加中,商存于累加器器A A中,余数存于寄存器中,余数存于寄存器B B中。中。 * * 进位标志位进位标志位CYCY和溢出标志位和溢出标志位OVOV均被清零。均被清零。 * * 若若B B中的内容为中的内容为0 0,OVOV被置被置1 1,CYCY仍为仍为0 0。第3章 MCS-51单片机指令系统和汇编语言程序示例3.5 逻辑运算及移位指令逻辑运算及移位指令表表3.3 逻辑操作指令表逻

24、辑操作指令表第3章 MCS-51单片机指令系统和汇编语言程序示例表表3.3 逻辑操作指令表逻辑操作指令表第3章 MCS-51单片机指令系统和汇编语言程序示例图3.5 逻辑指令形式结构图 (a) 与加、减法指令寻址方式相同的逻辑指令;(b) 与加、减法指令寻址方式不同的逻辑指令第3章 MCS-51单片机指令系统和汇编语言程序示例 * 逻辑逻辑“或或”指令常用来使字节中某些位置指令常用来使字节中某些位置“1”1”,其它位,其它位保持不变。则欲置位的位用保持不变。则欲置位的位用11与该位相或,保留不变的位用与该位相或,保留不变的位用0 0 与该位相或。与该位相或。第3章 MCS-51单片机指令系统和

25、汇编语言程序示例 * * 逻辑逻辑 异或异或 指令常用来使字节中某些位进行取反操作,指令常用来使字节中某些位进行取反操作,其它位保持不变。欲某位取反该位与其它位保持不变。欲某位取反该位与11相异或;欲某位保留则相异或;欲某位保留则该位与该位与0 0 相异或。还可利用异或指令对某单元自身异或,以相异或。还可利用异或指令对某单元自身异或,以实现清零操作。实现清零操作。第3章 MCS-51单片机指令系统和汇编语言程序示例 * * 用移位指令还可以实现算术运算,左移一位相当于原内用移位指令还可以实现算术运算,左移一位相当于原内容乘以容乘以2 2,右移一位相当于原内容除以,右移一位相当于原内容除以2 2

26、,但这种运算关系只对,但这种运算关系只对某些数成立。某些数成立。第3章 MCS-51单片机指令系统和汇编语言程序示例3.6 控制转移类指令控制转移类指令 控制转移类指令共控制转移类指令共1717条,分为无条件转移指令、条件条,分为无条件转移指令、条件转移指令、子程序调用及返回指令。转移指令、子程序调用及返回指令。第3章 MCS-51单片机指令系统和汇编语言程序示例3.6 控制转移类指令控制转移类指令 无条件转移指令无条件转移指令表3.4 无条件转移指令第3章 MCS-51单片机指令系统和汇编语言程序示例1LJMP(长转指令长转指令) LJMP addr16 * * 执行后,程序无条件地转向执行

27、后,程序无条件地转向1616位目标地址位目标地址(addr16)(addr16)处执处执行,不影响标志位。行,不影响标志位。 * * 可以使程序从当前地址转移到可以使程序从当前地址转移到64 KB64 KB程序存储器地址空间程序存储器地址空间的任意地址。的任意地址。 * * 执行时间长,字节多。执行时间长,字节多。第3章 MCS-51单片机指令系统和汇编语言程序示例2AJMP(绝对转移指令绝对转移指令) AJMP addr11 * * AJMPAJMP的机器码组成:的机器码组成: a10 a9 a8 0 0 0 0 1 a7 a6 a5 a4 a3 a2 a1 a0第3章 MCS-51单片机指

28、令系统和汇编语言程序示例 * * 程序转移的目的地址是由程序转移的目的地址是由AJMPAJMP指令所在位置的地址指令所在位置的地址PCPC值加上该指令字节数值加上该指令字节数2 2,构成当前,构成当前PCPC值。取当前值。取当前PCPC值的高值的高5 5位位与指令中提供的与指令中提供的1111位直接地址形成转移的目的地址。位直接地址形成转移的目的地址。 转移目的地址转移目的地址(PC) (PC) PC15 PC14 PC13 PC12 PC11a10 a9 a8 a7 a6 a5 a4 a3 a2 a1 a0第3章 MCS-51单片机指令系统和汇编语言程序示例 * * 程序可转移的位置和程序可

29、转移的位置和PCPC当前值在同一当前值在同一2 KB2 KB范围内。转移可范围内。转移可以向前也可以向后,指令执行后不影响状态标志位。以向前也可以向后,指令执行后不影响状态标志位。 例:例:1 1、若、若AJMPAJMP指令地址指令地址(PC)=2300H(PC)=2300H。执行指令。执行指令AJMP 0FFHAJMP 0FFH后,转移目的地址后,转移目的地址(PC)=20FFH(PC)=20FFH,程序向前转到,程序向前转到20FFH20FFH单元开始执单元开始执行。行。2 2、AJMPAJMP指令地址指令地址(PC)=2FFFH(PC)=2FFFH。执行指令。执行指令AJMP 0FFHA

30、JMP 0FFH后,结后,结果为:转移目的地址果为:转移目的地址(PC)=30FFH(PC)=30FFH,程序向后转到,程序向后转到30FFH30FFH单元开始单元开始执行。执行。 * * 若若addr11addr11相同,相同,AJMPAJMP指令的机器码相同,转移的目的地址指令的机器码相同,转移的目的地址却可能不同。却可能不同。第3章 MCS-51单片机指令系统和汇编语言程序示例3SJMP(相对短转指令相对短转指令) SJMP rel * * relrel用用8 8位带符号数补码表示,转移范围是:相对位带符号数补码表示,转移范围是:相对PCPC当前当前值向前转值向前转128128字节,向后

31、转字节,向后转127127字节。字节。转移目的地址转移目的地址= SJMP= SJMP指令所在地址指令所在地址+2+rel+2+rel * * 手工汇编时,手工汇编时,relrel的计算公式:的计算公式:向前转移:向前转移:relrel=FEH-(SJMP=FEH-(SJMP指令地址与目的地址差的绝对值指令地址与目的地址差的绝对值) )向后转移:向后转移:relrel=FEH-(SJMP=FEH-(SJMP指令地址与目的地址差的绝对值指令地址与目的地址差的绝对值)-2)-2 * * SJMP $(80 FEH) SJMP $(80 FEH) 造成单指令的无限循环,进入等待状造成单指令的无限循环

32、,进入等待状态。态。第3章 MCS-51单片机指令系统和汇编语言程序示例4JMP A+DPTR(相对长转移指令相对长转移指令) * * 数据指针数据指针DPTRDPTR的内容为基址,以累加器的内容为基址,以累加器A A的内容为相对的内容为相对偏移量,在偏移量,在64 KB64 KB范围内无条件转移。范围内无条件转移。 * * 转移地址可以在程序运行中加以改变。转移地址可以在程序运行中加以改变。第3章 MCS-51单片机指令系统和汇编语言程序示例 条件转移指令条件转移指令 共有共有8 8条指令,分为累加器判零条件转移指令、比较条件条指令,分为累加器判零条件转移指令、比较条件转移指令和减转移指令和

33、减1 1条件转移指令三类。条件转移指令三类。第3章 MCS-51单片机指令系统和汇编语言程序示例 * * 当某种条件满足时,程序转移执行;条件不满足时,程当某种条件满足时,程序转移执行;条件不满足时,程序仍按原来顺序执行。序仍按原来顺序执行。 * * 转移的条件可以是前面指令的执行结果转移的条件可以是前面指令的执行结果( (标志位标志位) ),也可,也可以是条件转移指令本身包含的某种运算结果。以是条件转移指令本身包含的某种运算结果。 * * 指令采用相对寻址,程序可在以当前指令采用相对寻址,程序可在以当前PCPC值为中心的值为中心的- -128128+127+127范围内转移。范围内转移。第3

34、章 MCS-51单片机指令系统和汇编语言程序示例表表3.5 条件转移指令条件转移指令第3章 MCS-51单片机指令系统和汇编语言程序示例1判零条件转移指令判零条件转移指令 以累加器以累加器A A的内容是否为的内容是否为0 0作为转移的条件。作为转移的条件。 JZJZ指令:为指令:为0 0转移,不为转移,不为0 0则顺序执行;则顺序执行; JNZJNZ指令:不为指令:不为0 0转移,为转移,为0 0则顺序执行。则顺序执行。 累加器累加器A A的内容由这条指令以前的指令执行的结果决定。的内容由这条指令以前的指令执行的结果决定。 指令不作任何运算,也不影响标志位。指令不作任何运算,也不影响标志位。第

35、3章 MCS-51单片机指令系统和汇编语言程序示例2比较转移指令比较转移指令 * * 先对两个规定的操作数进行比较,根据比较的结果来决定先对两个规定的操作数进行比较,根据比较的结果来决定是否转移。若两个操作数相等,则不转移,程序顺序执行;若两是否转移。若两个操作数相等,则不转移,程序顺序执行;若两个操作数不等,则转移。个操作数不等,则转移。 * * 比较是进行一次减法运算,但其差值不保存,两个数的原比较是进行一次减法运算,但其差值不保存,两个数的原值不受影响,值不受影响,标志位要受到影响标志位要受到影响。利用标志位。利用标志位CYCY作进一步的判断,作进一步的判断,可实现三分支转移。可实现三分

36、支转移。第3章 MCS-51单片机指令系统和汇编语言程序示例3减减1条件转移指令条件转移指令 * * 第一操作数减第一操作数减1 1,结果仍保存在第一操作数中,然后判断,结果仍保存在第一操作数中,然后判断是否为零。若不为零,则转移到指定的地址单元,否则顺序执是否为零。若不为零,则转移到指定的地址单元,否则顺序执行。行。 * * 对于构成循环程序是十分有用的,可以指定任何一个工对于构成循环程序是十分有用的,可以指定任何一个工作寄存器或者内部作寄存器或者内部RAMRAM单元作为循环计数器。单元作为循环计数器。第3章 MCS-51单片机指令系统和汇编语言程序示例3.7 子程序调用与返回指令子程序调用

37、与返回指令第3章 MCS-51单片机指令系统和汇编语言程序示例 子程序调用指令子程序调用指令子程序调用指令有长调用和绝对调用两条,它们都是双周期指令。第3章 MCS-51单片机指令系统和汇编语言程序示例第3章 MCS-51单片机指令系统和汇编语言程序示例 * * LCALL LCALL和和ACALLACALL指令类似于转移指令指令类似于转移指令LJMPLJMP和和AJMPAJMP,不同之,不同之处在于它们在转移前要把执行完该指令的处在于它们在转移前要把执行完该指令的PCPC内容自动压入堆栈后,内容自动压入堆栈后,才将子程序入口地址才将子程序入口地址addr16(addr16(或或addr11)

38、addr11)送送PCPC,实现转移。,实现转移。 * * LCALLLCALL可调用可调用64 KB64 KB范围内的子程序。该指令为范围内的子程序。该指令为3 3字节,所以字节,所以执行该指令时首先应执行执行该指令时首先应执行(PC)(PC)+3(PC)(PC)+3,获得下一条指令地址,获得下一条指令地址,并把此时的并把此时的PCPC内容压入堆栈内容压入堆栈( (先压入低字节,后压入高字节先压入低字节,后压入高字节) )作为作为返回地址,堆栈指针返回地址,堆栈指针SPSP加加2 2指向栈顶,然后把目的地址指向栈顶,然后把目的地址addr16addr16送送入入PCPC。 * * 指令执行不

39、影响标志位。指令执行不影响标志位。第3章 MCS-51单片机指令系统和汇编语言程序示例 * * ACALL ACALL与与AJMPAJMP一样提供一样提供1111位地址,只能调用与位地址,只能调用与PCPC在同一在同一2 2 KBKB范围内的子程序。指令为范围内的子程序。指令为2 2字节指令,执行该指令时应执行字节指令,执行该指令时应执行(PC)(PC)+2(PC)(PC)+2以获得下一条指令地址,并把该地址压入堆栈作为以获得下一条指令地址,并把该地址压入堆栈作为返回地址。返回地址。 * * 机器码的组成如下:机器码的组成如下:a10 a9 a8 1 0 0 0 1 a7 a6 a5 a4 a

40、3 a2 a1 a0 * * 被调用子程序的目的地址由执行被调用子程序的目的地址由执行 ACALLACALL指令的当前指令的当前PCPC值的值的高高5 5位与指令中提供的位与指令中提供的1111位直接地址形成。位直接地址形成。第3章 MCS-51单片机指令系统和汇编语言程序示例 返回指令返回指令第3章 MCS-51单片机指令系统和汇编语言程序示例 * * RET RET指令必须作子程序的最后一条指令;指令必须作子程序的最后一条指令;RETIRETI必须作中必须作中断服务程序的最后一条指令。断服务程序的最后一条指令。 * * RETI RETI指令除恢复断点地址外,还恢复指令除恢复断点地址外,还

41、恢复CPUCPU响应中断时硬响应中断时硬件自动保护的现场信息。执行件自动保护的现场信息。执行RETIRETI指令后,将清除中断响应时指令后,将清除中断响应时所置位的优先级状态触发器,使得已申请的同级或低级中断申所置位的优先级状态触发器,使得已申请的同级或低级中断申请可以响应;而请可以响应;而RETRET指令只能恢复返回地址。指令只能恢复返回地址。第3章 MCS-51单片机指令系统和汇编语言程序示例 空操作指令空操作指令 NOP ;(PC)(PC)+1 * * 在设计延时程序、拼凑精确延时时间及在程序等待或修在设计延时程序、拼凑精确延时时间及在程序等待或修改程序等场合是很有用的。改程序等场合是很

42、有用的。第3章 MCS-51单片机指令系统和汇编语言程序示例3.8 位操作类指令位操作类指令第3章 MCS-51单片机指令系统和汇编语言程序示例 位地址的表示方法:位地址的表示方法: 直接位地址表示,如直接位地址表示,如D5HD5H。 点表示,如点表示,如PSW.5PSW.5。 位名称表示,如直接用位名称表示,如直接用F0F0表示。表示。 用户定义名称表示,如用户定义用用户定义名称表示,如用户定义用FLGFLG代替代替F0F0。第3章 MCS-51单片机指令系统和汇编语言程序示例表3.6 条件转移指令 第3章 MCS-51单片机指令系统和汇编语言程序示例图3.6 硬件逻辑电路图第3章 MCS-

43、51单片机指令系统和汇编语言程序示例3.9 伪指令伪指令 伪指令能够帮助进行汇编,不产生目标程序,不影响程序伪指令能够帮助进行汇编,不产生目标程序,不影响程序的执行。的执行。 主要用来指定程序或数据的起始位置,给出一些连续存放主要用来指定程序或数据的起始位置,给出一些连续存放数据的地址或为中间运算结果保留一部分存储空间以及表示源数据的地址或为中间运算结果保留一部分存储空间以及表示源程序结束等等。程序结束等等。第3章 MCS-51单片机指令系统和汇编语言程序示例 设置目标程序起始地址伪指令设置目标程序起始地址伪指令ORGORG 格式:格式: 符号:符号: ORG ORG 地址地址( (十六进制表

44、示十六进制表示) ) 功能:放在一段源程序功能:放在一段源程序( (主程序、子程序主程序、子程序) )或数据块的前面,或数据块的前面,规定后面的目标程序或数据块的起始地址。规定后面的目标程序或数据块的起始地址。 ORG 2000HSTART:MOV A,#7FH * * 一个源程序中一个源程序中, ,可以多次使用可以多次使用ORGORG指令来规定不同程序段指令来规定不同程序段的起始位置的起始位置, ,但各程序段之间不能重叠。但各程序段之间不能重叠。第3章 MCS-51单片机指令系统和汇编语言程序示例 结束汇编伪指令结束汇编伪指令ENDEND 格式:格式: 符号:符号: END END 功能:汇

45、编语言源程序的结束标志,表示汇编结束。功能:汇编语言源程序的结束标志,表示汇编结束。 * * 一个源程序只能有一个一个源程序只能有一个ENDEND命令,否则就有一部分指令命令,否则就有一部分指令不能被汇编。不能被汇编。 ENDEND前面若加标号,应与被结束程序段的起始点的标号一前面若加标号,应与被结束程序段的起始点的标号一致,表示结束的是该程序段。致,表示结束的是该程序段。第3章 MCS-51单片机指令系统和汇编语言程序示例 定义字节伪指令定义字节伪指令DBDB 格式:格式: 标号:标号: DB DB 项或项表项或项表 功能:把项或项表的数据功能:把项或项表的数据( (字符串按字符顺序以字符串

46、按字符顺序以ASCIIASCII码码) )存存入从标号地址开始的连续存储单元中。入从标号地址开始的连续存储单元中。 项或项表指一个字节数据,用逗号分开的字节数据串,或项或项表指一个字节数据,用逗号分开的字节数据串,或以引号括起来的字符串。以引号括起来的字符串。 第3章 MCS-51单片机指令系统和汇编语言程序示例 ORG 2000HTAB1: DB 30H,8AH,7FH,73 DB 5,A,BCD(2000H)=30H(2001H)=8AH(2002H)=7FH(2003H)=49H ;十进制数73以十六进制数存放(2004H)=35H ;35H是数字5的ASCII码(2005H)=41H

47、;41H是字母A的ASCII码(2006H)=42H ;42H是字符串BCD中B的ASCII码(2007H)=43H ;43H是字符串BCD中C的ASCII码(2008H)=44H ;44H是字符串BCD中D的ASCII码第3章 MCS-51单片机指令系统和汇编语言程序示例 定义字伪指令定义字伪指令DWDW 格式:格式: 标号:标号: DW DW 项或项表项或项表 功能:定义字的内容。功能:定义字的内容。 项或项表指所定义的一个字项或项表指所定义的一个字( (两个字节两个字节) )或用逗号分开的或用逗号分开的字串。汇编时,机器自动按高字串。汇编时,机器自动按高8 8位先存入,低位先存入,低8

48、8位在后的格式位在后的格式排列。排列。第3章 MCS-51单片机指令系统和汇编语言程序示例 ORG 1500HTAB2: DW 1234H,80H 汇编以后:(1500H)=12H (1501H)=34H (1502H)=00H (1503H)=80H第3章 MCS-51单片机指令系统和汇编语言程序示例 预留存储空间伪指令预留存储空间伪指令DSDS 格式:格式: 标号:标号: DS DS 表达式表达式 功能:从标号地址开始,保留若干个字节的内存空间以备存功能:从标号地址开始,保留若干个字节的内存空间以备存放数据。放数据。 保留的字节单元数由表达式的值决定。保留的字节单元数由表达式的值决定。第3

49、章 MCS-51单片机指令系统和汇编语言程序示例ORG 1000H DS 20H DB 30H,8FH 汇编后:从汇编后:从1000H1000H开始,预留开始,预留32(20H)32(20H)个字节的内存单元,个字节的内存单元,从从1020H1020H开始,按开始,按DBDB指令赋值。指令赋值。 (1020H)=30H (1021H)=8FH。第3章 MCS-51单片机指令系统和汇编语言程序示例 等值伪指令等值伪指令EQUEQU 格式:格式: 标号:标号: EQU EQU 项项 功能:将项的值赋予功能:将项的值赋予EQUEQU前面的标号。前面的标号。 项可以是常数、地址标号或表达式。项可以是常

50、数、地址标号或表达式。第3章 MCS-51单片机指令系统和汇编语言程序示例 TAB1: EQU 1000H TAB2: EQU 2000 汇编后:汇编后:TAB1TAB1、TAB2TAB2分别具有值分别具有值1000H1000H、2000H2000H。 用用EQUEQU伪指令对某标号赋值后,该标号的值在整个程序中伪指令对某标号赋值后,该标号的值在整个程序中不能再改变。不能再改变。第3章 MCS-51单片机指令系统和汇编语言程序示例 位地址定义伪指令位地址定义伪指令BITBIT 格式:格式: 标号:标号: BIT BIT 位地址位地址 功能:将位地址赋予功能:将位地址赋予BITBIT前面的标号。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(单片机原理及应用李建忠课件第3章.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|