版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 单单片机原理及片机原理及应应用用2012-2013-12指令系统概述指令系统概述第二章第二章 MCS-51MCS-51单片机的指令系统单片机的指令系统12寻址方式寻址方式3指令系统指令系统3第一节第一节 指令系统概述指令系统概述一、指令的形式一、指令的形式程序设计语言程序设计语言汇编语言:用易记的缩写符号表示机器语汇编语言:用易记的缩写符号表示机器语 言,与机器语言一一对应。言,与机器语言一一对应。 如如ADD A,B ; 25F0H MOV A,#14H; 24H 14H高级语言:高级语言:C51(针对开发针对开发51系列单片机系列单片机), PL/M(针对开发针对开发MCS-96系列单系
2、列单 片机片机)等等.机器语言:由机器语言:由0和和1组成,代码长,难记忆组成,代码长,难记忆; 如:如:“累加器加累加器加1”用机器语言表用机器语言表 示为:示为:“00000100”4二、汇编语言指令的格式二、汇编语言指令的格式第一节第一节 指令系统概述指令系统概述MCS-51汇编语言指令主要由汇编语言指令主要由操作码助记符操作码助记符和和操作数操作数组成组成操作码用来规定指令进行什么操作;操作码用来规定指令进行什么操作;操作数是指令操作的对象;操作数是指令操作的对象;5标号标号: 操作码助记符操作码助记符 目的操作数目的操作数 ,源操作数源操作数 ;注释注释指令格式:指令格式:标号:是存
3、储器的单元地位(符号地址),可以根据需要标号:是存储器的单元地位(符号地址),可以根据需要 进进 行设置。标号是以行设置。标号是以英文字母开始的英文字母开始的16个字母或数字组个字母或数字组 成的字符串标示,并以成的字符串标示,并以“:”结束。结束。操作码:操作码: 是指令的核心部分之一,规定了指令所实现的是指令的核心部分之一,规定了指令所实现的 操作,由操作,由25个英文字母表示个英文字母表示,如,如MOV操作数:操作数: 是指令的核心部分之一,是指令的核心部分之一, 包括包括源操作数和目的操源操作数和目的操 作数作数,用,用逗号分开逗号分开。表示参与传送、运算数据或数。表示参与传送、运算数
4、据或数 据地址据地址注释:注释: 是对指令的解释,可有可无。便于阅读程序,但汇编是对指令的解释,可有可无。便于阅读程序,但汇编 程序不对注释编译,与指令用程序不对注释编译,与指令用“;”隔开隔开6 ORG 1000H START: MOV A, 30H ;(30H )A CJNE A, #00H,LOOP1 MOV A, #00H SJMP LOOP3 LOOP1: AND A, #80H JNZ LOOP举例:举例:7三、三、MCS-51指令系统的分类指令系统的分类(111条指令条指令)根据指令所占存储器字节分根据指令所占存储器字节分单字节单字节49条条双字节双字节46条条三字节三字节16条
5、条根据指令执行周期数分根据指令执行周期数分单周期单周期64条条双周期双周期45条条四周期四周期2条条8根据指令功能分根据指令功能分数据传送类数据传送类29条条算术运算类算术运算类24条条逻辑运算类逻辑运算类24条条控制转移类控制转移类24条条位操作类位操作类24条条三、三、MCS-51指令系统的分类指令系统的分类(111条指令条指令)9第二节第二节 寻址方式寻址方式寻址方式:就是在寻址方式:就是在指令中寻找操作数所在地址指令中寻找操作数所在地址的方式的方式1、寄存器寻址、寄存器寻址 是以指令中是以指令中指定寄存器的内容作为操作数指定寄存器的内容作为操作数的寻址方式。的寻址方式。 寻址范围寻址范
6、围:11H33H22H33HR5R4R3内内RAMA如:指令如:指令MOV A,R3;表示把寄存器表示把寄存器R3中的内容传送给累中的内容传送给累加器加器A,而,而Rn中的数据保持不变。中的数据保持不变。 工作寄存器工作寄存器R0 R7(32个)、累加器个)、累加器A、通、通用寄存器用寄存器B 、地址寄存器、地址寄存器DPTR、位累加器、位累加器CY.102、直接寻址、直接寻址第二节第二节 寻址方式寻址方式 指令中直接指令中直接给出操作数所在单元地址给出操作数所在单元地址的寻址方式,即的寻址方式,即指令指令中给出的数据作为地址,该地址对应存储单元中的数据才是真中给出的数据作为地址,该地址对应存
7、储单元中的数据才是真正的操作数正的操作数。MOV A,66H 在MCS-51单片机,直接寻址范围:10101101000011111111100067H66H65H地址地址内内RAM01010101A内部低内部低128B的的RAM区和区和特殊功能寄存器特殊功能寄存器SFR区区。说明:对于说明:对于SFR,指令即可以用其地址也可以用其名字。指令即可以用其地址也可以用其名字。如:MOV A,80H与与MOV A,P0H等价等价113、寄存器间接寻址、寄存器间接寻址第二节第二节 寻址方式寻址方式 指令操作数的地址指令操作数的地址事先放在某个寄存器事先放在某个寄存器中,由该寄存器中,由该寄存器的的内容
8、指定操作数地址内容指定操作数地址的寻址方式。的寻址方式。 不能用这种寻址方式寻址特殊功能寄存器(不能用这种寻址方式寻址特殊功能寄存器(SFR)。)。 在片内低在片内低128B的的RAM用用R0和和R1间接寻址。间接寻址。 指令中间接寻址寄存器前指令中间接寻址寄存器前用用“”表示表示前缀。前缀。 当指向片外当指向片外64KB的的RAM地址空间时,地址空间时, 可用可用DPTR作间接寄存器作间接寄存器。 在在PUSH和和POP指令中,用堆栈指针指令中,用堆栈指针SP间接寻址。间接寻址。12以以R0作为间址寄存器方式:作为间址寄存器方式:MOV A , R0以以DPTR作为间址寄存器方式:作为间址寄
9、存器方式:55H AR055H取出取出地址地址78H78H3FFFH ADPTR3FFFH取出取出地址地址78H78HMOV DPTR,#3FFFHMOVX A, DPTR第二节第二节 寻址方式寻址方式134、立即数寻址、立即数寻址第二节第二节 寻址方式寻址方式指令指令中直接给出操作数中直接给出操作数的寻址方式。的寻址方式。操作数前操作数前必须带有必须带有“”对单字节立即数,若数值对单字节立即数,若数值A0H,则要在前面加则要在前面加0如:如:MOV A, #0A0H对双字节立即数,若数值对双字节立即数,若数值A000H,则要在前面加则要在前面加0如:如:MOV DPTR, #0B893H如:
10、如:MOV A, #05C0H145、变址间接寻址、变址间接寻址(基址寄存器基址寄存器+变址寄存器间接寻址变址寄存器间接寻址)第二节第二节 寻址方式寻址方式指令中指定指令中指定变址寄存器和基址寄存器的内容相加形成变址寄存器和基址寄存器的内容相加形成真正的操作数的地址。真正的操作数的地址。 该寻址方式该寻址方式常用于读取程序存储器的常数表常用于读取程序存储器的常数表,即,即进行查表进行查表操作。操作。变址寄存器:累加器变址寄存器:累加器A,即,即A基址寄存器:基址寄存器:数据指针数据指针DPTR或程序计数器指针或程序计数器指针PC15指令:指令:MOVC A,A+DPTR 工作过程:工作过程:3
11、055H相加相加=3055HADPTR3000H取出取出地址地址 A55H66H66H第二节第二节 寻址方式寻址方式166、相对寻址、相对寻址第二节第二节 寻址方式寻址方式相对寻址就是将相对寻址就是将程序计数器程序计数器PC当前的值当前的值加上指令中给加上指令中给出的相对偏移量出的相对偏移量rel形成程序转移的目的地址。形成程序转移的目的地址。目的地址目的地址=PC当前值当前值+ rel =转移指令所在的地址转移指令所在的地址+转移指令的字节数转移指令的字节数+rel偏移量偏移量rel是是一个带符号的一个带符号的8位二进制数补码,有正有负位二进制数补码,有正有负.17当当rel为正数时,往下调
12、转为正数时,往下调转 PC目的目的PC当前当前当前指令字节数当前指令字节数rel当当rel为负数时,往上跳转为负数时,往上跳转 PC目的目的PC当前当前当前指令字节数当前指令字节数rel100H跳转的范围为:跳转的范围为: -128B +127B第二节第二节 寻址方式寻址方式18如:如:JC 55H第二节第二节 寻址方式寻址方式197、位寻址方式、位寻址方式特殊功能寄存器特殊功能寄存器SFR(字节地址能被字节地址能被8整除整除) 位寻址位寻址对内部对内部RAM(20H2FH的的16个单元中个单元中128位)位) 位寻址位寻址两种表示两种表示方法方法1)直接使用位地址)直接使用位地址 :MOV
13、C, 30H 2)直接用特殊功能寄存器名加位数表示,)直接用特殊功能寄存器名加位数表示, 如如PSW.3第二节第二节 寻址方式寻址方式20如:如:MOV C,37H第二节第二节 寻址方式寻址方式217种寻址方式可涉及的存储器的空间种寻址方式可涉及的存储器的空间第二节第二节 寻址方式寻址方式22举例举例 MOV A,#65H MOV A,R0 MOVC A,A+PC DJNZ R2,rel SETB RS1CLR AMOV 45H, A 指出下列划线部分的寻址方式指出下列划线部分的寻址方式第二节第二节 寻址方式寻址方式23一、寻址方式中常用的符号注释一、寻址方式中常用的符号注释1. Rn(n=0
14、7): 当前选中的工作寄存器组当前选中的工作寄存器组R0R7。间接寻址寄存器间接寻址寄存器R0、R13. direct :8位位直接地址直接地址,代表内部,代表内部RAM单元的地址及单元的地址及SFR的地址的地址2. Ri (i=0、1) :4. #data :8位常数位常数5. #data 16 : 16位立即数位立即数247. addr 11: 11位目的地址。位目的地址。 用于用于ACALL和和AJMP指令中,目的指针必须在与下指令中,目的指针必须在与下条指令地址相同的条指令地址相同的2KB程序存储器地址空间内。程序存储器地址空间内。6. addr 16 : 16位目的地址。位目的地址。
15、 用于用于LCALL和和LJMP指令中,目的地址在指令中,目的地址在64KB程序存程序存储器地址空间。储器地址空间。8. rel : 补码形式的补码形式的8位地址偏移量,范围:位地址偏移量,范围:-128+1279. bit :位地址,片内位地址,片内RAM位寻址单元及位寻址单元及SFR的可位寻址位的可位寻址位10. :间接寄存器或基址寄存器间接寄存器或基址寄存器R0、R1的前缀符号的前缀符号。2511.()(): 表示括号中单元的内容表示括号中单元的内容12. ( ):表示间接寻址单元的内容表示间接寻址单元的内容13. :表示数据的传送方向表示数据的传送方向14. : 表示数据交换表示数据交
16、换第三节第三节 指令系统指令系统26二、指令系统二、指令系统1、数据传送类、数据传送类 29条条内部数据传送指令内部数据传送指令外部数据传送指令外部数据传送指令堆栈指令堆栈指令数据交换指令数据交换指令271)内部数据传送指令)内部数据传送指令格式:格式:MOV 目的操作数目的操作数,源操作数源操作数 一般不影响程序状态字一般不影响程序状态字PSW; 若目的地址为累加器若目的地址为累加器A,则仅影响奇偶标志位,则仅影响奇偶标志位P。目的操作数是累加器目的操作数是累加器A 4条条MOV A,#data ; A data MOV A, direct ; A (direct)MOV A, Rn ; A
17、(Rn)MOV A, Ri ; A(Ri) 28MOV Rn, A ; Rn (A)MOV Rn, direct ; Rn(direct)MOV Rn, #data ; Rn data目的操作数为工作寄存器目的操作数为工作寄存器Rn 3条条目的操作数是直接地址单元目的操作数是直接地址单元 5条条MOV direct ,#data ; direct data MOV direct1, direct2 ; direct1 (direct2)MOV direct, A ; direct (A)MOV direct ,Ri ; direct (Ri) MOV direct, Rn ; direct (
18、Rn) 29 MOV Ri, A ; (Ri) (A) MOV Ri, direct ; (Ri) (direct) MOV Ri, ; (Ri) data目的操作数是间接寻址地址单元目的操作数是间接寻址地址单元Ri 3条条16位数据传送指令位数据传送指令 1条条MOV DPTR, #data16 MCS-51指令系统中就这一条指令系统中就这一条16位数据传送指令,位数据传送指令,高高8位送入位送入DPH,低,低8位送入位送入DPH中中.30 例例1:将两个存储单元:将两个存储单元30H和和40H中的数据进行交换。中的数据进行交换。MOV A, 30HMOV 30H,40H ;(;(40H)(
19、A); (A)(30H)(30H)(40H)MOV 40H,A31例例2:设内部:设内部RAM中的中的30H单元内容为单元内容为50H,分析下列程序执,分析下列程序执行后各有关单元的内容。行后各有关单元的内容。MOV 60H, # 30HMOV R0, # 60HMOV A, R0MOV R1, AMOV 40H, R1MOV 60H, 30H322)数据交换指令数据交换指令 5条条 数据交换指令是在内部数据交换指令是在内部RAM的某一个单元和累加器的某一个单元和累加器A之间进行;之间进行;传送是传送是双向的双向的,是,是两个字节或两个半字节间的双向交换。两个字节或两个半字节间的双向交换。包含
20、包含整字节交换整字节交换和和半字节交换半字节交换 33整字节交换整字节交换 3条条XCH A, Rn ; (A) (Rn)XCH A, direct ; (A) (direct)XCH A, Ri ; (A) (Ri)A内部内部RAM单元单元34【例3】当前数据状态如图所示,点击页面,可以演示执行指令XCH时数据变化过程。 1) XCH A,R0 2) XCH A,40H 3) XCH A,R1R0A3AH58H40HA5BH3AH43H5BHXCH A,R0示意图示意图XCH A,40H示意图示意图R13DH30H30HA7CHXCH A,R1示意图示意图3DH35整字节交换实例整字节交换实
21、例MOV A, 30HXCH A, 40HMOV 30H, A例例4 已知已知(30H)=88H, (40H)=11H, (R0)=30H, (R1)=40H,指指出下列程序段执行的结果和功能。出下列程序段执行的结果和功能。;(A)=30H;(A)=11H, (40H)=88H;(30)=11H功能功能:将将30H和和40H单元内容互换。单元内容互换。36半字节交换半字节交换 2条条XCHD A, Ri ; (A) 30 (Ri)30SWAP A ;(A)30 (A)74 间址操作数的间址操作数的低半字节与低半字节与A的低半字节内容互换,的低半字节内容互换,高高4位内容不变位内容不变。累加器累
22、加器A的高、低的高、低4位互换位互换都不影响标志位都不影响标志位37 例例5 若若(R1)=30H,(30H)=78H,(A)=0AH,执行下,执行下列指令后,结果为多少:列指令后,结果为多少:半字节交换实例半字节交换实例 XCHD A,R1SWAP A;(R1)=30H,(,(30H)=7AH,(A)=08H;(R1)=30H,(30H)=78H,(A)=A0H38字节交换实例字节交换实例6设片内设片内RAM的的60H、61H单元中存放着单元中存放着4位位BCD码,试编码,试编写一段程序将这四位写一段程序将这四位BCD码倒序排列。码倒序排列。分析:设分析:设4位位BCD码为码为a3a2a1a
23、0,执行后则为,执行后则为a0a1a2a3。执行执行前后排列如下:前后排列如下:程序:程序:MOV R0, #60HMOV R1, #61HMOV A, R0SWAP A XCH A, R1 SWAP A MOV R0,A a3a260H61Ha1a0 a0a1 60Ha2a361H393)外部数据传送指令)外部数据传送指令 6条条 MOVX A, DPTR ;A (DPTR)片外片外 MOVX A,Ri ;A (Ri)片外片外 MOVX DPTR,A ;(DPTR)片外片外(A) MOVX Ri,A ;(Ri)片外片外(A)累加器累加器A与外部与外部RAM或或I/O端口之间传送数据端口之间传
24、送数据读片外读片外RAM或或I/O,使使P3.7 RD=0写片外写片外RAM或或I/O,使使P3.6 WR=0R0、R1寻址范围寻址范围00HFFH,256B; 该指令用于在单片机和外部该指令用于在单片机和外部RAM、扩展、扩展I/O的数据传送的数据传送 DPTR寻址范围寻址范围0000HFFFFH,64KB40说明说明: MOVX A, DPTR ;A (DPTR)片外片外 MOVX A,Ri ;A (Ri)片外片外 MOVX DPTR,A ;(DPTR)片外片外(A) MOVX Ri,A ;(Ri)片外片外(A)采用采用Ri作为间接寻址,低作为间接寻址,低8位地址位地址,通过,通过P0端口
25、端口送出;送出; 高高8位地址位地址通过指令通过指令“MOV P2,data”从从P2端口端口送出送出采用采用DPTR作为间接寻址,提供作为间接寻址,提供16位地址位地址,低,低8位通过位通过P0端端口口送出;送出;高高8位地址位地址通过通过P2端口端口送出。送出。41 试编程,将外部数据存储器试编程,将外部数据存储器2040H单元中的内容单元中的内容送到外部数据存储器送到外部数据存储器2150H单元中,要求用单元中,要求用R0作为作为间址寄存器。间址寄存器。举例举例7 7:解:解: 分析:因为要求用分析:因为要求用R0作为间址寄存器,这时仅送作为间址寄存器,这时仅送出低出低8位地址,故首先将
26、位地址,故首先将8位地址通过位地址通过P2口送出。口送出。42MOV P2,20H程序如下:程序如下:MOV R0,40HMOVX A, R0 MOV P2, 21HMOV R0, 50HMOVX R0,A ;通过;通过P2口送出高口送出高8位地址位地址20H;将低;将低8位间地址位间地址40H赋给赋给R0;读外;读外RAM中中2040H单元中的单元中的 数据至累加器数据至累加器A中。中。;通过;通过P2口送出高口送出高8位地址位地址21H;将低;将低8位间地址位间地址50H赋给赋给R0 ;将;将A中的数据送到中的数据送到外外RAM中的中的 2150H单元中。单元中。43试编程,将试编程,将内
27、部内部数据存储器的数据存储器的60H单元中的内容传送到外单元中的内容传送到外部数据存储器的部数据存储器的1F00H单元中。单元中。举例举例8 8:解:程序如下解:程序如下MOV DPTR,#1F00H ;外部数据存储器的地址;外部数据存储器的地址 送入地址存储器。送入地址存储器。MOV A,60HMOVX DPTR,A ;读内部数据存储器;读内部数据存储器;将内部;将内部60H中内容写中内容写入入 外部外部1F00H单元中单元中44v注意:只有累加器注意:只有累加器A才能把数据传到外部才能把数据传到外部RAM,或接收从或接收从外部数据存储器传回的数据。外部数据存储器传回的数据。比如:比如: M
28、OVX 20H, DPTR MOVX DPTR,SBUF MOVX DPTR,R2 MOVX DPTR,R1 都是错误的都是错误的45将将ROM中数据读入累加器中数据读入累加器A中中(查表指令查表指令) 2条条 MOVC A, A+DPTR ;A (A)+(DPTR) MOVC A, A+PC ;A (A)+(PC)3055H相加相加=3055HA66HDPTR3000H取出取出地址地址 A55H66H 例:例: MOV DPTR, #3000H MOV A, #55H MOVC A, A+DPTR46注意注意:我们只能将程序存储器中的数据传出(:我们只能将程序存储器中的数据传出(读出读出),
29、),而不能将数据传入(而不能将数据传入(写入写入)程序存储器。因此,语句:)程序存储器。因此,语句: MOVC A+DPTR , A MOVC A+PC , A 都是错误的。都是错误的。474)堆栈指令)堆栈指令 2条条 堆栈操作主要用于保护和恢复堆栈操作主要用于保护和恢复CPU的工作现场,也可实的工作现场,也可实现片内现片内RAM单元之间的数据传送。单元之间的数据传送。 堆栈操作指令包含堆栈操作指令包含入栈入栈(PUSH)和)和出栈出栈(POP)。)。在使用堆栈之前要在使用堆栈之前要首先给堆栈指针首先给堆栈指针SP赋值赋值 PUSH direct POP direct注意:先入后出原则注意:
30、先入后出原则48举例举例7 7: 已知已知(SP)=30H ,(40H)=88H , (50H)=11H ,指出下列,指出下列程序执行结果和功能。程序执行结果和功能。 PUSH 40H PUSH 50H POP 40H POP 50H;(SP) (SP)+1=31H, (31H) 88H;(SP) (SP)+1=32H, (32H) 11H;(40H) (SP),(SP) (SP)-1=31H, (40H) 11H;(50H) (SP),(SP) (SP)-1=30H, (50H) 88H功能功能:将将40H和和50H单元中的内容交换。单元中的内容交换。49数据传送类指令有几种类型?数据传送类
31、指令有几种类型? 是否影响标志位?是否影响标志位?小结小结 1)功能模块记忆法数据传送组。)功能模块记忆法数据传送组。除除MOV A, * 类指令影响类指令影响PWS的的P标志外,其余数据标志外,其余数据传送类指令在执行时均不影响任何标志。传送类指令在执行时均不影响任何标志。 如何记忆这些指令?如何记忆这些指令? MOV 内部数据传送内部数据传送 MOVC 程序存储器传送程序存储器传送MOVX 外部数据传送外部数据传送 502)对于)对于MOV指令,其目的操作数按指令,其目的操作数按A、Rn、direct、Ri的顺序书写,则可以记住的顺序书写,则可以记住MOV的的15条指令。条指令。例如:例如
32、: MOV A,data/direct/Rn/Ri MOV Rn,data/direct/AMOV direct,data/direct/A/Rn/RiMOV Ri,data/direct/A小结小结51随堂练习随堂练习试用数据传送指令实现下列要求的数据传送。试用数据传送指令实现下列要求的数据传送。1. 将将R2的内容传送到的内容传送到R0中;中;2. 将外部将外部RAM 20H单元的内容送入单元的内容送入R0中;中;MOV A, R1MOV R0, AMOV R1, #20HMOVX A, R1MOV R0, A523. 将外部将外部RAM 0020H单元内容送入内部单元内容送入内部RAM
33、20H单元中;单元中;4. 将外部将外部RAM 1000H单元内容送入内部单元内容送入内部RAM 20H单元中;单元中;5. 将外部将外部ROM 2000H单元内容送入单元内容送入R0;MOV R0, #20HMOVX A, R0MOV 20H, AMOV DPTR, #1000HMOVX A, DPTRMOV 20H, AMOV A, #00HMOV DPTR, # 2000HMOVC A, A+DPTRMOV R0,A536. 将外部将外部ROM 2000H单元内容送入内部单元内容送入内部RAM 20H单元中;单元中;7. 将外部将外部ROM 2000H单元内容送入外部单元内容送入外部RA
34、M 0020H单元中;单元中;MOV A, #00HMOV DPTR, # 2000HMOVC A, A+DPTRMOV 20H, AMOV A, #00HMOV R0, # 20HMOV DPTR, # 2000H MOVC A, A+DPTRMOVX R0 , A542、算术运算类、算术运算类 24条条算术运算指令有加法、减法、乘法和除法四类,算术运算指令有加法、减法、乘法和除法四类,除加除加1和减和减1指令,其他所有的指令都将影响指令,其他所有的指令都将影响PSW的标的标志位。志位。程序状态字程序状态字PSWD7D6D5D4D3D2D1D0CYACF0RS1RS0OVP进位进位借位借位辅
35、助辅助进位进位自定自定标志标志通用寄存器通用寄存器选择位选择位溢出溢出标志标志奇偶奇偶校验校验55算术运算类算术运算类加法指令加法指令14条条减法指令减法指令8条条乘除法指令乘除法指令2条条不带进位加法指令不带进位加法指令带进位加法指令带进位加法指令二二-十进制调整指令十进制调整指令加一指令加一指令带进位减法指令带进位减法指令减一指令减一指令乘法指令乘法指令除法指令除法指令2、算术运算类、算术运算类 561)加法指令)加法指令14条条不带进位加法指令不带进位加法指令ADD A,Rn ;A (A)+(Rn)ADD A, direct ;A (A)+(direct)ADD A, Ri ;A (A)
36、+(Ri)ADD A, #data ;A (A)+data功能:功能:把源操作数与把源操作数与A内容相加再送回累加器内容相加再送回累加器A中。中。说明说明: 影响影响PSW的的Cy、AC、 OV、P标志标志当和的第当和的第3位、第位、第7位有进位时,分别将位有进位时,分别将AC、Cy置置1对无符号数,若对无符号数,若Cy=1,表示溢出;若,表示溢出;若Cy=0,无溢出,无溢出当和的第当和的第6、7位中只有一位进位,位中只有一位进位,OV=1;否则为否则为057例例1:将内部:将内部RAM中中40H和和41H单元的数相加,单元的数相加, 再把和送到再把和送到42H单元。单元。 MOV A, 40
37、H ADD A, 41H MOV 42H, A58带进位加法指令带进位加法指令ADDC A,Rn ; A(A)+(Rn)+(CY)ADDC A, direct ; A (A)+(direct)+(CY)ADDC A, Ri ; A (A)+(Ri)+(CY)ADDC A, #data ;A (A)+data+(CY)功能:功能:把把源操作数与累加器源操作数与累加器A的内容相加的内容相加再与进位标志再与进位标志 CY的的 值相加值相加,结果送入目的操作数,结果送入目的操作数A中。中。说明说明:所有:所有CY值是指令执行前的值是指令执行前的CY值值,不是指令执行中形成不是指令执行中形成的的CY值值
38、。PSW其他各标志位状态变化和不带其他各标志位状态变化和不带CY加法相同。加法相同。59例例2:试编程,计算:试编程,计算6655H+11FFH程序:程序: MOV A, #55HADD A, #0FFHMOV 50H,AMOV A, #66HADDC A, #11HMOV 51H,A60 二二-十进制调整指令(十进制调整指令(BCD码修正指令)码修正指令) DA A; 调整调整A的内容为的内容为正确的正确的BCD码码说明:说明:该指令主要针对两个该指令主要针对两个压缩型压缩型BCD码码求和时进行调整。求和时进行调整。压缩压缩BCD码码非压缩非压缩BCD码码0 0000所谓压缩所谓压缩BCD码
39、码:是用:是用半个字节半个字节的二进制表示一位的二进制表示一位BCD码码1 0001 9 1001 0 0000 0000 1 0000 0001 9 0000 100161 当当A中的中的低低4位数出现了位数出现了非非BCD码(码(10101111)或或低低4位产生进位位产生进位(AC=1)时,)时,则应在低则应在低4位加位加6调调整整,以产生低,以产生低4位正确的位正确的BCD结果。结果。 当当A中的高中的高4位出现了非位出现了非BCD码码(10101111)或或高高4位产生进位(位产生进位(CY=1)时)时,则应在,则应在高高4位加位加6调整,以产生高调整,以产生高4位正确的位正确的BC
40、D结果结果。调整的任务:调整的任务: DA A62例例3:设有:设有4个压缩个压缩BCD码,分别放在片内码,分别放在片内RAM50H51H单元和单元和60H61H单元中。单元中。试编程,写出两个数的和,结果存放到试编程,写出两个数的和,结果存放到40H41H单元中。单元中。MOV A, 50HADD A, 60HDA AMOV 40H, A MOV A , 51HADDC A , 61HDA A MOV 41H, A 63 加加1指令指令INC A ;A (A)+1INC Rn ;Rn (Rn)+1INC direct ; direct (direct)+1INC Ri ;(Ri) (Ri)+
41、1INC DPTR ;DPTR (DPTR)+1注意:以上所有指令不会影响注意:以上所有指令不会影响PSW中的各个标志位。中的各个标志位。功能:功能:将指定单元的内容加将指定单元的内容加1,结果送回该单元中。,结果送回该单元中。64例例4:编程,将程序存储器编程,将程序存储器0200H,0201H两个单元中的内容两个单元中的内容 传送到片内传送到片内RAM的的30H,31H两个单元中。两个单元中。解解:程序段如下:程序段如下:MOV DPTR, #0200HMOV R0, #30HMOV A, #00HMOVC A, A+DPTRMOV R0, AINC DPTRINC R0MOV A, #0
42、0HMOVC A, A+DPTRMOV R0, A65带借位带借位减法指令减法指令 SUBB A, Rn ;A (A)-(Rn)-(CY) SUBB A, direct ;A (A)-(direct)-(CY) SUBB A, Ri ;A (A)-(Ri)-(CY) SUBB A, #data ;A (A)-data-(CY)功能:功能: 用累加器用累加器A中值减去源操作数所指出的数以及进位中值减去源操作数所指出的数以及进位CY的值,差值保存在累加器的值,差值保存在累加器A中。中。2)减法指令)减法指令 66CY:D7位需借位时,位需借位时,CY=1;否则,;否则,CY=0AC:D3位需借位时
43、,位需借位时,AC=1;否则,;否则,AC=0OV:若:若D6位和位和D7有一个有进位时,有一个有进位时,OV=1;否则;否则OV=0 对程序状态字对程序状态字PSW中标志位影响如下:中标志位影响如下:注意:注意:减法之前必须把进位标志位减法之前必须把进位标志位CYCY清零。清零。67 CLR C MOV A, #33H SUBB A, #E0H MOV 50H, A MOV A, #0EEH SUBB A, #0A0H MOV 51H, A 例例5:试编写计算:试编写计算EE33H-A0E0H的程序。的程序。68减减1指令指令 DEC A ;A(A)-1 DEC Rn ;Rn (Rn)-1
44、DEC direct ;direct (direct)-1 DEC Ri ;(Ri) (Ri)-1功能功能:把操作数的内容减:把操作数的内容减1,结果送回原单元。,结果送回原单元。注意:若存储单元原始值为注意:若存储单元原始值为00H,减,减1后,变为后,变为FFH说明说明:这组指令只有:这组指令只有“DEC A”影响影响P标志。标志。 其余指令都不影响标志位的状态。其余指令都不影响标志位的状态。69例例6:设:设(R0)=7FH,在内,在内RAM中,中,(7EH)=00H, (7FH)=40H,下列三条指令执行结果如何?下列三条指令执行结果如何? DEC R0 DEC R0;(;(7FH)=
45、3FHDEC R0; (R0)= 7EH;(;(7EH)=0FFH703)乘法、除法指令)乘法、除法指令 MUL AB乘法乘法指令指令指令含义:将指令含义:将(A) (B),乘积的低位字节放在,乘积的低位字节放在A中,中, 高位字节放在寄存器高位字节放在寄存器B中。中。对对PSW状态位的影响:状态位的影响:Cy位总是被清位总是被清0; 乘积大于乘积大于FFH时,时,OV位为位为1。71除法除法指令指令DIV AB指令含义:将指令含义:将(A) (B),将商放入,将商放入A,余数放入寄存器,余数放入寄存器B中。中。对对PSW标志位的影响:标志位的影响: Cy位被清位被清0 如果除数如果除数(B)
46、=0,则,则OV位被置位被置1,表示除法无意义,表示除法无意义, 不能进行。不能进行。723、逻辑运算类、逻辑运算类 该类指令包含该类指令包含与、或、非、清与、或、非、清0、异或和移位指令、异或和移位指令等共等共24条。都不会影响条。都不会影响PSW的各标志位。的各标志位。1)累加器)累加器A清零和取反指令清零和取反指令CLR ACPL A;(A) A;(A) #00H732)移位指令)移位指令累加器累加器A循环左移指令循环左移指令RL A01100101假设假设:(A)=0A6H,则在执行指令则在执行指令“RL A”后后,(A)=4DH10110010执行后执行后(A):执行前执行前(A):
47、74带进位循环左移指令带进位循环左移指令RLC ACYD7D6D5D4D3D2D1D0010100110101001100执行后执行后:执行前:执行前:75累加器累加器A循环右移指令循环右移指令RR AD0D1D2D3D4D5D6D701100101执行前执行前(A):11001010执行后执行后(A):76带进位循环右移指令带进位循环右移指令CYD7D6D5D4D3D2D1D0010100110110010100执行后:执行后执行后:RRC A773)逻辑)逻辑“与与”指令指令 ANL A, Rn ;A (A)(Rn) ANL A, direct; A (A)(direct) ANL A,
48、Ri; A (A)(Ri) ANL A, #data; A (A)data ANL direct, A ; direct (A)(direct) ANL direct, #data ; direct (direct)data说明:该类指令可对说明:该类指令可对一个一个8位二进制数的某些位进行屏位二进制数的某些位进行屏蔽蔽,要屏蔽的位和要屏蔽的位和0相相“与与”;保持不变的位和保持不变的位和1相相“与与”。计算规则:计算规则:有有0为为0,全,全1为为178例例7: 读入读入P1口的数据口的数据,将其低将其低4位清位清0,高高4位保留位保留,再把结果放再把结果放到内部到内部RAM的的40H单元。
49、单元。MOV P1, #0FFHMOV A,P1;使;使P1口置位输入方式,先要写口置位输入方式,先要写1ANL A,#0F0H;读;读P1口数据到口数据到AMOV 40H,A;A的高的高4位和位和0F与与,不变不变;低低4位和位和0与与,清清0;把;把A的值写到片内的值写到片内RAM40H单元单元79例例8: 将累加器将累加器A中压缩中压缩BCD码分为两个字节,形成非压缩码分为两个字节,形成非压缩 BCD码,放入码,放入30H和和31H单元中。单元中。MOV 40H, AANL A, #0FH;暂存;暂存A中的内容中的内容MOV 30H, A;高;高4位清零,保留低位清零,保留低4位位MOV
50、 40H, A;存入存入30H单元中单元中;取原数;取原数ANL A,#0F0H;保留高;保留高4位,低位,低4位清零位清零SWAP AMOV 31H,A804)逻辑)逻辑“或或”指令指令 ORL A,Rn ;A (A)V(Rn) ORL A,direct; A (A)V(direct) ORL A,Ri; A (A)V(Ri) ORL A, #data; A (A)Vdata ORL direct,A ; direct (A)V(direct) ORL direct,#data ; direct (direct) Vdata 有有1为为1,全,全0为为081例例9: 将累加器将累加器A中的低
51、中的低4位由位由P1口的低口的低4位输出,位输出, P1口的高口的高4位不变。位不变。ANL A, #0FHMOV 30H, A;高;高4位清零,保留低位清零,保留低4位位MOV A, P1;保留保留A中的低中的低4位,暂存入位,暂存入30H单元中单元中;取;取P1口的内容口的内容ANL A,#0F0H;保留;保留P1口的高口的高4位,低位,低4位清零位清零ORL A,30HMOV P1,A;由;由P1口的低口的低4位位 输出输出A的低的低4位。位。825)逻辑)逻辑“异或异或”指令指令 XRL A,Rn ;A (A) (Rn) XRL A,direct; A (A) (direct) XRL
52、 A,Ri; A (A) (Ri) XRL A, #data; A (A) data XRL direct,A ; direct (A) (direct) XRL direct,#data ; direct (direct) data计算规则:计算规则:相同为相同为0,不同为,不同为1说明:说明:本指令可对目的操作数的某些位取反,需取反的位本指令可对目的操作数的某些位取反,需取反的位与与1相异或。相异或。本指令可判断两个数是否相等,若相等,结果为本指令可判断两个数是否相等,若相等,结果为0;否则不相等。否则不相等。834、控制转移类、控制转移类(17条条) 在编写一个略复杂的控制程序时在编写一
53、个略复杂的控制程序时, ,不免要涉及到程序不免要涉及到程序的的跳转和子程序调用跳转和子程序调用, ,这时就要用到这时就要用到转移类指令转移类指令。 转移类指令包含有转移类指令包含有条件转移条件转移和和无条件转移无条件转移两种两种控制转移类指令的作用:控制转移类指令的作用:通过改变程序计数器通过改变程序计数器PC的值,的值, 控制程序执行方向。控制程序执行方向。841 1)无条件转移指令)无条件转移指令 长转移指令长转移指令LJMP addr16说明:说明: 本指令可以在整个本指令可以在整个64KB ROM范围内转移,使用灵活方范围内转移,使用灵活方便,不会出错。便,不会出错。在在ROM允许情况
54、下,建议使用本指令允许情况下,建议使用本指令。; (PC) (PC)+3, (PC)addr1685(2) 绝对转移指令绝对转移指令(PC)(PC)2;(PC100) addr1l ,PC1511不变不变AJMP addrll;注意:本指令只能在注意:本指令只能在2KB范围内转移范围内转移,在,在ROM允许情况允许情况下,下,建议不要使用本指令建议不要使用本指令。86解:解: 能实现。长转移指令可以在能实现。长转移指令可以在64KB内任意转移。内任意转移。 能实现。取指能实现。取指PCPC+2=389CH,与转移目标地址,与转移目标地址 3ABCH在同一在同一2KB字节范围内。字节范围内。 能
55、实现。取指能实现。取指PCPC+2=3800H,与转移目标地址,与转移目标地址 3DEFH在同一在同一2KB字节范围内。字节范围内。不能实现。取指不能实现。取指PCPC+2=3458H,与转移目标地址,与转移目标地址 3BCDH不在同一不在同一2KB字节范围内。字节范围内。高高5位相同位相同例例1:试判断下列各条指令能否实现转移?:试判断下列各条指令能否实现转移? 2300H : LJMP OFD39H ; 389AH : AJMP 3ABCH ; 37FEH : AJMP 3DEFH ; 3456H : AJMP 3BCDH ;87(3) 短转移指令短转移指令SJMP rel;(;(PC)
56、( PC)+ 2 + rel注意:注意:目标语句地址必须在当前语句向前目标语句地址必须在当前语句向前128(80H)字节,向)字节,向后后127(7FH)字节)字节,否则在进行程序编译时肯定出错。,否则在进行程序编译时肯定出错。在编写程序时,直接写上要转向目的地址编号就可以,在编写程序时,直接写上要转向目的地址编号就可以,汇编时,由汇编程序自动计算其偏移量汇编时,由汇编程序自动计算其偏移量.88(4) 间接转移指令间接转移指令(变址转移)(变址转移)JMP A+DPTR(PC)(A) + (DPTR)该该指令若给指令若给A赋不同的值赋不同的值,即可实现,即可实现多分支的转移多分支的转移。跳转的
57、目标地址是跳转的目标地址是累加器累加器A和数据指针和数据指针DPTR之和之和,其其和装入程序计数器指针和装入程序计数器指针PC,控制程序转移到目的地,控制程序转移到目的地址。它可以址。它可以是是64KB存储空间的任何地方存储空间的任何地方。JMP是一条多分支转移指令,由是一条多分支转移指令,由DPTR决定多分支指决定多分支指令的转移地址;由令的转移地址;由累加器累加器A动态选择转移到某一分支。动态选择转移到某一分支。;(PC) (PC)+ 2,89例例2:设累加器:设累加器A中存放中存放016的偶数,编程查找这些偶数。的偶数,编程查找这些偶数。 MOV DPTR, #JMPTBL JMP A+
58、DPTR JMPTBL: AJMP LABEL0 AJMP LABEL1 AJMP LABEL2 AJMP KEY3;0;2;4;6902 2)条件转移指令)条件转移指令(1)累加器累加器A判零转移指令判零转移指令 所谓条件转移,指指令中规定的条件满足时,程序所谓条件转移,指指令中规定的条件满足时,程序跳转到目标地址。跳转到目标地址。JZ rel ;如如(A)=0,跳到目标语句跳到目标语句 ;如如(A)0,顺序执行下一条指令顺序执行下一条指令JNZ rel ;如如(A)0,跳到目标语句跳到目标语句;如如(A)=0,顺序执行下一条指令顺序执行下一条指令91例例2,阅读程序,阅读程序, 结果结果(
59、R0)?结果:结果:(R0)=? ORG 2000H START: MOV R0,#00H MOV A,#20H LOOP: SUBB A,#04H INC R0 JNZ LOOP RET08H92(2)比较转移指令比较转移指令CJNE A, #data , relCJNE A, direct, relCJNE Rn, #data, relCJNE Ri, #data, rel具有比较和判断双重功能,具有比较和判断双重功能,比较的本质是做减法运算比较的本质是做减法运算,用第一操作数内容减去第二操作数内容,但差值不回存。用第一操作数内容减去第二操作数内容,但差值不回存。第一操作数第一操作数第二操
60、作数,第二操作数, 转移,且转移,且(CY)=0第一操作数第一操作数=第二操作数,第二操作数, 顺序执行顺序执行93CJNE指令流程图指令流程图PC取操作数,取操作数,(PC)+1 (PC)PC取源操作数,取源操作数, (PC)+1(PC)PC取取rel, (PC) +1 (PC)第一操作数第一操作数= =第二操作数?第二操作数?(PC) +rel(PC),(CY)=1(PC) +rel (PC), (CY)=0转向目的地址转向目的地址转向目的地址转向目的地址顺序执行顺序执行=94(3)循环转移指令(减循环转移指令(减1不为不为0转移)转移)DJNZ Rn,rel ;若若(Rn)0,继续循环继
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年高职无人机驾驶员(操控技术)试题及答案
- 广西壮族钦州市2027届数学三年级第一学期期末学业质量监测模拟试题含解析
- 湖北省随州市高新区大堰坡中学2026-2027学年七年级数学第一学期期末统考试题含解析
- 仙剑三考试题及答案
- 2026年大学数字媒体艺术(品牌策划设计)试题及答案
- 浙江省宁波市北仑区部分校2026年数学六年级第一学期期末学业水平测试模拟试题含解析
- 宁夏交安考试考试题型及答案
- 2026年区块链统计应用考核试卷
- 链板机岗位安全作业指导书培训课件
- 2026年大班科技发明儿歌课程
- 全国自考《英语二》高频词和常用词缀
- 经营煤炭合伙协议书
- 香港咨询服务合同协议
- 分级护理课件教学课件
- RPA财务机器人开发与应用(课程标准)8.10
- 农网工程资料样表
- 外卖行业交通安全培训
- 毕业论文写作指导-第5章毕业论文的写作
- 广西机电职业技术学院工作人员招聘考试真题2022
- 汽车音响的组成及工作原理
- 石大体育学院专题讲座:教练员职业素养及管理
评论
0/150
提交评论