版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第3章章 指令系统指令系统3.3 89C513.3 89C51指令系统指令系统3.1 3.1 汇编语言汇编语言3.2 3.2 寻址方式寻址方式3.1 汇编语言 3.1.1 指令和程序设计语言 3.1.2 指令格式3.1.1 3.1.1 指令和程序设计语言指令和程序设计语言 指令:指令:是是CPU根据人的意图来执行某种操作的命令。根据人的意图来执行某种操作的命令。 程序设计语言:程序设计语言:是实现人机交换信息的基本工具,是实现人机交换信息的基本工具,分为机器语言、汇编语言和高级语言。分为机器语言、汇编语言和高级语言。 机器语言:机器语言:用二进制编码表示每条指令,是计算机用二进制编码表示每条
2、指令,是计算机能直接识别和执行的语言。能直接识别和执行的语言。 汇编语言:汇编语言:是用助记符、符号和数字等来表示指令是用助记符、符号和数字等来表示指令的程序设计语言。它与机器语言指令是一一对应的。的程序设计语言。它与机器语言指令是一一对应的。3.1.2 3.1.2 指令格式指令格式 89C51汇编语言指令格式汇编语言指令格式操作码操作码 目的操作数目的操作数,源操作数,源操作数;注释;注释 汇编语言指令对应的二进制代码格式汇编语言指令对应的二进制代码格式单字节指令单字节指令双字节指令双字节指令三字节指令三字节指令单字节指令单字节指令1、指令码中隐含着对某一种寄存器的操作、指令码中隐含着对某一
3、种寄存器的操作如:指令如:指令“INC DPTR”的指令代码格式为:的指令代码格式为:A3H= 1 0 1 0 0 0 1 12、由指令中的、由指令中的rrr三位的不同编码指定某三位的不同编码指定某一寄存器一寄存器如:指令如:指令“MOV A,Rn”的指令代码格式的指令代码格式为:为: 1 1 1 0 1 r r r 双字节指令双字节指令用一个字节表示操作码,另一个字节表用一个字节表示操作码,另一个字节表示操作数或操作数所在的地址。示操作数或操作数所在的地址。 格式为:格式为:操作码操作码立即数或地址立即数或地址三字节指令三字节指令一个字节操作码,两个字节操作数。一个字节操作码,两个字节操作数
4、。 格式为:格式为:操作码操作码立即数或地址立即数或地址立即数或地址立即数或地址3.2 3.2 寻址方式寻址方式什么是寻址方式:什么是寻址方式:如何找到存放操作数的如何找到存放操作数的地址,把操作数提取出来的方法。地址,把操作数提取出来的方法。1、7种寻址方式:种寻址方式:2、寻址空间及符号注释:、寻址空间及符号注释:1、7种寻址方式:种寻址方式: 1)寄存器寻址)寄存器寻址 2)直接寻址)直接寻址 3)立即数寻址)立即数寻址 4)寄存器间接寻址)寄存器间接寻址 5)变址寻址)变址寻址 6)相对寻址)相对寻址 7)位寻址)位寻址1)寄存器寻址)寄存器寻址寄存器寻址:寄存器寻址:由指令指出寄存器
5、组由指令指出寄存器组R0R7中的某一个或其他寄存器中的某一个或其他寄存器(A,B,DPTR等等)的内容的内容作为操作数。作为操作数。例如:例如:MOV A,R0;(R0)A MOV P1,A;(A)P1口 ADD A,R0;(A)+(R0)A2)直接寻址)直接寻址直接寻址方式:直接寻址方式:在指令中直接给出操作数所在指令中直接给出操作数所在存储单元的地址。指令中操作数部分是操作在存储单元的地址。指令中操作数部分是操作数所在地址。数所在地址。直接寻址方式可访问片内直接寻址方式可访问片内RAM的的 128个单元以个单元以及所有的及所有的SFR。对于。对于SFR,既可以使用它们的,既可以使用它们的地
6、址,也可以使用它们的名字。地址,也可以使用它们的名字。 例如:例如:MOV A,3AH;(3AH) A MOV A,P1;(P1口口) A 或:或: MOV A,90H; 90H是是P1口的地址口的地址3)立即数寻址)立即数寻址立即数寻址:立即数寻址:指令操作码后面紧跟的是一字节指令操作码后面紧跟的是一字节或两字节操作数,用或两字节操作数,用“#”号表示,以区别直接号表示,以区别直接地址。地址。 例如:例如:MOV A,3AH;(;(3AH)AMOV A,#3AH;3AHAMOV DPTR,#2000H;2000HDPTR ;(;(DPH)=20H ;(;(DPL)=00H4)寄存器间接寻址)
7、寄存器间接寻址 寄存器间接寻址:寄存器间接寻址:操作数的地址事先存放在某个寄操作数的地址事先存放在某个寄存器中,寄存器间接寻址是把指定寄存器的内容作为存器中,寄存器间接寻址是把指定寄存器的内容作为地址,由该地址所指定的单元内容作为操作数。地址,由该地址所指定的单元内容作为操作数。 89C51规定规定R0或或R1为间接寻址寄存器,它可寻址内部为间接寻址寄存器,它可寻址内部地址地址RAM低位的低位的128B单元内容。还可采用单元内容。还可采用DPTR作为作为间接寻址寄存器,寻址外部数据存储器的间接寻址寄存器,寻址外部数据存储器的64KB空间。空间。 例如例如 例如:例如:将片内RAM 65H单元内
8、容47H送A,可执行指令“MOV A,R0”。其中R0内容为65H。如图所示:65H47HR0A47H数据存储器数据存储器地址65H以指令中所指定以指令中所指定的的R0内容(内容(65H)为指针为指针将片内将片内RAM 65H单元内容单元内容47H送送A5)变址寻址)变址寻址(基址寄存器基址寄存器+变址寄存器间接寻址变址寄存器间接寻址)变址寻址:变址寻址:以某个寄存器的内容为基地址,在这个基地址的基础上加上地址偏移量形成真正的操作数地址。 89C51中采用DPTR或PC为变址寄存器,A的内容为地址偏移量。 变址寻址只能访问程序存储器,访问范围为64KB。例如例如 例如:例如:MOVC A,A+
9、DPTR;(A)+(DPTR)A 如图所示如图所示1EH0302HROMDPTRAA02F1H11H1EH+DPTR内容与内容与A的内容之的内容之和为程序存储器地址和为程序存储器地址程序存储器内容送程序存储器内容送A6)相对寻址)相对寻址 相对寻址:相对寻址:是以当前的PC值加上指令中规定的偏移量rel而形成实际的转移地址。 相对寻址只出现在相对转移指令中。 当前的PC值是指执行完相对指令后的PC值;相对转移指令操作码所在地址称为源地址;转移后的地址称为目的地址。 目的地址目的地址=源地址源地址+相对转移指令字节数相对转移指令字节数+rel rel为补码表示的有符号数。7)位寻址)位寻址位寻址
10、:位寻址:采用位寻址方式的指令的操作数是8位二进制数中的某一位,指令中给出的是位地址。位地址在指令中用bit表示。 例如:CLR bit;位地址的两种表示方法:位地址的两种表示方法:直接使用位地址,如D3H;直接用寄存器名字加位数,如PSW.3。位寻址区域:位寻址区域:片内RAM的20H-2FH的16个单元中的128位;字节地址能被8整除的SFR。2、寻址空间及符号注释、寻址空间及符号注释1)寻址空间:见表)寻址空间:见表3-2。2)符号注释:)符号注释:表表3-2 操作数寻址方式和有关空间操作数寻址方式和有关空间寻址方式寻址空间立即数寻址程序存储器 ROM直接寻址片内 RAM 低 128B、
11、特殊功能寄存器寄存器寻址工作寄存器 R0-R7、A、B、C、DPTR寄存器间接寻址片内 RAM 低 128B、片外 RAM变址寻址程序存储器(A+PC,A+DPTR)相对寻址程序存储器 256B 范围(PC+偏移量)位寻址片内 RAM 的 20H-2FH 字节地址、部分 SFR符号注释符号注释Rn(n=07):当前选中的工作寄存器组:当前选中的工作寄存器组R0R7。Ri(I=0,1):作为地址指针的两个工作寄存器:作为地址指针的两个工作寄存器R0,R1。#data:8位立即数。位立即数。#data16:16位立即数。位立即数。direct:8位片内位片内RAM单元(包括单元(包括SFR)的直接
12、地址。)的直接地址。addr11:11位目的地址,用于位目的地址,用于ACALL和和AJMP指令中。指令中。addr16:16位目的地址。用于位目的地址。用于LCALL和和LJMP指令中。指令中。rel:补码表示的:补码表示的8位地址偏移量。范围:位地址偏移量。范围:-128+127D。bit:片内:片内RAM或或SFR的直接寻址位地址。的直接寻址位地址。:间接寄存器的符号。:间接寄存器的符号。/:位操作指令中对该位先取反再参与操作,不影响原值。:位操作指令中对该位先取反再参与操作,不影响原值。():中的内容。中的内容。():指出的地址单元中的内容。指出的地址单元中的内容。:指令操作流程方向。
13、:指令操作流程方向。概述:概述: 89C5189C51指令系统由指令系统由111111条指令组成。其中,单条指令组成。其中,单字节指令字节指令4949条,双字节指令条,双字节指令4545条,三字节指令条,三字节指令1 17 7条。条。 从指令执行时间看,单周期指令从指令执行时间看,单周期指令64条,双周条,双周期期45条,只有条,只有乘、除乘、除指令为指令为4个周期。个周期。3.3 89C513.3 89C51指令系统指令系统89C51 89C51 指令系统可分为五大类指令系统可分为五大类1 1 数据传送指令:数据传送指令:2828条条2 2 算术运算指令:算术运算指令:2424条条3 3 逻
14、辑运算及移位指令:逻辑运算及移位指令:2525条条4 4 控制转移指令:控制转移指令:1717条条5 5 位操作指令(布尔操作):位操作指令(布尔操作):1717条条 3.3.1 3.3.1 数据传送指令数据传送指令1.1.以累加器以累加器A A为目的操作数的指令为目的操作数的指令(4(4条条, ,即即4 4种寻址方式种寻址方式) ) 2.2.以寄存器以寄存器RnRn为目的操作数的指令(为目的操作数的指令(3 3条)条)3.3.以直接地址为目的操作数的指令(以直接地址为目的操作数的指令(5 5条)条)4.4.以间接地址为目的操作数的指令(以间接地址为目的操作数的指令(3 3条)条)5.5.十六
15、位数据传送指令十六位数据传送指令(1(1条条) )6.6.查表指令(查表指令(2 2条)条)7.7.累加器累加器A A与片外与片外RAMRAM传送指令传送指令(4(4条条) )8.8.栈操作指令(二条)栈操作指令(二条)9.9.交换指令交换指令(5(5条条) )1.1.以累加器以累加器A A为目的操作数的指令为目的操作数的指令(4(4条条, ,即即4 4种寻址方式种寻址方式) )汇编指令格式汇编指令格式MOV A,Rn;MOV A,direct;MOV A,Ri;MOV A,#data机器码格式机器码格式1110 1rrr1110 0101direct1110 011i0111 0100dat
16、a操作操作(Rn)A(direct) A(Ri) A#data A注释注释将工作寄存器Rn(即R0R7)内容传送到累加器A中将直接寻址所得的片内RAM单元内容或特殊功能寄存器中的内容传送到累加器A中将间接寻址(Ri为R0或R1)所得的片内RAM单元内容或特殊功能积存器中的内容传送到累加器A中将立即数传送到累加器A中例:例: MOV AMOV A,#30H #30H ;(;(A A)=30H=30H MOV A MOV A, 30H30H ;(;(A A)=11H =11H MOV A MOV A,R1R1 ;(;(A A)=11H=11H MOV A MOV A,R1 R1 ;(;(A A)=
17、30H=30H例:起始30H单元内容为11H,R1中为30H 2 2 、以寄存器、以寄存器RnRn为目的操作数的指令(为目的操作数的指令(3 3条)条)汇编指令格式汇编指令格式MOV Rn,A;MOV Rn,direct;MOV Rn,#data;机器码格式机器码格式1111 1rrr 1rrrdirect0111 1rrrdata操作操作(A) Rn(direct) Rn#data Rn注释注释将累加器A中内容传送到工作寄存器Rn(即R0-R7)中将直接寻址所得的片内将直接寻址所得的片内RAM单单元内容或特殊功能寄存器中的元内容或特殊功能寄存器中的内容传送到工作寄存器内容传送到工作寄存器Rn
18、(即(即R0-R7)中)中将立即数传送到工作寄存器将立即数传送到工作寄存器Rn(即(即R0-R7)中)中这组指令的功能是把源操作数所指定的内容送到当前工作寄存器组R0-R7中的某个寄存器。源操作数有特殊寄存器寻址、直接寻址和立即数寻址三种方式。如:(如:(A A)=78H=78H,(,(R5R5)=47H=47H,(,(70H70H)=F2H=F2H,执行指令:,执行指令: MOV R5MOV R5,A A ;(;(A A)R5R5,(,(R5R5)=78H=78H MOV R5MOV R5,70H 70H ;(;(70H70H)R5R5,(,(R5R5)=F2H=F2H MOV R5MOV
19、R5,#A3H#A3H; A3HR5A3HR5,(,(R5R5)=A3H=A3H注意:注意:在在89C5189C51指令系统中没有指令系统中没有“MOV RnMOV Rn,RnRn”传传送指令。送指令。 3 3 、以直接地址为目的操作数的指令(、以直接地址为目的操作数的指令(5 5条)条)机器码格式机器码格式1111 0101direct 1000 1rrrdirect1000 0101direct2direct11000 011idirect0111 0101directdata汇编指令格式汇编指令格式MOV direct ,A;MOV direct ,Rn ;MOV direct1 , d
20、irect2 ;MOV direct ,Ri ;MOV direct ,#data;操作操作(A) directRn direct direct2direct 1(Ri) direct #data direct 注释注释将A中内容传送到直接地址direct所指出的片内存储单元中。将工作寄存器Rn(即R0-R7)中内容传送到直接地址direct所指出的片内存储单元中。将直接地址源direct所指出的片内存储单元中内容传送到直接地址目的direct所指出的片内存储单元中将间接寻址(Ri为R0或R1)所得的片内RAM单元内容传送到直接地址direct所指出的片内存储单元中中将立即数传送到直接地址di
21、rect所指出的片内存储单元中这组指令的功能是把源操作数所指定的内容送入由直接地址direct所指出的片内存储单元中。源操作数有寄存器寻址,直接寻址,寄存器间接寻址和立即寻址等方式。4 4 、以间接地址为目的操作数的指令(、以间接地址为目的操作数的指令(3 3条)条)(Ri)表示Ri中的内容为指定的RAM单元。汇编格式汇编格式机器码格式机器码格式 操作操作 注释注释 MOV Ri,A; 1111 011i (A)(Ri) 将累加器将累加器A中内容传送到间中内容传送到间接寻址(接寻址(Ri为为R0或或R1)所)所得的片内得的片内RAM单元中。单元中。 MOV Ri,direct; 0101 01
22、1i (direct)(Ri) 将直接寻址得的片内将直接寻址得的片内RAM RAM direct direct 单元内容或特殊功能寄存器单元内容或特殊功能寄存器中内容传送到间接寻址(中内容传送到间接寻址(Ri为为R0或或R1)所得的片内)所得的片内RAM单元中。单元中。 MOV Ri,#data; 0111 011i #data(Ri) 将立即数传送到间接寻将立即数传送到间接寻data data 址(址(Ri为为R0或或R1)所得)所得的片内的片内RAM单元中。单元中。 MOV指令在片内存储器的操作功能如图3.2-1示。图图3.2-1 3.2-1 传送指令在片内存储器的操作功能传送指令在片内存
23、储器的操作功能RidirectRn#dataACC5 5、 十六位数据传送指令十六位数据传送指令(1(1条条) ) 这条指令的功能是把这条指令的功能是把1616位常数送入位常数送入DPTRDPTR。DPTRDPTR由由DPHDPH和和DPLDPL组成组成。例:例:MOV DPTR #1000H; (DPTR)=1000H, (DPH)=10H, (DPL)=00H 汇编指令格式汇编指令格式MOV DPTR,#data16;机器码格式机器码格式1001 0000data(h)data(l)操作操作#data16DPTR注释注释将将1616位立即数传送到位立即数传送到DPTRDPTR中中6 6 、
24、查表指令(、查表指令(2 2条)条)例如汇编指令格式汇编指令格式MOVC A,A+DPTR;MOVC A,A+PC;机器码格式机器码格式1001 00111000 0011操作操作(A)+(DPTR)A先先(PC)+1PC(A)+(PC)A注释注释将程序存储器内容传送到将程序存储器内容传送到A A中中( (远程查表)远程查表)将程序存储器内容传送到将程序存储器内容传送到A A中(进程查表)中(进程查表)上述两条指令的操作过程如图上述两条指令的操作过程如图3.2-2所示。所示。基地址寄存器+变址寄存器间接寻址PC+A(程序存储器0-64K)基地址寄存器+变址寄存 器间接寻址DPTR+A(程序存储
25、器0-64K)A寄存器图图3.2-2 3.2-2 程序存贮器传送程序存贮器传送执行下面程序段后结果如何?MOV DPTR, #2000H MOV DPTR, #2000H ;(;(DPTRDPTR)=2000H=2000HMOV A , #0AH MOV A , #0AH ;(;(A A)=0AH=0AHMOVC A, A+DPTR MOVC A, A+DPTR ;(A)=(200AH)=11H(A)=(200AH)=11H例例1 1:若:初始:若:初始 ROM ROM 内容:内容:2000H 00H2000H 00H2001H 01H2001H 01H2002H 09H2002H 09H20
26、03H 04H2003H 04H2004H 06H2004H 06H2005H 08H2005H 08H2006H FFH2006H FFH2007H 66H2007H 66H2008H 45H2008H 45H2009H ABH2009H ABH200AH 11H200AH 11H例例2:2:若初始若初始ROMROM内容为:内容为: 100FH100FH01H01H1010H 1010H 02H02H1011H 1011H 03H03H1012H 1012H 04H04H 所以,最后结果为:(A)=01 (R0)=01 (PC)=1004执行下面程序后的结果如何?执行下面程序后的结果如何?
27、1000H 74 0D MOVA, #0DH;(;(A)=0DH1002H 83 MOVC A, A+PC;(;(PC)=1002+1=1003H, (A)=(A)+(PC)=(0D+1003) =(1010H) (A)=01H1003H F8 MOV R0, A; (R0)=(A)=01H7、 累加器累加器A与片外与片外RAM传送指令传送指令(4条条) 在在89C5189C51指令系统中,指令系统中,CPUCPU对片外对片外RAMRAM的访问只能用寄存器间接寻址的方的访问只能用寄存器间接寻址的方式,且仅有四条指令:式,且仅有四条指令:汇编指令格式汇编指令格式 机器码格式机器码格式 操作操作M
28、OVX A,Ri 1110 001i (Ri) AMOVX A, DPTR 1110 0000 (DPTR) AMOVX Ri, A 1111 001i (A) (Ri)MOVX DPTR, A 1111 0000 (A) (DPTR) )第第2 2,4 4两条指令以两条指令以DPTRDPTR为片外数据存储器为片外数据存储器1616位地址指针,寻址范围达位地址指针,寻址范围达64KB64KB。其功。其功能是能是DPTRDPTR所指定的片外数据存储器与累加器所指定的片外数据存储器与累加器A A之间传送数据。之间传送数据。第第1 1,3 3两条指令是用两条指令是用R0R0或或R1R1作低作低8 8
29、位地址指针,由位地址指针,由P0P0口送出,寻址范围是口送出,寻址范围是256256字节。字节。这两条指令完成以这两条指令完成以R0R0或或R1R1为地址指针的片外数据存储器与累加器为地址指针的片外数据存储器与累加器A A之间的传送数据。之间的传送数据。上述四条指令的操作如上述四条指令的操作如 图图3.2-33.2-3所示所示: :例如例如A寄存器寄存器间接寻址R1.R0片内 RAM 0-255寄存器间接寻址DPTR片外 RAM 0-64K 图 3.2-3 外部数据存储器传送操作例例: : 若片内若片内RAM (30H)=01HRAM (30H)=01H,片外,片外RAM (30H)=02HR
30、AM (30H)=02H,执,执行下面程序段后的结果如何。行下面程序段后的结果如何。MOV R1, #30H;(R1)=30HMOVX A, R1 ;(A)=02HMOV R0, A ;(R0)=(A)=02HMOV A,R1 ;(A)=(R1)=01HMOV R2, A ;(R2)=(A)=01H 8 、栈操作指令(二条)汇编指令格式汇编指令格式 机器码格式机器码格式 操作操作 注释注释PUSH direct 1100 0000 先先(SP)+1 SP 将将direct内容压入堆栈内容压入堆栈 direct 后后(direct) (SP)POP direct 1101 0000 先先(SP)
31、 direct 将堆栈内容弹出到将堆栈内容弹出到 direct 后后 (SP)-1 SP direct单元中单元中 例:例:MOV SPMOV SP, #18H#18H; ; (SPSP)=18H=18HMOV AMOV A, #30H#30H; ; (A A)=30H=30HMOV DPTRMOV DPTR, #1000H#1000H; ; (DPTRDPTR)=1000H=1000HPUSH APUSH A; ; (SPSP)=19H=19H(19H19H)=30H=30HPUSH DPHPUSH DPH; ; (SPSP)=1AH=1AH(1AH1AH)=10H=10HPUSH DPLP
32、USH DPL; ; (SPSP)=1BH=1BH(1BH1BH)=00H=00H POP DPLPOP DPL; (DPL)=00H (SP)=1AH; (DPL)=00H (SP)=1AHPOP DPHPOP DPH; (DPH)=10H (SP)=19H; (DPH)=10H (SP)=19HPOP APOP A; (A)=30H (SP)=18H; (A)=30H (SP)=18H 9 9、 交换指令交换指令(4(4条条) )(1)字节变换指令汇编指令格式汇编指令格式 机器码格式机器码格式 操作操作 注释注释XCH A, Rn 1100 1rrr (A) (Rn) A的内容与的内容与R
33、n的内容互换的内容互换XCH A,direct 1100 0101 (A) (direct) A的内容与的内容与direct的内容互换的内容互换 direct XCH A,Ri 1100 011i (A) (Ri) A的内容与的内容与(Ri)t的内容互换的内容互换例例:初始时:初始时:(A)=34H(A)=34H,(30H)=11H(30H)=11HXCH A, 30H XCH A, 30H ;(A)=11H(A)=11H,(30H)=34H(30H)=34HMOV R1, #30H MOV R1, #30H ;(R1)=30H(R1)=30HXCH A, R1XCH A, R1 ;(A)=3
34、4H(A)=34H,(30H)=11H(30H)=11H(2) 半字节交换指令第一条指令为低半字节交换指令。该指令将累加器第一条指令为低半字节交换指令。该指令将累加器A A的低的低4 4位与位与R0R0或或R1R1所指出的片内所指出的片内RAMRAM单元的低单元的低4 4位数据相互交换,各自的高位数据相互交换,各自的高4 4位不变,其位不变,其操作表示为:操作表示为:如:如:(R1)=30H,(30H)=11H,(A)=34H(R1)=30H,(30H)=11H,(A)=34H则:则:XCHD AXCHD A, R1 R1 ; (A)=31H (A)=31H ; (30H)=14H(30H)=
35、14H SWAP A; (A)=13H A半字节半字节半字节半字节RAMRAM汇编指令格式汇编指令格式 机器码格式机器码格式 操作操作 XCHD A,Ri 1101 011i (A)0-3 (Ri)0-3 SWAP A 1100 0100 (A)0-3 (A)4-7 第二条指令为第二条指令为A A的低四位与高四位交换指令。该指令将累加器的低四位与高四位交换指令。该指令将累加器A A的低的低4 4位与位与A A的高的高4 4位数据相互交换。位数据相互交换。3.3.2 3.3.2 算术运算指令算术运算指令1 .1 .不带进位加法指令不带进位加法指令( (四条四条) )2 .2 .带进位加法指令(四
36、条)带进位加法指令(四条)3 .3 .带借位减法指令(四条)带借位减法指令(四条)4 .4 .乘法指令(乘法指令(1 1条)条)5 5、除法指令(、除法指令(1 1条)条)6 6、加、加1 1指令(指令(5 5条)条)7 7、减、减1 1指令指令(4(4条条) )8 8、十进制调整指令、十进制调整指令(1(1条条) )1 1 、 不带进位加法指令不带进位加法指令( (四条四条) )汇编指令格式汇编指令格式 机器码格式机器码格式 操作操作 注释注释ADD A, Rn; 0010 1rrr (A)+(Rn) A 将工作寄存器内容和将工作寄存器内容和 累加器累加器A中的数相加,中的数相加, “和和”
37、存放于累加器存放于累加器A中中ADD A,direct; 0010 0101 (A)+(direct) A 将内部将内部RAM单元内容和单元内容和 direct 累加器累加器A中的数相加,中的数相加, “和和”存放于累加器存放于累加器A中中ADD A,Ri; 0010 011i (A)+(Ri) A 将间接寻址将间接寻址(Ri为为R0或或R1) 所得的片内所得的片内RAM单元中内容单元中内容 和累加器和累加器A中的数相加,中的数相加, “和和”存放于累加器存放于累加器A中中ADD A, #data; 0010 0100 (A)+#data A 将立即数的将立即数的8位无符号二进制位无符号二进制
38、 data 数和累加器数和累加器A中的数相加,中的数相加, “和和”存放于累加器存放于累加器A中中说明:说明:上述指令的执行将影响标志位上述指令的执行将影响标志位ACAC,CyCy,OVOV,P P。当。当“和和”的第的第3 3位或第位或第7 7位有进位时,分别将位有进位时,分别将ACAC,CYCY标志位标志位置置1 1,否则为,否则为0 0。溢出标志位。溢出标志位OV=C7 + C6OV=C7 + C6(异或),该标(异或),该标志位只有带符号数运算时才有用。志位只有带符号数运算时才有用。例:若:(例:若:(A A)=78H =78H ,(,(R0R0)=64H=64H执行执行ADD AAD
39、D A,R0 R0 后,结果及后,结果及PSW=PSW=? (A A):):78H= 0111 1000 B78H= 0111 1000 B + +(R0R0):):64H= 0110 0100 B64H= 0110 0100 B (A A):):DCH= 1101 1100 BDCH= 1101 1100 B标志位:标志位:CY=0CY=0, AC=0AC=0, OV=1OV=1, P=1P=1, 即即: PSW=05H: PSW=05H 结果:结果: (A A)=DCH =DCH (R0R0)=64H=64H2 2 、带进位加法指令(四条)、带进位加法指令(四条)汇编指令格式汇编指令格式
40、机器码格式机器码格式 操作操作 注释注释ADDC A, Rn; 0011 1rrr (A)+CY+(Rn) A 将工作寄存器内容与将工作寄存器内容与CY及及 累加器累加器A中的数相加,中的数相加, “和和”存放于累加器存放于累加器A中中ADDC A,direct;0011 0101 (A) +CY +(direct) A 将内部将内部RAM单元内容与单元内容与 direct CY及累加器及累加器A中的数相加,中的数相加, “和和”存放于累加器存放于累加器A中中ADDC A,Ri; 0011 011i (A) +CY+(Ri) A 将间接寻址将间接寻址(Ri为为R0或或R1) 所得的片内所得的片
41、内RAM单元中内单元中内 容与容与CY及累加器及累加器A中的数中的数 相加,相加, “和和”存放于累加器存放于累加器 A中中ADDC A, #data; 0011 0100 (A) +CY + #data A 将立即数的将立即数的8位无符号二进位无符号二进 data 制数与制数与CY及累加器及累加器A中的数中的数 相加,相加, “和和”存放于累加器存放于累加器A中中说明:说明:本组指令的功能是同时把源操作数所指出的内容和进位标本组指令的功能是同时把源操作数所指出的内容和进位标志未志未CY都加到累加器都加到累加器A中,结果存放到中,结果存放到A中,其余的功能和上面的中,其余的功能和上面的ADD指
42、令相同。本组指令常用于多字节加法。指令相同。本组指令常用于多字节加法。 例:设(A)=0C3H,(R0)=0AAH, (CY)=1。执行指令“ADDC A,R0”后的结果及标志位如何?解: (A): C3H=1100 0011+ (CY): 1=0000 0001 1100 0100+ (R0): AAH=1010 1010 (A): 6EH=0110 1110标志位:标志位:CY=1CY=1,OV=1OV=1,AC=0AC=0,结果:(结果:(A A)=6EH=6EH,(,(R0R0)=0AAH=0AAH。 例:编程,将(30H),(31H)单元中的数与(40H),(41H)单元中的数相加,
43、结果存于(30H),(31H)单元中。解:解:MOV AMOV A, 30H30HADD AADD A, 40H40HMOV 30HMOV 30H, A AMOV AMOV A, 31H31HADDC AADDC A, 41H41HMOV 31HMOV 31H, A A3 3 、带借位减法指令(四条)、带借位减法指令(四条)汇编指令格式汇编指令格式 机器码格式机器码格式 操作操作 注释注释SUBB A, Rn; 1001 1rrr (A)-CY -(Rn) A 将工作寄存器内容与将工作寄存器内容与CY及及 累加器累加器A中的数相减,中的数相减, “差差”存放于累加器存放于累加器A中中SUBB
44、A,direct;1001 0101 (A) -CY -(direct) A 将内部将内部RAM单元内容与单元内容与 direct CY及累加器及累加器A中的数相减,中的数相减, “差差”存放于累加器存放于累加器A中中SUBB A,Ri; 1001 011i (A) -CY -(Ri) A 将间接寻址将间接寻址(Ri为为R0或或R1) 所得的片内所得的片内RAM单元中内单元中内 容与容与CY及累加器及累加器A中的数中的数 相减,相减, “差差”存放于累加器存放于累加器 A中中SUBB A, #data; 1001 0100 (A) -CY -#data A 将立即数的将立即数的8位无符号二进位
45、无符号二进 data 制数与制数与CY及累加器及累加器A中的数相中的数相 减,减, “差差”存放于累加器存放于累加器A中中 说明:这组指令的功能是从累加器这组指令的功能是从累加器A A中减去源操作数所指出的数中减去源操作数所指出的数及进位位及进位位CYCY的值的值, ,差保留在累加器差保留在累加器A A中。中。由于由于89C5189C51指令系统中没有不带借位的减法指令,如需要的话,可指令系统中没有不带借位的减法指令,如需要的话,可以在以在“SUBBSUBB”指令前用指令前用“CLR CCLR C”指令将指令将CyCy清清0 0,这一点必须注意,这一点必须注意。例:设(例:设(A A)=0C9
46、H,=0C9H,(R2R2)=54H,Cy=1=54H,Cy=1。 执行指令执行指令“SUBB ASUBB A, R2R2”的结果如何?的结果如何? 解:解:(A A)=0C9H= 11001001 B=0C9H= 11001001 B- - ) Cy= 1 = 00000001 BCy= 1 = 00000001 B 11001000 B 11001000 B - -) (R2R2)=54H = 01010100 B=54H = 01010100 B (A A)=74H = 01110100 B=74H = 01110100 B结果为:(结果为:(A A)=74H=74H标志位为:标志位为:
47、Cy=0 AC=0 OV=1 P=0Cy=0 AC=0 OV=1 P=0 4 4、 乘法指令(乘法指令(1 1条)条)该指令若乘积大于0FFH,则OV置1,否则OV清0。Cy位总是被清0。汇编指令格式汇编指令格式 机器码格式机器码格式 操作操作 MUL AB ; 1010 0100 (A)(B)B15-8A7-0该指令将累加器该指令将累加器A和寄存器和寄存器B中两个无符号数相乘,所得中两个无符号数相乘,所得16位积的低字位积的低字节存放在节存放在A中,高字节存放中中,高字节存放中B中。中。例:(A)=4EH,(B)=5DH,执行指令“MUL AB”后结果如何? 解: 结果为:(结果为:(B B
48、)=1CH, =1CH, (A A)=56H=56H, 表示积(表示积(BABA)=1C56H=1C56H,OV=1OV=1。 5 5、 除法指令(除法指令(1 1条)条)例:(例:(A A)=BFH=BFH,(,(B B)=32H=32H。执行指令。执行指令“DIV ABDIV AB”后后: : 结果为(结果为(A A)=03H=03H,(,(B B)=29H=29H; 标志位标志位 CY=0CY=0,OV=0OV=0。汇编指令格式汇编指令格式 机器码格式机器码格式 操作操作 DIV AB ; 1000 0100 (A)/(B)的商的商 A,(A)/(B)的余数的余数 BA A中内容除以中内
49、容除以B B中内容,整数商存于中内容,整数商存于A A中,余数存于中,余数存于B B中。中。该指令执行后,CY和OV均被清0。若原(B)=00H,则结果无法确定,用OV=1表示,CY仍为0。 6 6、 加加1 1指令(指令(5 5条)条) 该组指令的操作不影响PSW。若原单元内容为FFH,加1后溢出为00H,也不影响PSW标志。汇编指令格式汇编指令格式 机器码格式机器码格式 操作操作 注释注释INC A INC A ; 0000 0100 (A)+1 0000 0100 (A)+1 A A A A中内容加中内容加1 1。INC RnINC Rn; 0000 1rrr (Rn)+1 0000 1
50、rrr (Rn)+1 Rn RnRn Rn中内容加中内容加1 1。INC directINC direct; 0000 0101 (direct)+10000 0101 (direct)+1direct directdirect direct单元中内容加单元中内容加1 1。 directdirectINC RiINC Ri; 0000 011i (Ri)+10000 011i (Ri)+1(Ri) Ri(Ri) Ri间接寻址所得的片内间接寻址所得的片内RAMRAM 单元中内容加单元中内容加1 1。INC DPTRINC DPTR; 1010 0011 (DPTR)+1 1010 0011 (D
51、PTR)+1 DPTR DPTR DPTR DPTR中内容加中内容加1 1例:比较指令“INC A”和“ADD A,#01H”的结果。解:“INC A”指令只将A的内容加1,标志位没有变化。而“ADD A,#01H”指令不仅将A的内容加1,还影响标志位变化。例:例: 若:(若:(R1R1)=30H =30H ,(,(30H30H)=11H=11H 求执行下面指令后的结果。求执行下面指令后的结果。INC R1INC R1; (30H)=12H(30H)=12HINC R1 INC R1 ; (R1)=31H(R1)=31H解:结果为:(解:结果为:(30H30H)=12H=12H,(,(R1R1
52、)=31H=31H。 不影响不影响PWS.PWS.7 7、 减减1 1指令指令(4(4条条) )汇编指令格式汇编指令格式 机器码格式机器码格式 操作操作 注释注释DEC A DEC A ; 0001 0100 (A)-1 0001 0100 (A)-1 A A A A中内容减中内容减1 1。DEC RnDEC Rn; 0001 1rrr (Rn)-1 0001 1rrr (Rn)-1 Rn RnRn Rn中内容减中内容减1 1。DEC directDEC direct; 0001 0101 (direct)-10001 0101 (direct)-1direct directdirect di
53、rect单元中内容减单元中内容减1 1。 directdirectDEC RiDEC Ri; 0001 011i (Ri)-10001 011i (Ri)-1(Ri) Ri(Ri) Ri间接寻址所得的片内间接寻址所得的片内RAMRAM 单元中内容减单元中内容减1 1。 该组指令的操作不影响PSW。8、 十进制调整指令(1条)汇编指令格式汇编指令格式 机器码格式机器码格式 操作操作 DA ADA A; 1101 01001101 0100若若 (A(A0-30-3)9)9或或AC=1AC=1,则,则(A(A0-30-3)+6A)+6A0-30-3同时,若同时,若(A(A4-74-7)9)9或或C
54、Y=1CY=1,则,则(A(A4-74-7)+6A)+6A4-74-7该指令该指令调整累加器内容为调整累加器内容为BCDBCD码码。 这条指令跟在这条指令跟在ADDADD或或ADDCADDC指令后指令后, ,将相加后存放在累加器中将相加后存放在累加器中的结果进行十进制调整的结果进行十进制调整, ,完成十进制加法运算功能。完成十进制加法运算功能。 必须注意,本指令不能简单地把累加器必须注意,本指令不能简单地把累加器A的的16进制数变换进制数变换成成BCD码,也不能用于十进制减法的调整。码,也不能用于十进制减法的调整。 例例: : 设累加器设累加器A A内容为:内容为:01010110B01010
55、110B(即为(即为5656的的BCDBCD码),寄存器码),寄存器R3R3的的内容为内容为01100111B01100111B(即(即6767的的BCDBCD码),码),CYCY内容为内容为1 1。求执行下列指令后的。求执行下列指令后的结果。结果。 ADDC AADDC A,R3R3;DA ADA A;解:先执行解:先执行ADDC AADDC A,R3R3; (A A):): 0101 0110 BCD0101 0110 BCD:5656 (R3R3):): 0110 0111 BCD0110 0111 BCD:6767 (+ +)()(CYCY):): 0000 0001 BCD0000
56、0001 BCD:01 01 和和 : 1011 11101011 1110即(即(A A)=1011 1110 =1011 1110 且影响标志位且影响标志位 CY=0CY=0,AC=0AC=0; 再执行再执行DA ADA A; 因为因为A A中的高四位值为中的高四位值为1111,大于,大于9 9,低四位值为,低四位值为1414,也大于,也大于9 9,所以内部调整自动进行加所以内部调整自动进行加66H66H的操作:的操作: 1011 11101011 1110 调整调整+ +) 0110 0110 0110 0110 1 0010 0100 BCD 1 0010 0100 BCD:12412
57、4即(即(A A)=0010 0100=24BCD=0010 0100=24BCD,CY=1CY=1;AC=1AC=1。3.3.3 3.3.3 逻辑操作指令逻辑操作指令 逻辑操作指令包括:与、或、异或、清除、求反、移位等操作。逻辑操作指令包括:与、或、异或、清除、求反、移位等操作。该指令组全部操作数都是该指令组全部操作数都是8位位25条指令。条指令。 1.1.简单操作指令(简单操作指令(2 2条)条) 2.2.移位指令(移位指令(4 4条)条) 3 3. .逻辑逻辑“与与”指令(指令(6 6条)条) 4 4. 逻辑逻辑“或或”指令(指令(6条)条) 5 5. .逻辑逻辑“异或异或”指令(指令(
58、6 6条)条)1 .1 .简单操作指令(简单操作指令(2 2条)条)汇编指令格式汇编指令格式 机器码格式机器码格式 操作操作 注释注释CLR A CLR A ; 1110 0100 0 1110 0100 0 A A 累加器累加器A A清清0 0指令,只影响标志位指令,只影响标志位P P。CPL A CPL A ; 1111 0100 (A) ) A 累加器累加器A A取反取反指令指令,不影响标志位,不影响标志位2 .2 .移位指令(移位指令(4 4条)条)汇编指令格式汇编指令格式 机器码格式机器码格式 操作操作 注释注释RL A RL A ; 0010 0011 A0010 0011 A中内
59、容循环左移一位。中内容循环左移一位。 a7 a7 a0 RR A RR A ; 0000 0011 A0000 0011 A中内容循环右移一位。中内容循环右移一位。 a7 a0 a7 a0 RLC A RLC A ; 0011 0011 A0011 0011 A中内容连同进位位中内容连同进位位CYCY一起循一起循 CY a7 a0 CY a7 a0 环左移一位。环左移一位。 RRC A RRC A ; 0001 0011 A0001 0011 A中内容连同进位位中内容连同进位位CYCY一起循一起循 CY a7 a0 CY a7 a0 环右移一位。环右移一位。 我们通常用我们通常用RLC A指令
60、将累加器指令将累加器A的内容做乘的内容做乘2运算。运算。 例如:无符号例如:无符号8位二进制数位二进制数 (A)=10111101B=BDH,(,(CY)=0。 将(将(A)乘)乘2,执行指令,执行指令 “RLC A”后后结果:(结果:(A)=0111 1010B=7AH,(,(CY)=1,而,而17AH正是正是BDH的的2倍。倍。3. 3. 逻辑逻辑“与与”指令(指令(6 6条)条)汇编指令格式汇编指令格式机器码格式机器码格式 操作操作ANL AANL A, RnRn;0101 1rrr(A)(Rn) A ANL AANL A,directdirect;0101 0101 (A)(direc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗器械经营企业追溯管理规范培训试题及答案
- 中心静脉导管护理规范全流程系统化管理指南
- 第9课 中世纪城市和大学的兴起 导学案 (含答案)2025-2026学年历史人教部编版九年级上册
- 2025《窦娥冤》悲剧成因课件
- 小学课外活动场所安全工作职责培训
- 2026广东安全员C2证土建类考试题库含新版试题解析、考试技巧和模拟考试助力专职安全生产管理人员备考
- 设备使用制度培训
- 2026年广东茂名幼儿师范专科学校单招职业倾向性测试题库含答案详解(预热题)
- 2025《林教头风雪山神庙》反抗的无奈与悲壮课件
- 2026年广西制造工程职业技术学院单招职业技能考试题库带答案详解(突破训练)
- 《特种劳动防护用品产品生产许可证实施细则》(安全帽产品部分)
- 风管制作加工合同范本
- 寄生虫疫苗研发进展-洞察及研究
- 产品研发流程阶段成果汇报模板
- 青贮机械出租合同范本
- (完整版)信号司索工考试试卷及答案
- 长护险知识培训课件
- 《利用勾股定理解决最短路径问题【转化思想】》专题课件
- 2025年游戏代练计时报酬合同协议
- 季风的课件教学课件
- 2025比亚迪供应商审核自查表
评论
0/150
提交评论