




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章第三章 指令系统及程序设计举例指令系统及程序设计举例Exit3.3 3.3 MCS-51指令系统指令系统3.1 3.1 汇编语言汇编语言3.2 3.2 寻址方式寻址方式3.4 3.4 程序设计举例程序设计举例23.1 3.1 汇编语言汇编语言3.1.1 3.1.1 指令和程序设计语言指令和程序设计语言3.1.2 3.1.2 指令格式指令格式BACK33.1.1 3.1.1 指令和程序设计语言指令和程序设计语言指令:指令:是是CPU根据人的意图来执行某种操作的命令。根据人的意图来执行某种操作的命令。程序设计语言:程序设计语言:是实现人机交换信息的基本工具,是实现人机交换信息的基本工具,分为
2、机器语言、汇编语言和高级语言。分为机器语言、汇编语言和高级语言。机器语言:机器语言:用二进制编码表示每条指令,是计算机用二进制编码表示每条指令,是计算机能直接识别和执行的语言。能直接识别和执行的语言。汇编语言:汇编语言:是用助记符、符号和数字等来表示指令是用助记符、符号和数字等来表示指令的程序设计语言。它与机器语言指令是一一对应的。的程序设计语言。它与机器语言指令是一一对应的。BACK4用机器语言编写的程序称为机器语言程序或者指令程序(机器码程序),因为机器只能直接识别和执行这种机器码程序,所以又称他为目标程序目标程序。51单片机是8位机,其机器语言以8位二进制码为单位,称为1字节。eg:要做
3、10+20的加法,在51单片机中可用机器码指令编程:01110100 00001010 把把10放入累加器放入累加器A中中00100100 00010100 A加加20,结果仍然放在,结果仍然放在A中中为了便于书写和记忆,可采用为了便于书写和记忆,可采用16进制表示指令码,以上指令可写进制表示指令码,以上指令可写为:为: 74 0AH 24 14H显然,用机器语言编写程序,不易记忆,不易差错、修改,显然,用机器语言编写程序,不易记忆,不易差错、修改,因此为了克服这些,采用汇编语言。,因此为了克服这些,采用汇编语言。 指令的三种表示形式指令的三种表示形式l二进制:l十六进制:l助记符: MCS5
4、1指令系统中共有42种助记符,代表了33种不同的功能。例如MOV是数据传送的助记符。如ADD A, #08H;十六进制形式为2408H.从记忆和理解的角度助记符更有优势。63.1.2 3.1.2 指令格式指令格式MCS-51汇编语言指令格式汇编语言指令格式操作码操作码 目的操作数目的操作数,源操作数,源操作数;注释;注释字节数:指令编译成机器码后在中占用的空间。汇编语言指令对应的二进制代码格式汇编语言指令对应的二进制代码格式单字节指令单字节指令(条)双字节指令双字节指令(5条)三字节指令三字节指令(7条)BACK7单字节指令单字节指令491、无操作数:指令码中隐含着对某一种寄指令码中隐含着对某
5、一种寄存器的操作存器的操作如:指令如:指令“INC DPTR”的指令代码格式的指令代码格式为:为:A3H=1 0 1 0 0 0 1 12、含有操作数寄存器号:由指令中的由指令中的rrr三三位的不同编码指定某一寄存器位的不同编码指定某一寄存器如:指令如:指令“MOV A,Rn”的指令代码格的指令代码格式为:式为:1 1 1 0 1 r r r BACK8双字节指令双字节指令45用一个字节表示操作码,另一个字节表用一个字节表示操作码,另一个字节表示操作数或操作数所在的地址。示操作数或操作数所在的地址。格式为:格式为:操作码操作码立即数或地址立即数或地址BACK如:MOV A , #data ;
6、INC direct9三字节指令三字节指令16一个字节操作码,两个字节操作数。一个字节操作码,两个字节操作数。格式为:格式为:操作码操作码立即数或地址立即数或地址立即数或地址立即数或地址BACKMOV DPTR, #data16 MOV direct, #data CJNE A, #data, rel LCALL addr16103.2 3.2 寻址方式寻址方式一、什么是寻址方式:一、什么是寻址方式:如何找到存放操作数如何找到存放操作数的地址,把操作数提取出来的方法。的地址,把操作数提取出来的方法。二、寻址方式的种类:二、寻址方式的种类:三、寻址空间及符号注释:三、寻址空间及符号注释:BACK
7、11二、寻址方式的种类:二、寻址方式的种类:1、寄存器寻址、寄存器寻址2、直接寻址、直接寻址3、立即数寻址、立即数寻址4、寄存器间接寻址、寄存器间接寻址 5、变址寻址、变址寻址6、相对寻址、相对寻址 7、位寻址、位寻址BACK121、寄存器寻址、寄存器寻址寄存器寻址:寄存器寻址:由指令指出寄存器组由指令指出寄存器组R0R7中的某一个或其他寄存器中的某一个或其他寄存器(A,B,DPTR等等)的内的内容作为操作数。容作为操作数。例如:例如:MOV A,R0;(R0)A MOV P1,A;(A)P1口 ADD A,R0;(A)+(R0)ABACK132、直接寻址、直接寻址直接寻址方式:直接寻址方式:
8、在指令中直接给出操作数所在存储在指令中直接给出操作数所在存储单元的地址。指令中操作数部分是操作数所在地址。单元的地址。指令中操作数部分是操作数所在地址。直接寻址方式可访问片内直接寻址方式可访问片内RAM的的128个单元以及所有个单元以及所有的的SFR。对于。对于SFR,既可以使用它们的地址,也可以,既可以使用它们的地址,也可以使用它们的名字。使用它们的名字。例如:例如:MOV A,3AH;(3A) A MOV A,P1;(P1口口) A 或:或: MOV A,90H; 90H是是P1口的地址口的地址BACK MOV A,52H ;把片内RAM字节地址52H单元的内容送累加器A中。MOV 52H
9、,A ;把A的内容传送给片内RAM的52H单元中。MOV 50H,60H ;把片内RAM字节地址60H单元的内容送到50H单元中。MOV IE,#40H ;把立即数40H送到中断允许寄存器IE。IE为专用功能寄存器,其字节地址为0A8H。该指令等价于MOV 0A8H,#40H。INC 60H ;将地址60H单元中的内容自加1。l 图3.2直接寻址方式示意图 3 立即数寻址 立即寻址方式是操作数包括在指令字节中,指令操作码后面字节的内容就是操作数本身,其数值由其数值由程序员在编制程序时指定,以指令字节的形式存放程序员在编制程序时指定,以指令字节的形式存放在程序存储器中在程序存储器中。立即数只能作
10、为源操作数,不能当作目的操作数。用用“#”号表示,以区别直接地号表示,以区别直接地址。址。 例如: MOV A,#52H ;A52H MOV DPTR,#5678H ;DPTR5678H 立即寻址示意图如3.1所示。 l 图3.1 立即寻址示意图 由指令指出某一个寄存器的内容作为操作数地址,这种寻址方式称为寄存器间接寻址。 寄存器间接寻址只能使用寄存器寄存器间接寻址只能使用寄存器R0R0或或RlRl作为地址指针,来寻址内部RAM(00HFFH)中的数据。寄存器间接寄存器间接寻址也适用于访问外部寻址也适用于访问外部64K64K的的RAMRAM,可使用R0R0,RlRl或或DPTRDPTR作为地址
11、指针。寄存器间接寻址用符号“”表示。 例如: MOV R0,#31H ;R031H MOV A, R0 ;A (R0) MOV A ,R1 ;A (R1) 例如:MOV DPTR,#3456H ;DPTR3456H MOVX A,DPTR ;A (DPTR)是把DPTR寄存器所指的那个外部数据存储器(RAM)的内容传送给A,假设(3456H)=99H,指令运行后(A)=99H。4、寄存器间接寻址、寄存器间接寻址 图3.3 寄存器间接寻址方式示意图 20例如:例如:将片内RAM 65H单元内容47H送A,可执行指令“MOV A,R0”。其中R0内容为65H。如图所示:65H47HR0A47H数据
12、存储器数据存储器地址65H以指令中所指定以指令中所指定的的R0内容(内容(65H)为指针为指针将片内将片内RAM 65H单元内容单元内容47H送送ABACK215、变址寻址、变址寻址(基址寄存器基址寄存器+变址寄存器间接寻址变址寄存器间接寻址)变址寻址:变址寻址:以某个寄存器的内容为基地址,在这个基地址的基础上加上地址偏移量形成真形成真正的操作数地址正的操作数地址。采用DPTR或PC为基址寄存器,A的内容为变址寄存器。两个寄存器的内容作为无符号数相加形成16位的地址,改地址为操作数的地址变址寻址只能访问程序存储器,访问范围为64KB。多用于查表指令。多用于查表指令。仅有仅有3条:条:MOVC
13、A,A + DPTR MOVC A,A + PC JMP DPTR22例如:例如:MOVC A,A+DPTR;(A)+(DPTR)A如图所示如图所示1EH0302HROMDPTRAA02F1H11H1EH+DPTR内容与内容与A的内容之的内容之和为程序存储器地址和为程序存储器地址程序存储器内容送程序存储器内容送ABACK236、相对寻址、相对寻址 相对寻址:相对寻址:是以当前的PC值加上指令中规定的偏移量rel而形成实际的转移地址。相对寻址只出现在相对转移指令中。相对寻址只出现在相对转移指令中。用于访问用于访问ROM当前的PC值是指执行完相对指令后的PC值;相对转移指令操作码所在地址称为源地址
14、;转移后的地址称为目的地址。目的地址目的地址=源地址源地址+相对转移指令字节数相对转移指令字节数+relrel为补码表示的有符号数,在在-128+127之间。之间。例如:例如:jc rel 原地址原地址1000H,rel=75H 则目的地址则目的地址1077HBACK247、位寻址、位寻址位寻址:位寻址:采用位寻址方式的指令的操作数是8位二进制数中的某一位,指令中给出的是位地址。位地址在指令中用bit表示。例如:CLR bit;位地址的两种表示方法:位地址的两种表示方法:直接使用位地址,如D3H;直接用寄存器名字加位数,如PSW.3。位寻址区域:位寻址区域:片内RAM的20H-2FH的16个单
15、元中的128位;字节地址能被8整除的SFR。BACK MCS-51单片机中设有独立的位处理器。位操作指令能对内部RAM中的位寻址区(20H2FH)和某些有位地址的特殊功能寄存器进行位操作。SETB P1.7 ;P1.71CLR 00H ;(00H)0MOV C,57H ;将57H位地址的内容传送到 位C中 MOV ACC.0 ,80H ;把P0口的最低位数据送A中的最低位。 ANL C,5FH ;将5FH位状态与进位位C相 与,结果在C中 26三、寻址空间及符号注释三、寻址空间及符号注释1、寻址空间:见表、寻址空间:见表3-1。2、符号注释:符号注释:BACK27表表3-1 操作数寻址方式和有
16、关空间操作数寻址方式和有关空间寻址方式寻址空间立即数寻址程序存储器 ROM直接寻址片内 RAM 低 128B、特殊功能寄存器寄存器寻址工作寄存器 R0-R7、A、B、C、DPTR寄存器间接寻址片内 RAM 低 128B、片外 RAM变址寻址程序存储器(A+PC,A+DPTR)相对寻址程序存储器 256B 范围(PC+偏移量)位寻址片内 RAM 的 20H-2FH 字节地址、部分 SFRBACKR1R0SP28符号注释符号注释Rn(n=0-7):当前选中的工作寄存器组:当前选中的工作寄存器组R0-R7。Ri(I=0,1):作为地址指针的两个工作寄存器:作为地址指针的两个工作寄存器R0,R1。#d
17、ata:8位立即数。位立即数。#data16:16位立即数。位立即数。direct:8位片内位片内RAM单元(包括单元(包括SFR)的直接地址。)的直接地址。addr11:11位目的地址,用于位目的地址,用于ACALL和和AJMP指令中。指令中。addr16:16位目的地址。用于位目的地址。用于LCALL和和LJMP指令中。指令中。rel:补码表示的:补码表示的8位地址偏移量。范围:位地址偏移量。范围:-128-+127D。DPTRDPTR数据指针,可用作数据指针,可用作1616位的地址寄存器。位的地址寄存器。A A累加器累加器B B寄存器,用于寄存器,用于MULMUL和和DIVDIV指令中。
18、指令中。C C进位标志或进位位。进位标志或进位位。BACK29bit:片内:片内RAM或或SFR的直接寻址位地址。的直接寻址位地址。:间接寄存器的符号。:间接寄存器的符号。/:位操作指令中对该位先取反再参与操作,不影响原值。:位操作指令中对该位先取反再参与操作,不影响原值。():中的内容。中的内容。():指出的地址单元中的内容。指出的地址单元中的内容。:指令操作流程方向。:指令操作流程方向。BACKMCS-51MCS-51指令系统可分为五大类指令系统可分为五大类1 1 数据传送指令:数据传送指令:2828条条2 2 算术运算指令:算术运算指令:2424条条3 3 逻辑运算及移位指令:逻辑运算及
19、移位指令:2525条条4 4 控制转移指令:控制转移指令:1717条条5 5 位操作指令(布尔操作):位操作指令(布尔操作):1717条条Back 3.3.1 3.3.1 数据传送指令数据传送指令(28条) 1.1.以累加器以累加器A A为目的操作数的指令为目的操作数的指令 (4(4条条, ,即即4 4种寻址方式种寻址方式) ) 2.2.以寄存器以寄存器RnRn为目的操作数的指令(为目的操作数的指令(3 3条)条) 3.3.以直接地址为目的操作数的指令(以直接地址为目的操作数的指令(5 5条)条) 4.4.以间接地址为目的操作数的指令(以间接地址为目的操作数的指令(3 3条)条)Back 5.
20、5.十六位数据传送指令十六位数据传送指令(1(1条条) ) 6.6.查表指令(查表指令(2 2条)条) 7.7.累加器累加器A A与片外与片外RAMRAM传送指令传送指令(4(4条条) ) 8.栈操作指令(二条) 9.9.交换指令交换指令(4(4条条) )Back数据传送类指令用到的助记符有:MOV,MOVX,MOVC,XCH,XCHD,PUSH,POP。Back1.1.以累加器以累加器A A为目的操作数的指令为目的操作数的指令(4(4条条, ,即即4 4种寻址方式种寻址方式) )汇编指令格式机器码格式操作注释MOV A,Rn;1110 1rrr(Rn) 将工作寄存器 Rn(即R0R7)内容传
21、送到累加器A 中MOV A,direct;1110 0101direct(direct) 将直接寻址所得的片内RAM 单元内容或特殊功能寄存器中的内容传送到累加器A 中MOV A,Ri;1110 011i(Ri) 将间接寻址(Ri 为 R0或 R1)所得的片内 RAM单元内容或特殊功能积存器中的内容传送到累加器A中MOV A,#data;0111 0100data #data 将立即数传送到累加器A中例:例: MOV AMOV A,#30H #30H ;(;(A A)=30H=30H MOV A MOV A, 30H 30H ;(;(A A)=11H=11H MOV A MOV A,R1 R1
22、 ;(;(A A)=11H=11H MOV A MOV A,R1 R1 ;(;(A A)=30H=30H 2 2 、以寄存器、以寄存器RnRn为目的操作数的指令(为目的操作数的指令(3 3条)条)汇编指令格式 机器码格式操作注释MOV Rn,A;1111 1rrr Rn将累加器 A 中内容传送到工作寄存器 Rn(即R0-R7)中MOV Rn,direct;1010 1rrrdirect(direct) Rn将直接寻址所得的片内 RAM 单元内容或特殊功能寄存器中的内容传送到工作寄存器Rn(即R0-R7)中MOV Rn,#data;0111 1rrrdata#data Rn将立即数传送到工作寄存
23、器Rn (即R0-R7)中Back 这组指令的功能是把源操作这组指令的功能是把源操作数所指定的内容送到当前工作寄数所指定的内容送到当前工作寄存器组存器组R0R7R0R7中的某个寄存器。中的某个寄存器。源源操作数有寄存器寻址,立即数寻操作数有寄存器寻址,立即数寻址和直接寻址三种方式。址和直接寻址三种方式。如:(如:(A A)=78H=78H,(,(R5R5)=47H=47H,(,(70H70H)=F2H=F2H,执行指令:执行指令:MOV R5MOV R5,A A ;(;(A A)R5R5, (R5R5)=78H=78HMOV R5MOV R5,70H 70H ;(;(70H70H)R5R5,
24、(R5R5)=F2H=F2HMOV R5MOV R5,#A3H#A3H; A3HA3HR5R5, (R5R5)=A3H=A3H注意注意,在,在89C5189C51指令系统中没有指令系统中没有“MOV MOV RnRn,RnRn”传送指令。传送指令。Back 3 3 、以直接地址为目的操作数的指令(、以直接地址为目的操作数的指令(5 5条)条)汇编指令格式 机器码格式操作注释MOV direct,A;1111 0101 direct(A) direct将累加器 A 中内容传送到直接地址direct所指出的片内存储单元中。MOV direct,Rn;111 1rrr direct(Rn) dire
25、ct将工作寄存器Rn(即R0-R7)中内容传送到直接地址 direct所指出的片内存储单元中BackMOV direct, direct; 1000 0101 源direct目的direct(源direct)目的direct将直接地址源direct所指出的片内存储单元中内容传送到直接地址目的 direct 所指出的片内存储单元中MOV direct,Ri;1000 011i direct(Ri) direct将间接寻址 (Ri为R0或R1) 所得的片内RAM单元内容传送到直接地址 direct 所指出的片内存储单元中MOV direct,#data;0111 0101 direct data#
26、data direct将立即数传送到直接地址 direct 所指出的片内存储单元中Back4 4 、以间接地址为目的操作数的指令(、以间接地址为目的操作数的指令(3 3条)条)汇编指令格式 机器码格式操作注释MOV Ri, A ;1111 011i(A) (Ri)将累加器A 中内容传送到间接寻址(Ri 为 R0或R1)所得的片内RAM单元中。MOV Ri, direct;0101 011i direct(direct) (Ri)将直接寻址所得的片内RAM 单元内容或特殊功能寄存器中的内容传送到间接寻址(Ri 为 R0或R1)所得的片内RAM单元中MOV Ri, #data ;0111 011I
27、data#data (Ri)将立即数传送到间接寻址(Ri为R0或R1)所得的片内RAM单元中BackBackRidirectRn#dataACC图36 传送指令在片内存储器的操作功能5 5、 十六位数据传送指令十六位数据传送指令(1(1条条) ) 这条指令的功能是把这条指令的功能是把1616位常数送入位常数送入DPTRDPTR。DPTRDPTR由由DPHDPH和和DPLDPL组成。组成。汇编指令格式机器码格式操作注释MOV DPTR, #data16;1000 0000高位字节低位字节dataH DPHdataL DPL将高 8 位立即数dataH 送入 DPH,低 8 位立 即 数dataL
28、 送入 DPL。Back例:例:MOV DPTR #1000HMOV DPTR #1000H;(DPTRDPTR)=1000H=1000H, (DPHDPH)=10H=10H,(DPLDPL)=00H=00H Back6 6 、查表指令(、查表指令(2 2条)条)汇编指令格式机器码格式操作注释MOVC A,A+DPTR;1001 0011先(PC)+1 PC,后(A)+(DPTR) A(远程查表)MOVC A, A+PC;1000 0011先(PC)+1 PC,后(A)+(PC) A(近程查表)Back基地址寄存器+变址寄存器间接寻址PC+A(程序存储器0-64K)基地址寄存器+变址寄存 器间
29、接寻址DPTR+A(程序存储器0-64K)A寄存器图图3-7 3-7 程序存贮器传送(查表)程序存贮器传送(查表)例: 若:初始 ROM 内容 2000H00H2001H01H2002H09H2003H04H2004H06H2005H08H2006HFFH2007H66H2008H45H2009HABH200AH11HH执行下面程序段后结果如何?执行下面程序段后结果如何?MOV DPTR, #2000H MOV DPTR, #2000H ;(;(DPTRDPTR)=2000H=2000HMOV A , #0AH MOV A , #0AH ;(;(A A)=0AH=0AHMOVC A , A+D
30、PTRMOVC A , A+DPTR;( (A A) )= =(A A) )+ +(DPTRDPTR)= =(200AH200AH)则:则:(A)=(200AH)=11H(A)=(200AH)=11H 1000H74 0DMOVA, #0DH;(A)=0DH1002H83MOVC A, A+PC;(PC)=1002+1=1003H,(A)=( (A)+(PC) )=(0D+1003)=(1010H)(A)=01H1003HF8MOV R0, A;(R0)=(A)=01H 所以,最后结果为:所以,最后结果为:(A)=01 (R0)=01 (A)=01 (R0)=01 (PC)=1004(PC)=
31、1004Back例例: :机器码7 7、 累加器累加器A A与片外与片外RAMRAM传送指令传送指令(4(4条条) ) 在 8051 指令系统中,CPU 对片外 RAM 的访问只能用寄存器间接寻址的方式,且仅有四条指令:Back汇编指令格式机器码格式操作注释MOVX 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位地址指针,寻
32、址范围达位地址指针,寻址范围达64KB64KB。其功能是。其功能是DPTRDPTR所指定的片外数据存储器与累加器所指定的片外数据存储器与累加器A A之间之间传送数据。传送数据。第第1 1,3 3两条指令是用两条指令是用R0R0或或R1R1作低作低8 8位地址指位地址指针,由针,由P0P0口送出,寻址范围是口送出,寻址范围是256256字节。这两字节。这两条指令完成以条指令完成以R0R0或或R1R1为地址指针的片外数据存为地址指针的片外数据存储器与累加器储器与累加器A A之间的传送数据。之间的传送数据。上述四条指令的操作如图上述四条指令的操作如图3-83-8所示所示: :寄存器寄存器间接寻址 寄
33、存器间接寻址 R1.R0DP(外RAM0-255) ( 外RAM0-64K)图 3-8 外部数据存储器传送操作例例: : 若:片内若:片内RAM (30H)=01HRAM (30H)=01H,片外,片外RAM RAM (30H)=02H(30H)=02H,执行下面程序段后的结果如何,执行下面程序段后的结果如何。MOV R1, #30H;(R1)=30H MOVX A, R1 ;(A)=02H MOV R0, A ;(R0)=(A)=02H MOV A,R1 ; (A)=(R1)=01H MOV R2, A ;(R2)=(A)=01HBack 8 、栈操作指令(二条)堆栈:先进后出,后进先出。汇
34、编指令格式机器码格式操作注释PUSH direct;1100 0000 direct先(SP)+1 SP,后(direct) (SP)PUSH(入栈)指令PUSH direct;1101 0000direct先(SP) direct, 后(SP)1 SPPOP(出栈)指令Back堆栈的用途主要是调用子程序时暂存断点地址和保护(恢复)现场数据。堆栈的用途主要是调用子程序时暂存断点地址和保护(恢复)现场数据。堆栈是一种存储部件,即数据的写入跟读出不需要提供地址,而是根据堆栈是一种存储部件,即数据的写入跟读出不需要提供地址,而是根据写入的顺序决定读出的顺序。写入的顺序决定读出的顺序。 例:例: MO
35、V SP, #18H; (SP)=18H MOV A, #30H; (A)=30H MOV DPTR, #1000H; (DPTR)=1000H PUSH A; (SP)=19H(19H)=30H PUSH DPH; (SP)=1AH(1AH)=10H PUSH DPL; (SP)=1BH(1BH)=00H继续上例继续上例: :POP DPL; (DPL)=00H (SP)=1AHPOP DPH; (DPH)=10H (SP)=19HPOP A ; (A)=30H (SP)=18HBack 9 9、 交换指令交换指令(4(4条条) )汇编指令格式机器码格式操作注释XCH A,Rn;1100 1
36、rrr(A) (Rn)XCH A, direct;1100 0101direct(A) (direct)XCH A, Ri;1100 011i(A) ( (Ri) )Back(1)字节变换指令 将第二操作数所指定的工作寄存器 Rn(R0R7),直接寻址和间接寻址的单元内容与累加器 A 中内容互换。其操作可表示为:A 一字节 源操作数 一字节例例: 初始时:(A)=34H,(30H)=11HXCH A, 30H ; (A)=11H,(30H)=34HMOV R1, #30H ; (R1)=30HXCH A, R1 ;(A)=34H,(30H)=11H(2) (2) 半字节交换指令半字节交换指令汇
37、编指令格式机器码格式操作注释XCHD A, Ri; 1101 011i(A03) (Ri)03)继续上例: XCHD A, R1 ; (A)=31H ; (30H)=14HBack3.3.2 3.3.2 算术运算指令算术运算指令2424条条 1 .1 .不带进位加法指令不带进位加法指令( (四条四条) ) 2 .2 .带进位加法指令(四条)带进位加法指令(四条) 3 .3 .带借位减法指令(四条)带借位减法指令(四条) 4 . 4 . 乘法指令(乘法指令(1 1条)条)Back 5 5、 除法指令(除法指令(1 1条)条) 6 6、 加加1 1指令(指令(5 5条)条) 7 7、 减减1 1指
38、令指令(4(4条条) ) 8 8、 十进制调整指令十进制调整指令(1(1条条) )Back1 1 、 不带进位加法指令不带进位加法指令( (四条四条) )Back汇编指令格式机器码格式操作注释ADD A, Rn;0010 1rrr(A)+(Rn) A将工作寄存器内容和累加器 A 中的数相加, “和”存放于累加器 A中ADD A,direct;0010 0101direct(A)+(direct) A将内部 RAM 单元内容和累加器 A中的 数相 加,“和”存放于累加器A中ADD A,Ri ;0010 011i(A)+(Ri) A将间接寻址(Ri为 R0 或 R1)所得的片内 RAM 单元中内容
39、和累加器 A 中的数相加, “和”存放于累加器A中ADD A, #data;0010 0100data(A)+#data A将立即数的 8 位无符号二进制数和累加器 A 中的数相加, “和”存放于累加器A中注意:如果参加运算的两个数是l 1无符号数,则从CY上判断是不产生了溢出l 2带符号数,则从OV上判断运算是否溢出l 其中OVCP CSl CP:最高位进位位CS:次高位进位位例:例:若: (A)=78H , (R0)=64H执行 ADD A,R0 后,结果及 PSW=? (A) :78H= 01111000 B + (R0) :64H= 01100100 B (A) :DCH= 11011
40、100 B 标志位: CY=0, AC=0, OV=1, P=1,即 PSW=05H 结果: (A)=DCH (R0)=64HBack2 2 、带进位加法指令(四条)、带进位加法指令(四条)Back汇编指令格式机器码格式操作注释ADDC A, Rn ;0011 1rrr(A)+CY+(Rn) A将工作寄存器内容、CY 位和累加器 A 中的数相加, “和”存放于累加器A 中ADDC A,direct; 0011 0101direct(A)+(direct)+CY A将内部 RAM 单元内容、CY 位和累加器 A 中的 数 相 加 ,“和”存放于累加器 A 中ADDC A,Ri;0011 011i
41、(A)+(Ri)+CY A将间接寻址 (Ri为 R0 或 R1)所得的片内RAM单元中内容、 CY位和累加器 A中的数相加,“和”存放于累加器A中ADDC A, #data;0011 0100data(A)+#data+CY A将立即数的 8位无符号二进制数、CY 位和累加器 A 中的数相加, “和”存放于累加器A中 本组指令的功能是同时把源操作数所指出的内容和进位标志未 CY 都加到累加器 A 中,结果存放到 A 中,其余的功能和上面的 ADD 指令相同。本组指令常用于多字节加法。例:设(A)=0C3H,(R0)=0AAH, (CY)=1。执行指令“ADDC A,R0”后的结果 及标志位如何
42、? 解: (A) : C3H=1100 0011+ (CY) : 1=0000 0001 1100 0100+ (R0) : AAH=1010 1010 (A) : 6EH=0110 1110标志位:CY=1,OV=1,AC=0,结果: (A)=6EH, (R0)=0AAH。例:编程,将(30H),(31H)单元中的数与 (40H),(41H)单元中的数相加,结 果存于(30H),(31H)单元中。解:MOV A, 30H ADD A, 40H MOV 30H, A MOV A, 31H ADDC A, 41H MOV 31H, ABack3 3 、带借位减法指令(四条)、带借位减法指令(四条
43、)汇编指令格式机器码格式操作注释SUBB A, Rn;1001 1rrr(A)-CY-(Rn) A将累加器 A 中的数减去 CY 位及工作寄存器内容“差”存放于累加器 A 中SUBB A,direct;1001 0101direct(A)-CY-(direct) A将累加器 A 中的数减去 CY 位及内部RAM单 元 内 容“差”存放于累加器 A 中BackSUBB A,Ri ;1001 011i(A)-CY-(Ri) A将累加器 A 中的数减去 CY 位及间接寻址(Ri 为 R0 或R1) 所得的片内 RAM单 元 中 内 容 ,“差”存放于累加器 A 中SUBB A, #data;1001
44、 0100data(A)-CY-#data A将累加器 A 中的数减去 CY 位及立即数的 8 位无符号二进制数, “差”存放于累加器 A 中 这组指令的功能是从累加器这组指令的功能是从累加器A A中减去中减去源操作数所指出的数及进位位源操作数所指出的数及进位位CYCY的值的值, ,差保留在累加器差保留在累加器A A中。中。由于由于89C5189C51指令系统中没有不带借位指令系统中没有不带借位的减法指令,如需要的话,可以在的减法指令,如需要的话,可以在“SUBB”SUBB”指令前用指令前用“CLR C”CLR C”指令将指令将CyCy清清0 0,这一点必须注意。,这一点必须注意。例:设(例:
45、设(A A)=0C9H,=0C9H,(R2R2)=54H,Cy=1=54H,Cy=1。 执行指令执行指令“SUBB ASUBB A, R2”R2”的结果如的结果如何?何? 解: (A)=0C9H= 11001001 B-) Cy= 1 = 00000001 B 11001000 B -) (R2)=54H = 01010100 B (A)=74H = 01110100 B结果为: (A)=74H标志位为:Cy=0 AC=0 OV=1 P=0Back 4 4、 乘法指令(乘法指令(1 1条)条)汇编指令格式机器码格式操作注释MUL AB ; 1010 0100(A)(B) B15-8 A7-0将
46、累加器 A 和寄存器 B 中两个无符号数相乘,所得 16位积的低字节存放在 A 中,高字节存放中B中。该指令若乘积大于该指令若乘积大于0FFH0FFH,则,则OVOV置置1 1,否则,否则OVOV清清0 0。CyCy位总是被清位总是被清0 0。Back例:(A)=4EH,(B)=5DH, 执行指令“MUL AB”后结果如何? 解: 结果为: (结果为: (B B)=1CH=1CH, , (A A)=56H=56H, 表示积(表示积(BABA)=1C56H=1C56H,OV=1OV=1。 Back5 5、 除法指令(除法指令(1 1条)条)汇编指令格式机器码格式操作注释DIV AB ;1000
47、0100(A)/(B)的商 A(A)/(B)的余数 BA 中内容除以 B中内容,整数商存于 A 中,余数存于B中。Back该该指指令令执执行行后后,C CY Y 和和 O OV V 均均被被清清 0 0。若若 原原(B B)= =0 00 0H H,则则结结果果无无法法确确定定,用用 O OV V= =1 1 表表示示,C CY Y 仍仍为为 0 0。 例例: (A A)= =B BF FH H, (B B)= =3 32 2H H。 执执行行指指令令“D DI IV V A AB B” 结结果果为为(A A)= =0 03 3H H, (B B)= =2 29 9H H; 标标志志位位 C
48、CY Y= =0 0,O OV V= =0 0。 Back 6 6、 加加1 1指令(指令(5 5条)条)汇编指令格式机器码格式操作注释INC A ;0000 0100(A)+1 AA 中内容加1。INC Rn;0000 1rrr(Rn)+1 RnRn 中内容加1。INC direct;0000 0101direct(direct)+1directDirect 单元中内容加1。INC Ri;0000 011I(Ri)+1 (Ri)Ri 间接寻址所得的片内 RAM 单元中内容加1。INC DPTR;1010 0011(DPTR)+1 DPTRDPTR中内容加1Back该组指令的操作不影响 PSW
49、。若原单元内容为 FFH,加 1 后溢出为 00H,也不影响 PSW标志。例:比较指令“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=12
50、H, (, (R1R1)=31H=31H。 不影响不影响 PWSPWS Back7 7、 减减1 1指令指令(4(4条条) )汇编指令格式机器码格式操作注释DEC A ;0001 0100(A)-1 AA 中内容减1。DEC Rn;0001 1rrr(Rn)-1 RnRn 中内容减 1。DEC direct;0001 0101direct(direct)-1directDirect 单元中内容减 1。DEC Ri;0001 011I(Ri)-1 (Ri)Ri 间接寻址所得的片内 RAM 单元中内容减 1。Back8 8、 十进制调整指令十进制调整指令(1(1条条) )汇编指令格式机器码格式操作
51、注释DA A;1101 0100若(A0-3)9或AC=1,则(A0-3)+6 A0-3同时,若(A4-7)9 或 CY=1,则(A4-7)+6 A4-7调整累加器内容为BCD 码。Back例例: : 设累加器设累加器A A内容为:内容为:01010110B01010110B(即为(即为5656的的BCDBCD码),寄存器码),寄存器R3R3的内容为的内容为01100111B01100111B(即(即6767的的BCDBCD码),码),CYCY内容为内容为1 1。求执行下列指令后的结果。求执行下列指令后的结果。 ADDC AADDC A,R3R3; DA ADA A; 再执行 DA A;因为
52、A 中的高四位值为 11,大于 9,低四位值为 14,也大于 9,所以内部调整自动进行加 66H的操作: 1011 1110 调整+) 0110 0110 1 0010 0100 BCD:124即(A)=0010 0100=24BCD,CY=1;AC=1。Back3.3.3 3.3.3 逻辑操作指令逻辑操作指令Back 1 .1 .简单操作指令(简单操作指令(2 2条)条) 2 .2 .移位指令(移位指令(4 4条)条) 3 .3 .累加器半字节交换指令累加器半字节交换指令(1 1条)条) 4. 4. 逻辑逻辑“与与”指令(指令(6 6条)条) 5. 逻辑逻辑“或或”指令(指令(6条)条) 6
53、 .6 .逻辑逻辑“异或异或”指令(指令(6 6条)条)Back1 .1 .简单操作指令(简单操作指令(2 2条)条)汇编指令格式机器码格式操作注释CLR A ;1110 01000 A清累加器A 为 0,只影响标志位P。Back(1) (1) 累加器累加器A A清清0 0指令指令(2)(2)累加器累加器A A取反指令取反指令汇编指令格式机器码格式操作注释CPL A ;1111 0100(A) A 对累加器A 内容逐位取反,不影响标志位Back2 .2 .移位指令(移位指令(4 4条)条)汇 编 指 令 格 式机 器 码 格 式操 作注 释RL A ;0010 0011 a7 a0累加器 A
54、的内容循环左移 一 位Back(1)(1)累加器累加器A A循环左移指令循环左移指令(2) (2) 累加器累加器A A循环右移指令循环右移指令 汇编指令格式机器码格式操作注释RR A ;0000 0011 a7 a0将累加器 A的内容循环右移一位(3) (3) 累加器累加器A A连同进位位循环左移指令连同进位位循环左移指令 RLCRLCA A ;汇编指令格式机器码格式操作注释RLC A ;0011 0011 CY a7 a0将累加器 A 的内容连同进位位CY一起循环左移一位。 我我们们通通常常用用 R RL LC C A A 指指令令将将累累加加器器 A A 的的内内容容做做乘乘 2 2运运算
55、算。 (4) (4) 累加器累加器A A连同进位位循环右移指令连同进位位循环右移指令 RRCRRCA A ;汇编指令格式机器码格式操作注释RRC A ;0001 0011 CY a7 a0将累加器 A 的内容连同进位位CY一起循环右移一位。例如:无符号例如:无符号 8 8 位二进制数位二进制数 (A A)=10111101B=BDH=10111101B=BDH, (, (CYCY)=0=0。 将(将(A A)乘)乘 2 2,执行指令,执行指令 “RLC ARLC A”后”后 结果: (结果: (A A)=0111=0111 1010B=7AH1010B=7AH, (, (CYCY)=1=1,
56、而而 17AH17AH 正是正是 BDHBDH 的的 2 2 倍。倍。 Back3 . 3 . 累加器半字节交换指令累加器半字节交换指令 汇编指令格式机器码格式操作注释SWAP A ;1100 0100(A0-3) (A4-7)将累加器 A 的高低两半字节交换。如如:A=FAH,执执行行指指令令 “SW AP A”后后, 结结果果为为: (A)=AFH Back4. 4. 逻辑逻辑“与与”指令(指令(6 6条)条)汇编指令格式机器码格式操作注释ANL A, Rn;0101 1rrr(A)(Rn) AANL A,direct;0101 0101direct(A)(direct) AANL A,
57、Ri;0101 011i(A)(Ri) AANL A, #data;0101 0100#data(A)#data AANL direct, A;0101 0010direct(direct)(A) directANL direct,#data;0101 0011direct#data(direct)#data directBack 这组指令中前四条指令是将累加器这组指令中前四条指令是将累加器A A的的内容和操作数所指出的内容按位进行逻内容和操作数所指出的内容按位进行逻辑辑“与与”,结果存放在,结果存放在A A中。中。后两条指令是将直接地址单元中的内容后两条指令是将直接地址单元中的内容和操作数所
58、指出的单元的内容按位进行和操作数所指出的单元的内容按位进行逻辑逻辑“与与”,结果存入直接地址单元中。,结果存入直接地址单元中。若直接地址正好是若直接地址正好是I/OI/O端口,则为端口,则为“读读改改写写”操作。操作。Back5. 逻辑逻辑“或或”指令(指令(6条)条)汇编指令格式机器码格式操作注释ORL A, Rn;0100 1rrr(A)(Rn) AORL A,direct;0100 0101direct(A)(direct) AORL A, Ri;0100 011i(A)(Ri) AORL A, #data;0100 0100#data(A)#data AORL direct, A;01
59、00 0010direct(direct)(A) directORL direct,#data;0100 0011direct#data(direct)#data directBack 这组指令的功能是将两个指定的操作数这组指令的功能是将两个指定的操作数按位进行逻辑按位进行逻辑“或或”,前四条指令的操,前四条指令的操作结果存放在累加器作结果存放在累加器A A中,后两条指令的中,后两条指令的操作结果存放在直接地址单元中。操作结果存放在直接地址单元中。Back6 .6 .逻辑逻辑“异或异或”指令(指令(6 6条)条)汇编指令格式机器码格式操作注释XRL A, Rn;0110 1rrr(A)(Rn)
60、AXRL A,direct;0110 0101direct(A)(direct)AXRL A, Ri;0110 011i(A)(Ri)AXRL A, #data;0110 0100#data(A)#dataAXRL direct, A;0110 0010direct(direct)(A)directXRL direct, #data; 01100011Direct#data(direct)V(#data)directBack 这组指令的功能是将两个指定的操作数这组指令的功能是将两个指定的操作数按位进行按位进行“异或异或”,前四条指令的结果,前四条指令的结果存放在累加器存放在累加器A A中,后两
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河南师范大学《专业实训》2023-2024学年第二学期期末试卷
- 从心理安全角度看学生的健康成长
- 智慧医疗与教育结合AI在儿童健康管理中的价值体现
- 黔南民族职业技术学院《水利工程施工组织实训》2023-2024学年第二学期期末试卷
- 抚州职业技术学院《宠物针灸》2023-2024学年第二学期期末试卷
- 昆明学院《第二外语Ⅱ》2023-2024学年第二学期期末试卷
- 淮阴工学院《美术表现(一)》2023-2024学年第二学期期末试卷
- 徽商职业学院《海关报关实务》2023-2024学年第二学期期末试卷
- 西安电子科技大学长安学院《电力工程信号处理应用》2023-2024学年第二学期期末试卷
- 护肤成份类课件
- 新世纪健康饮食课件
- 上海市2013年基准地价更新成果
- 道德与法治四年级(下)第二单元单元备课
- 苏州市吴江区2021-2022苏教版五年级数学下册期末试卷真题
- 《红楼梦》PPT课件(优秀)
- 新高考英语读后续写——故事编写思路
- “363生态课堂”模式及流程
- (高清版)建筑工程风洞试验方法标准JGJ_T 338-2014
- 钢构车棚施工组织方案
- HP彩色激光打印机节能证书
- 最新烟叶储存保管方法标准
评论
0/150
提交评论