1、第第3 3章章 MCS-51MCS-51单片机指令系统单片机指令系统2 n3.1 指令格式指令格式n3.2 寻址方式寻址方式n 3.2.1 寄存器寻址寄存器寻址n 3.2.2 直接寻址直接寻址n 3.2.3 寄存器间接寻址寄存器间接寻址n 3.2.4 立即寻址立即寻址n 3.2.5 基寄存器加变址寄存器间接寻址基寄存器加变址寄存器间接寻址n3.3 数据传送指令数据传送指令n 3.3.1 内部数据传送指令内部数据传送指令n 3.3.2 累加器累加器A与外部数据存储器传送指令与外部数据存储器传送指令n 3.3.3 查表指令查表指令n3.4 算术运算指令算术运算指令n 3.4.1 加法指令加法指令n
2、 3.4.2 减法指令减法指令n 3.4.3 乘法指令乘法指令n 3.4.4 除法指令除法指令第第3 3章章 MCS-51MCS-51单片机结构单片机结构3n3.5 逻辑运算指令逻辑运算指令n 3.5.1 累加器累加器A的逻辑操作指令的逻辑操作指令n 3.5.2 两个操作数的逻辑运算指令两个操作数的逻辑运算指令n3.6 位操作指令位操作指令n 3.6.1 位变量传送指令位变量传送指令n 3.6.2 位变量修改指令位变量修改指令n 3.6.3 位变量逻辑操作指令位变量逻辑操作指令 n3.7 控制转移指令控制转移指令56n3.7.1 无条件转移指令无条件转移指令56n3.7.2 条件转移指令条件转
3、移指令57n3.7.3 调用和返回指令调用和返回指令594n熟悉熟悉80518051单片机的汇编语言指令;单片机的汇编语言指令;n熟练掌握熟练掌握80518051的寻址方式;的寻址方式;n熟练掌握熟练掌握80518051的指令格式,的指令格式,n熟练掌握数据传送、算术运算、逻辑运算、位操作指令的熟练掌握数据传送、算术运算、逻辑运算、位操作指令的使用;使用;教学目标教学目标5一台计算机只有硬件一台计算机只有硬件(称为裸机称为裸机)是不能工作的,必须配备各种功能的软件,才是不能工作的,必须配备各种功能的软件,才能发挥其运算、测控等功能,而软件中最基本的就是指令系统。能发挥其运算、测控等功能,而软件
4、中最基本的就是指令系统。案例一:指令中重要的一项就是操作数,如何找到操作数就是通常所说的寻址。案例一:指令中重要的一项就是操作数,如何找到操作数就是通常所说的寻址。单片机执行指令,实际上就是到不同的地址空间寻找操作数的过程。下图为间单片机执行指令,实际上就是到不同的地址空间寻找操作数的过程。下图为间接寻址的示意图。接寻址的示意图。教学思路与教法教学思路与教法6 标号标号:操作助记符操作助记符 目的操作数目的操作数,源操作数源操作数;注释注释 START:MOV SP,#60H ;START:MOV SP,#60H ;给堆栈指针赋值给堆栈指针赋值 MOV P0,#0FFH ;P0MOV P0,#
5、0FFH ;P0口输出高电平口输出高电平方方括括符符 表表示示可可选选项项;标标号号代代表表指指令令所所在在地地址址,1-81-8个字母个字母/数字,数字,“:”结尾结尾A AF F 开头的十六进制开头的十六进制数前必须添一个数前必须添一个 “0 0”十六进制数必须十六进制数必须带后缀带后缀“H H”或或“h h”3.1 3.1 指令格式指令格式7 标号:指令的符号地址标号:指令的符号地址 用于一段功能程序的识别标记或控制用于一段功能程序的识别标记或控制转移地址。转移地址。指令前的标号代表该指令的地址,指令前的标号代表该指令的地址,是用符号表示的地址是用符号表示的地址。一般用英文字母和数字组成
6、。一般用英文字母和数字组成。标号必须用冒号标号必须用冒号“:”与操作码分隔。与操作码分隔。8 操作码:表示指令的操作功能。操作码:表示指令的操作功能。操作码用助记符表示,操作码用助记符表示,它代表了指令它代表了指令 的操作功能。的操作功能。操作码是指令的必需部分,操作码是指令的必需部分,是指令的核心,不可缺少。是指令的核心,不可缺少。9 操作数:参加操作的数据或数据地址。操作数:参加操作的数据或数据地址。操作数可以是数据,也可以是数据的地址、操作数可以是数据,也可以是数据的地址、数据地址的地址或操作数的其他信息。数据地址的地址或操作数的其他信息。操作数可分为目的操作数和源操作数。操作数可分为目
7、的操作数和源操作数。操作数可用二进制数、十进制数或十六进制操作数可用二进制数、十进制数或十六进制数表示。数表示。操作数的个数可以是操作数的个数可以是0 03 3个个。操作数与操作码之间用空格分隔,操作数与操作数与操作码之间用空格分隔,操作数与操作数之间用逗号操作数之间用逗号“,”分隔。分隔。10 注释:指令功能说明。注释:指令功能说明。注释属于非必需项,是为便于阅读,注释属于非必需项,是为便于阅读,对对指令功能作的说明和注解。指令功能作的说明和注解。注释必须以注释必须以“;”开始开始。111.常用的缩写符号常用的缩写符号A 累加器ACCdirect 直接地址,取值为00FFH#data 立即数
8、,表示一个常数,取值为00FFH 间接寻址 加;减;*乘;除 与;或;异或;等于 小于;大于;不等于;传送 寄存器名()寄存器内容()由寄存器寻址的存储器单元内容 寄存器的内容取反rrr 指令编码中rrr值由工作寄存器Rn确定,R0R7对应的rrr为000111 指本条指令起始地址rel 相对偏移量,其值为128127 122.指令类型指令类型MCS-51汇编语言有42种操作码助记符用来描述33种操作功能。111种指令。如果按字节数分类,则有49条单字节指令、45条双字节指令和17条3字节指令。若按指令执行时间分类,则有64条单周期指令、45条双周期指令、2条(乘/除)4周期指令。MCS-51
9、单片机的CPU能对位、半字节、字节和双字节数据进行各种操作按功能分类,MCS-51指令系统可分为:数据传送指令;算术运算指令;逻辑运算指令;位操作指令;控制转移指令。133.2 寻寻 址址 方方 式式指令的一个重要组成部分是操作数,指令给出参与运算的操作数地址的方式称为寻址方式。立即寻址立即寻址 直接寻址直接寻址 寄存器寻址寄存器寻址 寄存器间接寻址寄存器间接寻址 基址寄存器加变址寄存器间接寻址基址寄存器加变址寄存器间接寻址 相对寻址相对寻址 位寻址位寻址14寻址方式寻址范围寄存器寻址R0R7、A、B、C(CY)、AB(双字节)、DPTR(双字节)直接寻址内部RAM低128字节(00H7FH)
10、特殊功能寄存器(80H0FFH)内部RAM位寻址区的128个位(00H7FH)特殊功能寄存器中可寻址的位(80H0FFH)寄存器间接寻址内部数据存储器RAMR0,R1,SP(仅PUSH、POP)外部RAM或I/O接口(R0,R1,DPTR)立即寻址程序存储器(常数)基寄存器加变址寄存器间接寻址程序存储器(A+PC,A+DPTR)表3-1 概括了每一种寻址方式可以存取的存储器空间。表3-1 寻址方式及相关的存储器空间15 3.2.1 寄存器寻址寄存器寻址寻址空间:寻址空间:当前选定的当前选定的寄存器内容寄存器内容就是实际操作数就是实际操作数R0R7,由,由RS0、RS1确定确定寄存器区寄存器区/
11、4A、B、CY(位)、(位)、DPTRMOV A,R3;A (R3)例例1 1:INC R0 ;(R0)+1 R0例例2 2:寄存器寻址:寄存器寻址:操作数操作数隐含隐含16图3.1 INC R0指令执行过程示意图 3.2.2 直接寻址直接寻址直接寻址直接寻址v在指令中直接给出操作数的在指令中直接给出操作数的真实地址真实地址v操作码后面操作码后面紧跟一个实际紧跟一个实际操作数地址操作数地址17寻址空间寻址空间内内RAM的低的低128字节字节特殊功能寄存器特殊功能寄存器SFR区区00H7FH80HFFH直接寻址是访问直接寻址是访问 SFR 的唯一方法的唯一方法MOV A,30H;A (30H)例
12、例1 1:操作码操作码操作数地址操作数地址PCPCPC74H30HROMROM A内内RAMRAM 30H 位地址空间位地址空间18“与与”ANL 30H,#30H;30H (30H)#30H 例例2 2:操作码操作码PCPCPC直接地址直接地址立即数立即数PC53H30HROMROM 30H 内内RAMRAM 30H ALU“结果结果”3.2.3 寄存器间接寻址寄存器间接寻址寄存器间接寻址:寄存器间接寻址:指令选定的指令选定的寄存器内容寄存器内容就是实际就是实际的的操作数地址操作数地址19寻址空间:寻址空间:内部内部 RAM(R0,R1,SP)外部外部 RAM(R0,R1,DPTR)MOV
13、R0,A操作码操作码PCPCF6HROMROMR0R030H;累加器传送指令;累加器传送指令内内RAMRAM 30HA 例例1 1:20MOVX A,DPTR例例2 2:操作码操作码PCPCE0HROMROMDPTRDPTR 2000H外外RAMRAM 2000HA“读读”RD“读读”3.2.4 立即寻址立即寻址立即寻址:立即寻址:v指令的操作数存放在程序存储器中指令的操作数存放在程序存储器中v操作数紧跟操作码后面操作数紧跟操作码后面寻址空间:寻址空间:v程序存储器程序存储器21MOV A,#30H;A#30H 例例1 1:操作码操作码立即数立即数PCPCPC74H30HROMROM A30H
14、MOV DPTR,#8000H;DPTR#8000H 例例2 2:操作码操作码PCPCPC立即数的高立即数的高8 8位位立即数的低立即数的低8 8位位DPHDPHDPLDPLPC80H80H00H00H90H80HROMROM00H 22 3.2.5 基寄存器加变址寄存器间接寻址基寄存器加变址寄存器间接寻址基址寄存器加变址寄存器间接寻址:基址寄存器加变址寄存器间接寻址:以以DPTR或或PC作作基址寄存器基址寄存器,A作作变址寄存器变址寄存器两者相加形成两者相加形成操作数地址操作数地址。寻址空间:寻址空间:程序存储器(程序存储器(A+DPTR、A+PC)23MOVC A,A+DPTR例:例:操作
15、码操作码PCPCDPTRDPTR2400HA 0FH93HROMROM 240FH240FH设(设(A)=0FH(DPTR)=2400H ALU“读读”PSEN“读读”MOVC A,A+DPTR24相对寻址相对寻址以以当前当前PC值值为基准地址,加上指令的偏为基准地址,加上指令的偏移量移量“rel”,结果为目标地址。,结果为目标地址。rel为为有符号补码数有符号补码数,范围:,范围:-128+127寻址空间:寻址空间:程序存储器程序存储器25JNZ rel例:例:;累加器累加器A不等零则转移不等零则转移 设设:rel=23H2025H2002H2001H2000H ROM70H70H23H23
16、H下一条指令下一条指令.操作码操作码PCPCPC(PC)=2002Hrel=23H修正后转移修正后转移目标地址目标地址D(PC)=2025HPCALU偏移量偏移量(PC)=2 0 0 2 HRel =2 3 H)005202HD=26例如指令:JC 80H ;C=1转跳若这条双字节的转移指令存放在1005H,取出操作码后PC指向1006H,取出偏移量后PC指向1007H,故在计算偏移量相加时,PC已为1007H单元,即指向该条指令的下条指令。注意:最终形成的地址为0F87H而非1087H,这是由于偏移量是有符号数。偏移量=80H,这里出现的是补码,故80H128。补码运算后,形成转跳地址为0F
17、87H。其示意图如图3.5所示。图3.5 JC 80H(当C=1)指令执行过程示意图27寻址方式与相应的寻址空间寻址方式与相应的寻址空间小结:小结:寄存器寄存器R0R7,A,BCY,DPTR片内片内内内RAM的低的低128字节字节特殊功能寄存器特殊功能寄存器SFR直接寻址直接寻址direct寄存器间址寄存器间址R0,R1,SP R0,R1,DPTR片内片内RAM、片外片外RAM与与I/O口口立即数立即数#data 程序存储器程序存储器程序存储器程序存储器基址加变址基址加变址A+DPTR,A+PC程序存储器程序存储器相对寻址相对寻址PC+rel利用的变量利用的变量 使用的空间使用的空间方方 式式
18、28对程序存储器只能采用立即寻址和基寄存器加变址寄存器间接寻址方式,特殊功能寄存器只能采用直接寻址方式,不能采用寄存器间接寻址,8052/8032等单片机内部RAM的高128字节(80H0FFH)只能采用寄存器间接寻址,不能使用直接寻址方式,位操作指令只能对位寻址区进行操作。外部扩展的数据存储器只能用MOVX指令访问,而内部RAM的低128字节(00H7FH)既能用直接寻址,也能用寄存器间接寻址。MCS-51具有5个存储器空间,且多数从零地址开始编址:程序存储器空间 0000H0FFFFH内部RAM空间 00H0FFH特殊功能寄存器空间 80H0FFH位地址空间 00H0FFH外部RAM/IO
19、空间 0000H0FFFFH293.3 数据传送指令数据传送指令MCS-51的数据传送操作可以在累加器A、工作寄存器R0R7、内部数据存储器、外部数据存储器和程序存储器之间进行,其中对累加器A和R0R7的操作最多。图3.6 MCS-51数据传送操作30 3.3.1 内部数据传送指令内部数据传送指令一、数据传送类(一、数据传送类(29条)条)用到的指令助记符有用到的指令助记符有5种:种:片外传送片外传送 MOVX查表传送查表传送 MOVC 堆栈操作堆栈操作 PUSH、POP 累加器交换累加器交换 XCH、XCHD、SWAP片内传送片内传送 MOV311、MOV类传送指令类传送指令格式:格式:MO
20、V 目的字节目的字节,源字节源字节功能:把源字节内容送目的字节,源字节内容不变功能:把源字节内容送目的字节,源字节内容不变以累加器以累加器A为目的字节的传送:为目的字节的传送:立即数送累加器立即数送累加器MOV A,#data;立即数;立即数#data送累加器送累加器A32 寄存器内容送累加器寄存器内容送累加器MOV A,Rn(n=07);Rn的内容送累加器的内容送累加器A工作寄存器组的选择由状态字中的工作寄存器组的选择由状态字中的RS0、RS1确定确定 内内RAM或或SFR内容送累加器内容送累加器MOV A,direct;以;以direct为地址的单元的内容送累加器为地址的单元的内容送累加器
21、A33 内内RAM内容送累加器内容送累加器MOV A,Ri (i=0、1);以;以Ri内容为地址单元中的数送累加器内容为地址单元中的数送累加器A以以Rn为目的字节的传送:为目的字节的传送:立即数送寄存器立即数送寄存器MOV Rn,#data (n=07);立即数;立即数#data送寄存器送寄存器 Rn34 累加器内容送寄存器累加器内容送寄存器RnMOV Rn,A (n=07);累加器;累加器A的内容送的内容送Rn 内内RAM或或SFR内容送寄存器内容送寄存器RnMOV Rn,direct(n=07);以;以direct为地址的单元的内容送寄存器为地址的单元的内容送寄存器Rn35 立即数送内立即
22、数送内RAM或或SFRMOV direct,#data;立即数;立即数#data送以送以direct为地址的单元为地址的单元 累加器内容送内累加器内容送内RAM或或SFRMOV direct,A;累加器送以;累加器送以direct为地址的单元为地址的单元直接地址为目的字节的传送:直接地址为目的字节的传送:36 寄存器内容送内寄存器内容送内RAM或或SFRMOV direct,Rn(n=07);寄存器;寄存器Rn内容送以内容送以direct为地址的单元为地址的单元 内内RAM或或SFR之间直接传送之间直接传送MOV direct1,direct2;内;内RAM或或SFR任意两个单元之间传送数据任
23、意两个单元之间传送数据37 内内RAM数据送内数据送内RAM或或SFRMOV direct,Ri(i=0、1);以;以Ri内容为地址单元中的数送内内容为地址单元中的数送内RAM或或SFR 立即数送内立即数送内RAMMOV Ri,#data(i=0、1);立即数;立即数#data送以送以Ri内容为地址的单元内容为地址的单元间接寻址寄存器间接寻址寄存器Ri为目的字节的传送:为目的字节的传送:38 累加器内容送内累加器内容送内RAMMOV Ri,A(i=0、1);累加器内容送以;累加器内容送以Ri内容为地址的单元内容为地址的单元 内内RAM或或SFR数据送内数据送内RAMMOV Ri,direct(
24、i=0、1);以;以direct为地址的单元内容送为地址的单元内容送Ri内容为地址的单元内容为地址的单元 16位立即数传送指令位立即数传送指令MOV DPTR,#data16;16位立即数送位立即数送DPTR中,设置地址指针。中,设置地址指针。39 MOV类传送指令小结类传送指令小结MOV A,#data立即数送累加器立即数送累加器MOV A,Rn寄存器内容送累加器寄存器内容送累加器MOV A,direct直接地址内容送累加器直接地址内容送累加器MOV A,Ri内内RAM内容送累加器内容送累加器MOV Rn,#data立即数送寄存器立即数送寄存器MOV Rn,A 累加器内容送寄存器累加器内容送
25、寄存器RnMOV Rn,direct直接地址内容送寄存器直接地址内容送寄存器Rn指令助记符指令助记符说说 明明字字 节节 2 21 12 21 12 21 12 2MOV 片内传送指令片内传送指令40 MOV类传送指令小结类传送指令小结MOV direct1,direct2内内RAM或或SFR之间直接传送之间直接传送MOV direct,Ri内内RAM数据送内数据送内RAM或或SFRMOV direct,#data立即数送内立即数送内RAM或或SFRMOV direct,A累加器内容送内累加器内容送内RAM或或SFRMOV direct,Rn寄存器内容送内寄存器内容送内RAM或或SFR指令助记
26、符指令助记符说说 明明字节字节3 32 22 23 32 2MOV Ri,#data立即数送内立即数送内RAMMOV Ri,A累加器内容送内累加器内容送内RAMMOV Ri,direct内内RAM或或SFR数据送内数据送内RAMMOV DPTR,#data1616位立即数传送指令位立即数传送指令2 21 12 23 3MOV 片内传送指令片内传送指令412、MOVX类传送指令类传送指令累加器累加器A与外部与外部RAM传送数据用传送数据用 MOVX 外部外部RAM送累加器送累加器AMOVX A,Ri (i=0、1);以;以Ri内容为内容为外部外部RAM地址的单元中的数送地址的单元中的数送A 累加
27、器内容送外累加器内容送外RAMMOVX Ri,A(i=0、1)RDWR;累加器内容送以;累加器内容送以Ri内容为地址的内容为地址的外部外部RAM单元单元42 外部外部RAM送累加器送累加器AMOVX A,DPTR;以;以DPTR内容为地址的内容为地址的外部外部RAM单元中的数送单元中的数送A 累加器内容送外累加器内容送外RAMMOVX DPTR,ARDWR;累加器内容送以;累加器内容送以DPTR内容为地址的内容为地址的外部外部RAM单元单元43 MOVX类传送指令小结类传送指令小结 指令助记符指令助记符说说 明明字字 节节 1 11 11 11 1MOVX A,Ri外部外部RAM送累加器送累加
28、器AMOVX Ri,A累加器内容送外累加器内容送外RAMMOVX A,DPTR外部外部RAM送累加器送累加器AMOVX DPTR,A累加器内容送外累加器内容送外RAMMOVX 片外传送指令片外传送指令44例:将例:将片外片外RAM 120H单元的内容传送到单元的内容传送到片外片外RAM 地址为地址为78H的单元。的单元。MOV DPTR,#0120HMOVX A,DPTRMOV R0,#78HMOVX R0,A 例:将例:将片内片内RAM 12H单元的内容传送到单元的内容传送到片内片内RAM 地址为地址为78H的单元。的单元。MOV 78H,12H;外部;外部RAM送累加器送累加器A;累加器内
29、容送外;累加器内容送外RAM453、MOVC类传送指令类传送指令MOVC类传送指令,均为基址加变址寄存器寻址:类传送指令,均为基址加变址寄存器寻址:MOVC A,A+DPTR;以;以DPTR作基址寄存器,作基址寄存器,A作变址寄存器,两者作变址寄存器,两者;相加形成;相加形成16位位ROM地址,将该单元内容读入地址,将该单元内容读入A 以以DPTRDPTR作基址加变址寻址作基址加变址寻址长查表指令长查表指令16位位PSEN46MOVC A,A+PC 以以PCPC作基址加变址寻址作基址加变址寻址短查表指令短查表指令PSEN MOVC类传送指令小结类传送指令小结指令助记符指令助记符说说 明明字字
30、节节 1 11 1MOVC A,A+DPTRMOVC A,A+PC以以DPTR作基址加变址寻址作基址加变址寻址以以PC作基址加变址寻址作基址加变址寻址47MOV DPTR,#2000HMOVC A,A+DPTR2004H2003H2002H2001H2000H2008H2009H2005H2006H2007H ROM00H00H01H01H04H04H09H09H10H10H19H19H24H24H31H31H40H40H51H51H例:在外部例:在外部ROM中存放中存放09的平方值。根据累加器的平方值。根据累加器 A中的数(中的数(09),查找对应的平方值。),查找对应的平方值。用用DPTR
31、作基址寄存器作基址寄存器指向表格的首地址指向表格的首地址用用A作变址寄存器作变址寄存器实际上实际上A中的值是表格中的中的值是表格中的第几项第几项表格首址表格首址48操作码操作码PCPCDPTRDPTR2000HA A 03H 09H MOVC A,A+DPTR 93H 93HROMROM00H00H2000H2000H01H01H04H04H09H09H2001H2001H2002H2002H2003H2003H;设(;设(A)=03H,查,查“3”的平的平方方ALU494、XCH、XCHD、SWAP类传送指令类传送指令 寄存器内容与累加器内容交换寄存器内容与累加器内容交换XCH A,Rn (
32、n=07);(A)(Rn)内内RAM或或SFR内容与累加器内容交换内容与累加器内容交换XCH A,direct (n=07);(A)(direct)50 内内RAM内容与累加器内容交换内容与累加器内容交换XCH A,Ri (i=0,1);(A)((Ri))内内RAM内容低内容低4位与累加器低位与累加器低4位内容交换位内容交换XCHD A,Ri (i=0,1);(A30)((Ri)30)A(Ri)51 累加器累加器A高高4位与低位与低4位交换位交换SWAP A;(A30)(A 74)A例如例如(A)=0C5H,执行指令,执行指令 SWAP A结果:结果:(A)=5CH52 交换类传送指令小结交换
33、类传送指令小结指令助记符指令助记符说说 明明字节字节1 12 21 11 11 1XCH A,RnXCH A,direct寄存器内容与累加器内容交换寄存器内容与累加器内容交换直接地址内容与累加器内容交换直接地址内容与累加器内容交换XCH A,RiXCHD A,Ri内内RAM内容与累加器内容交换内容与累加器内容交换内内RAM内容低内容低4位与累加器低位与累加器低4位交换位交换SWAP A累加器累加器A高高4位与低位与低4位交换位交换535 5、堆栈操作指令堆栈操作指令 进栈指令进栈指令PUSH direct;SP自动增自动增“1”,(,(SP)(SP)+1;direct地址单元的内容压入地址单元
34、的内容压入SP指向的单元指向的单元 出栈指令出栈指令POP direct;SP自动减自动减“1”,(,(SP)(SP)-1;SP指向的单元内容弹出到以指向的单元内容弹出到以direct为地址的单元为地址的单元54SPSP例:堆栈操作例:堆栈操作 设(设(A)=55H,(,(B)=3FH建立堆栈建立堆栈压入操作压入操作弹出操作弹出操作 60H61H62H63H64H 55H 3FHSPMOV SP,#60HPUSH APUSH BPOP PSWSP 结果:结果:PSW的内容的内容3FH,SP的内容为的内容为61HPSW3FH55二、算术操作类(二、算术操作类(24条)条)用到的指令助记符有用到的
35、指令助记符有8 8种:种:加法指令加法指令 ADD、ADDC、INC、DA减法指令减法指令 SUBB、DEC乘除指令乘除指令 MUL、DIV算术运算类指令执行结果影响标志位:算术运算类指令执行结果影响标志位:CY、AC、OV561、不带进位加、不带进位加ADD 累加器内容加立即数累加器内容加立即数ADD A,#data;A (A)+#data 累加器内容加寄存器内容累加器内容加寄存器内容ADD A,Rn(n=07);A (A)+(Rn)57 累加器内容加内累加器内容加内RAM内容内容ADD A,Ri(i=0,1);A (A)+(Ri)累加器内容加内累加器内容加内RAM内容或内容或SFRADD
36、A,direct;A (A)+(direct)58ADD类指令小结类指令小结指令助记符指令助记符说说 明明字字 节节 2 21 11 12 2ADD A,#dataADD A,Rn立即数加到累加器立即数加到累加器寄存器内容加到累加器寄存器内容加到累加器ADD A,RiADD A,direct内内RAM内容加到累加器内容加到累加器直接地址内容加到累加器直接地址内容加到累加器592、带进位加、带进位加ADDC 累加器内容加立即数累加器内容加立即数 加进位位加进位位ADDC A,#data;A (A)+#data+CY 累加器内容加寄存器内容加进位位累加器内容加寄存器内容加进位位ADDC A,Rn(
37、n=07);A (A)+(Rn)+CY60 累加器内容加内累加器内容加内RAM内容加进位位内容加进位位ADDC A,Ri(i=0,1);A (A)+(Ri)+CY 累加器内容加内累加器内容加内RAM内容或内容或SFR加进位位加进位位ADDC A,direct;A (A)+(direct)+CYADDCADDC指令的应用:指令的应用:多字节无符号数相加多字节无符号数相加若和数大于若和数大于255,则,则CY=1,否则,否则CY=0高字节加时要用到高字节加时要用到ADDC指令指令61指令符助记指令符助记说说 明明字字 节节 2 21 11 12 2ADDC A,#dataADDC A,Rn立即数和
38、进位加到累加器立即数和进位加到累加器寄存器内容和进位加到累加器寄存器内容和进位加到累加器ADDC A,RiADDC A,direct内内RAM内容和进位加到累加器内容和进位加到累加器直接地址内容和进位加到累加器直接地址内容和进位加到累加器 ADDC类指令小结类指令小结62 试分析执行下面的指令后,程序状态字试分析执行下面的指令后,程序状态字PSW中中 CY,AC,OV的内容是什么?的内容是什么?MOV A,#53HADD A,R0 MOV R0,#76 HD7D6D5D4 D3D2D1D0 0 1 0 1 0 0 1 1 (53H)0 1 1 1 0 1 1 0 (76H)10010011(C
39、9H)CY=0AC=0OV=C6 C7=1+此时此时C6=1、C7=0 则则+633、增量、增量INC 累加器内容加累加器内容加“1”INC A;A (A)+1 寄存器内容加寄存器内容加“1”INC Rn;Rn (Rn)+164 内内RAM或或SFR内容加内容加“1”INC direct;(Ri)(Ri)+1 内内RAM内容加内容加“1”INC Ri ;direct (direct)+165 数据指针数据指针DPTR内容加内容加“1”INC DPTR;DPTR (DPTR)+1 INC 指令中除指令中除 INC A 指令影响指令影响 P 标志位,标志位,其余指令不影响任何标志位其余指令不影响任
40、何标志位66 INC类指令小结类指令小结指令助记符指令助记符说说 明明字节字节 1121INC AINC Rn累加器内容加累加器内容加“1 1”寄存器内容加寄存器内容加“1 1INC direct内内RAM或或SFR内容加内容加“1INC Ri内内RAM内容加内容加“1INC DPTR数据指针数据指针DPTR内容加内容加“11674 4、十进制调整指令、十进制调整指令DA A;对累加器对累加器A,作,作BCD码码加法加法后进行后进行“过过9补补6”调整调整若若(A30)9 AC=1 则(则(A30)(A30)+06H若若(A74)9 CY=1则(则(A74)(A74)+60H注意:注意:DA
41、指令不能对指令不能对BCD码减法的结果进行调整码减法的结果进行调整BCDH BCDLA68ABCDEF0123456789BCD合法合法非法!非法!1 0 1 01 0 1 11 1 0 01 1 0 11 1 1 01 1 1 10 0 0 00 0 0 10 1 0 00 0 1 00 0 1 11 0 0 00 1 0 11 0 0 10 1 1 10 1 1 0二进制数二进制数0 0 0 00 0 0 11 00 0 0 10 0 0 11 1合法合法69例例 设(设(A)=37H;(;(R3)=36H,执行下面的程序:,执行下面的程序:0 0 1 1 0 1 1 1 (37H)0 0
42、 1 1 0 1 1 0 (36H)(6DH)0 1 1 0 1 1 0 1 过过“9”0 0 0 0 0 1 1 0 0 1 1 1 0 0 1 1 补补“6”(73H);(;(A)=6DH;(;(A)=73H 0 1 1 1 0 0 1 1(73H)1 0 0 1 1 0 0 1(99H)1 0 0 0 0 1 1 0 0(0CH)CY 0 1 1 0 0 1 1 0 0 1 1 1 0 0 1 0(72H);(;(A)=0CH CY=1;(;(A)=72H过过“9”补补“6”1 1 0 111 1 0 0ADD A,R3DA AADD A,#99HDA ADA A 只能跟在加法指令之后只
43、能跟在加法指令之后705、减法指令、减法指令SUBB 累加器减立即数和借位标志累加器减立即数和借位标志SUBB A,#data 累加器减寄存器内容和借位标志累加器减寄存器内容和借位标志SUBB A,Rn(n=07);A (A)-#data-CY;A (A)-(Rn)-CY71 累加器减累加器减RAM内容和借位标志内容和借位标志SUBB A,Ri(i=0,1)累加器内容减内累加器内容减内RAM内容或内容或SFR和借位标志和借位标志SUBB A,direct;A (A)-(Ri)-CY;A (A)-(direct)-CY72 SUBB类指令小结类指令小结指令助记符指令助记符说说 明明字字 节节 2
44、 21 11 12 2SUBB A,#dataSUBB A,RnSUBB A,RiSUBB A,direct累加器减立即数和借位累加器减立即数和借位累加器减寄存器内容和借位累加器减寄存器内容和借位累加器减累加器减RAM内容和借位内容和借位累加器减直接地址内容和借位累加器减直接地址内容和借位736、减量、减量 DEC 累加器内容减累加器内容减“1”DEC A;A (A)-1 寄存器内容减寄存器内容减“1DEC Rn;Rn (Rn)-174 内内RAM或或SFR内容减内容减“1DEC direct;(Ri)(Ri)-1 内内RAM内容减内容减“1DEC Ri ;direct (direct)-17
45、5 DEC 类指令小结类指令小结指令助记符指令助记符说说 明明字字 节节 1 11 12 21 1DEC ADEC Rn累加器内容减累加器内容减“1 1”寄存器内容减寄存器内容减“1”1”DEC direct内内RAM或或SFR内容减内容减“1”DEC Ri内内RAM内容减内容减“1”767、MULMUL A BDIV A B;执行执行 (A)(B)(B A)的操作的操作 CY=08、DIV;执行执行(A)/(B)后,商后,商 A 余余 B CY=077三、逻辑运算类(三、逻辑运算类(24条)条)用到的指令助记符有用到的指令助记符有9种:种:包括与、或、异或、清除、求反、移位等操作包括与、或、
46、异或、清除、求反、移位等操作ANL、ORL、XRL、CLR、CPL、RL、RLC、RR、RRC781、逻辑与、逻辑与ANL(6条)条)累加器内容逻辑与立即数累加器内容逻辑与立即数ANL A,#data;A (A)#data 累加器内容逻辑与寄存器内容累加器内容逻辑与寄存器内容ANL A,Rn(n=07);A (A)(Rn)79 累加器内容逻辑与内累加器内容逻辑与内RAM内容内容ANL A,Ri(i=0,1);A (A)(Ri)累加器内容逻辑与内累加器内容逻辑与内RAM内容或内容或SFRANL A,direct;A (A)(direct)80 累加器内容逻辑与内累加器内容逻辑与内RAM或或SFR
47、ANL direct,A;direct (direct)A 立即数逻辑与立即数逻辑与RAM或或SFRANL direct,#data;direct (direct)#data81 ANL 类传送指令小结类传送指令小结ANL A,#data立即数逻辑与累加器立即数逻辑与累加器ANL A,Rn寄存器内容逻辑与累加器寄存器内容逻辑与累加器ANL A,direct直接地址内容逻辑与累加器直接地址内容逻辑与累加器ANL A,Ri内内RAM内容逻辑与累加器内容逻辑与累加器指令助记符指令助记符说说 明明字字 节节 2 21 12 21 1ANL direct,AANL direct,#data累加器逻辑与内
48、累加器逻辑与内RAM或或SFR立即数逻辑与立即数逻辑与RAM或或SFR2 23 3822、逻辑或、逻辑或 ORL(6条)条)累加器内容逻辑或立即数累加器内容逻辑或立即数ORL A,#data;A (A)#data 累加器内容逻辑或寄存器内容累加器内容逻辑或寄存器内容ORL A,Rn(n=07);A (A)(Rn)83 累加器内容逻辑或内累加器内容逻辑或内RAM内容内容ORL A,Ri(i=0,1);A (A)(Ri)累加器内容逻辑或内累加器内容逻辑或内RAM内容或内容或SFRORL A,direct;A (A)(direct)84 累加器内容逻辑或内累加器内容逻辑或内RAM或或SFRORL d
49、irect,A;direct (direct)(A)立即数逻辑或立即数逻辑或RAM或或SFRORL direct,#data;direct (direct)#data85 ORL 类传送指令小结类传送指令小结ORL A,#data立即数逻辑或累加器立即数逻辑或累加器ORL A,Rn寄存器内容逻辑或累加器寄存器内容逻辑或累加器ORL A,direct直接地址内容逻辑或累加器直接地址内容逻辑或累加器ORL A,Ri内内RAM内容逻辑或累加器内容逻辑或累加器指令符号指令符号说说 明明字字 节节 2 21 12 21 1ORL direct,AORL direct,#data累加器逻辑或内累加器逻辑或
50、内RAM或或SFR立即数逻辑或立即数逻辑或RAM或或SFR2 23 3863、逻辑异或、逻辑异或XRL(6条)条)累加器内容逻辑异或立即数累加器内容逻辑异或立即数XRL A,#data 累加器内容逻辑异或寄存器内容累加器内容逻辑异或寄存器内容XRL A,Rn(n=07);A (A)#data+;A (A)(Rn)+87 累加器内容逻辑异或内累加器内容逻辑异或内RAM内容内容XRL A,Ri(i=0,1)累加器内容逻辑异或内累加器内容逻辑异或内RAM内容或内容或SFRXRL A,direct;A (A)(Ri)+;A (A)(direct)+88 累加器内容逻辑异或内累加器内容逻辑异或内RAM或
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100