版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章第三章 8051单片机指令系统单片机指令系统 3 .1 汇编语言指令格式汇编语言指令格式 3 .2 寻址方式寻址方式 3.3 8051单片机的指令系统单片机的指令系统 指令的格式指令的格式: 标号:标号: 操作码操作码 第一操作数第一操作数,第二操作数第二操作数 注释注释 (目的操作数)(源操作数)(目的操作数)(源操作数) LOOP: MOV A, #20H ;将将20H的内容送的内容送A 注:蓝色的内容不是必须的注:蓝色的内容不是必须的 3.1 汇编语言指令格式汇编语言指令格式操作数 1)工作寄存器名)工作寄存器名 2)特殊功能寄存器名)特殊功能寄存器名 3)标号名)标号名 4)常数
2、)常数 5)$ 6)表达式)表达式3.2 寻址方式寻址方式即寻找指令中操作数或操作数所在的地址。即寻找指令中操作数或操作数所在的地址。立即数寻址立即数寻址直接寻址直接寻址寄存器寻址寄存器寻址寄存器间接寻址寄存器间接寻址变址寻址变址寻址相对寻址相对寻址位寻址位寻址操作数以常数的形式出现,直接跟在操作码操作数以常数的形式出现,直接跟在操作码后面,以指令字节的形式存放在后面,以指令字节的形式存放在ROM中。中。一、立即数寻址一、立即数寻址例如:例如: MOV A, #40H MOV DPTR,#TABLE MOV P1,#07H MOV R3,#18(1)特殊功能寄存器,注意除)特殊功能寄存器,注意
3、除A、B、DPTR外,外,其他其他 SFR只能只能采用直接寻址方式。采用直接寻址方式。二二.直接寻址直接寻址 如:如:MOV A, 70H; ( 70H ) ( A )在指令中包含有在指令中包含有操作数的直接地址操作数的直接地址,该地址,该地址指出了参与运算的数所在的字节单元地址指出了参与运算的数所在的字节单元地址 直接寻址的寻址范围:直接寻址的寻址范围: 直接寻址是其直接寻址是其唯一唯一寻址方式寻址方式(2)内部数据存储器的低)内部数据存储器的低128字节,字节,00H7FH;例例 3.1MOV A,81H ;( 81H ) ( A )MOV A,SPMOV A,P1 ; ( 90H ) (
4、 A )MOV A,90H(1)内部)内部RAM中的中的32个工作寄存器个工作寄存器R0R7; (2)A、B、C、DPTR;三三.寄存器寻址寄存器寻址寻址范围寻址范围:INC Rn ; (Rn) +1 (Rn)MOV A , Rn ; (Rn) A指定某一可寻址寄存器的内容为操作数指定某一可寻址寄存器的内容为操作数 四四.寄存器间接寻址寄存器间接寻址指令中指出某一个寄存器的内容为指令中指出某一个寄存器的内容为操作数的地址,以符号操作数的地址,以符号“”表示。表示。寻址范围:寻址范围:(1)以)以R0,R1为地址指针,寻址为地址指针,寻址片内片内RAM 007FH 和和外外RAM的的低低256B
5、;(2)以堆栈)以堆栈SP为地址指针,寻址为地址指针,寻址栈区栈区单元;单元;(3)以)以DPTR,或,或R0、R1(须用(须用P2指定高指定高8位地址)为地位地址)为地址指针,寻址址指针,寻址外部外部RAM的的64KB空间和空间和外扩外扩I/O口口。例:例:MOV A,R0;(R0 ) (A) PUSH ACC ;(A) (SP) MOVX A,DPTR ;(DPTR) (A)五五.变址基址寄存器加变址寄存器间接寻址变址基址寄存器加变址寄存器间接寻址 MOVC A, A+PC ;(A)+(PC) (A) MOVC A, A+DPTR; (A)(DPTR) (A) JMP A+DPTR将指定将
6、指定基址寄存器基址寄存器(PC或或 DPTR)和)和变址寄存器(变址寄存器(A)的内容的内容相加相加,所得结果作为操作数的,所得结果作为操作数的地址地址。(1)变址寻址方式是专门针对程序存储器的寻址)变址寻址方式是专门针对程序存储器的寻址方式方式,访问范围为访问范围为 64K。(2)变址(偏移量)寄存器中的地址偏移量是一)变址(偏移量)寄存器中的地址偏移量是一个个8位的位的无无符号数(符号数(00FF)。)。指令中给定地址的指令中给定地址的相对偏移量相对偏移量 rel,以,以PC当前值当前值为为基地址,加上基地址,加上 rel 所得结果为转移目标地址。所得结果为转移目标地址。六六.相对寻址相对
7、寻址 在相对转移指令中使用在相对转移指令中使用目的地址目的地址=(PC)当前值当前值+ relrel:8位有符号数,单字节补码,位有符号数,单字节补码, 128+127。LOOP1:SJMP rel;80 relLOOP2:源地址源地址LOOP2relLOOP1+2+rel即:目的地址源地址转移指令字节数即:目的地址源地址转移指令字节数rel七七.位寻址位寻址MOV C, ACC.7 ;(ACC.7) (C)MOV C, 10H ;(10H) (C)* 片内片内RAM位寻址区(位寻址区(00H7FH)位寻址区域:位寻址区域: 3.3 89C51单片机的指令系统单片机的指令系统v 3.3.2 数
8、据传送指令数据传送指令v 3.3.3 算术运算指令算术运算指令v 3.3.4 逻辑操作指令逻辑操作指令v 3.3.4 控制程序转移类指令控制程序转移类指令v 3.3.5 位操作(布尔处理)类指令位操作(布尔处理)类指令 (一)符号(一)符号(1) Rn:工作寄存器工作寄存器 n=0, 1,2,7(2) Ri:工作寄存器工作寄存器 n=0, 1(3) direct: 表示表示8位的直接地址位的直接地址(4) #data:表示表示8位立即数位立即数(X):):X中的内容中的内容(5)#data16:表示表示16位立即数位立即数(11)add11 : 表示表示11位目的地址位目的地址 只限于只限于
9、AJMP,ACALL指令使用指令使用(12)add16 : 表示表示16位目的地址位目的地址 只限于只限于 LJMP,LCALL指令使用指令使用(13)rel:相对偏移量,为相对偏移量,为8位带符号的地址偏移量位带符号的地址偏移量(X):):由由X内容作为地址的单元中的内容内容作为地址的单元中的内容(6)(7) Ri :表示寄存器间接寻址表示寄存器间接寻址 i= 0,1(8) DPTR : 表示以表示以DPTR作为数据指针的间接地址作为数据指针的间接地址 (9 ) bit : 表示位地址(或位符号表示位地址(或位符号)(10)/ bit : 表示对该位先取反再参与操作表示对该位先取反再参与操作
10、(14)A 累加器累加器 B 通用寄存器通用寄存器 C 位累加器位累加器(15)$:本条指令的起始地址本条指令的起始地址 如如 SJMP $ LOOP : SJMP LOOP(二)指令分类(二)指令分类1.按指令长度分按指令长度分2.按指令执行时间分按指令执行时间分 单字节单字节指令指令49 双字节双字节指令指令45 三字节三字节指令指令17单周期单周期指令指令64双周期双周期指令指令45四周期四周期指令指令23.按指令功能分类按指令功能分类数据传送类指令数据传送类指令 28逻辑操作类指令逻辑操作类指令 25算术运算类指令算术运算类指令 24控制转移类指令控制转移类指令 17位操作指令位操作指
11、令 17 3.3.1 数据传送指令数据传送指令v 一一. 内部数据传送指令内部数据传送指令v 二二.外部数据传送指令外部数据传送指令v 三三.数据交换指令数据交换指令v 四四.堆栈操作指令堆栈操作指令最基本、最主要的指令,共有最基本、最主要的指令,共有28条,包条,包括括数据传送数据传送、数据交换数据交换、栈操作三类。栈操作三类。目的目的单元为单元为A时影响时影响 PSW中的中的P标志标志一、一、 内部数据传送指令内部数据传送指令 指令格式:指令格式:MOV 目的字节目的字节,源字节源字节功能:把源字节指定的变量传送到目的字节指定的存储单功能:把源字节指定的变量传送到目的字节指定的存储单元中,
12、源字节内容不变元中,源字节内容不变。(目的字节)(目的字节)(源字节)(源字节)MOV DPTR,data16;4direct直接寻址直接寻址Rn寄存器寄存器data立即数立即数累加器累加器ARi间址间址35316条条使用注意事项使用注意事项!(1)只能使用规定的指令格式,不能任意制造非法指令)只能使用规定的指令格式,不能任意制造非法指令如:如:MOVR3, R2如:如:MOVRn,Ri( )()(2)使用时须注意指令的)使用时须注意指令的寻址方式寻址方式MOV R0, #90HMOV A, R0MOV A, 90HMOV A, P1()( )( )( ) 例例3.2 设(设(70H)= 60
13、H,(,(60H)=20H,(P1) 0B7H ,问执行如下程序后相关单元中内容是多少?问执行如下程序后相关单元中内容是多少? MOV R0,#70H MOV A,R0 MOV R1,A MOV B,R1 MOV R0, P1 (R0)(A)(R1)70H60H60H(B)(70H)20HB7H二二.外部数据传送指令外部数据传送指令1.外部数据外部数据RAM(外扩(外扩I/O口)与口)与A之间的传送之间的传送 MOVX , MOVX A, DPTR ; (DPTR)(A)MOVX A, Ri ; ( Ri)(A)MOVX DPTR, A ; (A) (DPTR)MOVX Ri , A ;(A)
14、 (Ri)MOVX读指令读指令产生产生RD信号信号MOVX写指令写指令产生产生WR信号信号 用用 R i 作 地 址 指 针 时 只 能 寻 址作 地 址 指 针 时 只 能 寻 址 2 5 6 个 单 元个 单 元(0000H00FF),当访问),当访问超过超过256个字节的外个字节的外RAM空间时,空间时,需利用需利用P2口口确定确定高高8位地址位地址(也称页地址),(也称页地址),而用而用DPTR作地址指针时可访问整个作地址指针时可访问整个64KB空间。空间。MOVX DPTR,#2010例例3.3将外将外RAM 2010H中内容送外中内容送外RAM 2020单元中单元中。MOVX 20
15、20,2010(X)MOVX 2020,DPTR(X)MOV P2,#20H ;输出高;输出高8位地址位地址MOV R0,#10H ;置;置读读低低8位地址位地址MOVX A,R0 ;读;读2010H中数据中数据MOV R1,#20H ;置;置写写低低8位地址位地址MOVX R1,A ;向;向2020H写数据写数据 MOV DPTR,2010 ;置读单元地址;置读单元地址MOVX A,DPTR ;读;读2010中数据中数据MOV DPTR,2020 ;置写单元地址;置写单元地址MOVX DPTR , A ;将数据写入;将数据写入2020H单元中单元中2、程序存储器与累加器、程序存储器与累加器A
16、之间的数据传送之间的数据传送MOVC指令指令(查表指令)(查表指令)MOVC A,A+DPTR MOVC A,A+PC ;(A)+(DPTR) (A)(PC)+1(PC) ,(A)+(PC) ) (A)特点:特点:u单字节指令单字节指令u源操作数为变址寻址源操作数为变址寻址u执行时,执行时, PSEN信号会自动有效。信号会自动有效。功能:以功能:以DPTR、PC为基地址,与为基地址,与A中的中的8位无符号数位无符号数相相加,得到一个新加,得到一个新16位地址,将其内容送位地址,将其内容送A。当前当前当前当前(1)用)用DPTR作为基址寄存器作为基址寄存器 例例3.4:设外部:设外部ROM的的2
17、000H单元开始的连续单元开始的连续10个字个字 节中已存放有节中已存放有09的平方数,要求根据的平方数,要求根据A中的中的 内容(内容(09)来查找对应的平方值。)来查找对应的平方值。START:MOV A,#2 ;待查数据送待查数据送AMOV DPTR,#TABLE ;表首地址送表首地址送DPTR MOVC A,A+DPTR ;查表查表 ORG 2000H TABLE:DB 0,1,4,9,16,25,36,49,64,81结果:(结果:(2002H) (A ),(),(A)=04H特点:特点:可访问整个可访问整个ROM的的64KB空间,表格可放在空间,表格可放在ROM的的任何任何位置,与
18、位置,与MOVC指令无必然的关系。指令无必然的关系。(2)用)用PC作为基址寄存器作为基址寄存器 1FF9H:MOV A,#2 ;待查数据送待查数据送A1FFDH:MOVC A,A+PC ;查表,单字节指令查表,单字节指令1FFEH: SJMP $ ;原地跳转指令(双字节指令:;原地跳转指令(双字节指令:80FE)2000H: DB 02001H: DB 1 2002H: DB 4 DB 9结果:(结果:(2002H) (A ),(),(A)=04H(A) + (PC)当前当前) (A)PC当前值当前值DIS表首地址表首地址修正量:修正量:DIS表首地址表首地址PC当前值当前值 2000H1F
19、FEH=02H1FFBH: ADD A,#DIS ;加上修正量加上修正量DIS#02H使用特点:使用特点:(1)表格只能存放在查表指令以下的)表格只能存放在查表指令以下的256 个单元内。个单元内。 (2)当表格首地址与本指令间有其他指)当表格首地址与本指令间有其他指令时,须修正偏移量,修正量为查表指令时,须修正偏移量,修正量为查表指令令下一条指令的起始地址下一条指令的起始地址到到表格首址表格首址之之间的指令字节数。间的指令字节数。三、数据交换指令三、数据交换指令数据交换指令共数据交换指令共4条,完成累加器和内部条,完成累加器和内部RAM单元之间单元之间的字节或半字节交换。的字节或半字节交换。
20、(1)整字节交换:)整字节交换:XCH A,Rn ; (Rn) (A)XCH A,direct ; (direct) (A)XCH A,Ri ; (Ri) (A)(2)半字节交换)半字节交换:XCHD A,Ri ; (Ri)03 (A)03例例3.43.4设(设(A)=57H,(,(20H)=68H,(,(R0)=30H,(30H)=39H,求下列指令的执行结果,求下列指令的执行结果(1)XCH A,20H ; 结果:(结果:(A)=68H,(,(20H)=57H(2)XCH A,R0 ;结果:结果: (A)=39H,(,(30H)=57H(3)XCH A,R0 ;结果:结果: (A)=30H
21、,(,(R0)=57H(4)XCHD A,R0 ;结果:结果: (A)=59H,(,(30H)=37H)四、堆栈操作指令四、堆栈操作指令 push direct ;pop direct ;(sp) +1(sp)(direct) (sp)(direct) (sp) (sp) -1 (sp)堆栈,由特殊功能寄存器堆栈,由特殊功能寄存器SP(81H)管理,始终指)管理,始终指向其栈顶位置,栈底视需要设在内部向其栈顶位置,栈底视需要设在内部RAM低低128B内。内。(1)入栈指令)入栈指令其中:其中:direct为源操作数;目的操作数为为源操作数;目的操作数为SP,隐含。,隐含。(2)出栈指令)出栈指
22、令其中:其中:direct为目的操作数,源操作数为为目的操作数,源操作数为SP,隐含。,隐含。例例3.5(1)已知:()已知:(A)=30H,(,(B)=70H执行:执行: MOVSP,#60H ;设栈底;设栈底 PUSHACC ; PUSHB结果:结果:(61H)= ,(,(62H)= ,(,(SP)= 30H70H62H (2)已知:()已知:(SP)=62H,(,(62H)=70H,(,(61H)=30H执行:执行:POP DPH POP DPL 结果:结果:(DPTR)= ,(,(SP)= 7030H60H使用注意事项使用注意事项 堆栈指令中操作数是堆栈指令中操作数是直接地址直接地址,
23、须注意,须注意指令的书写格式!指令的书写格式!PUSH R0POP R3(X)PUSH 00HMOV A,R0PUSH AccPOP 03HPOP AccMOV R3,AOrOr(X)( )( )( )( )3.3.2 算术运算类指令算术运算类指令一、加减法指令一、加减法指令二、乘除法指令二、乘除法指令三、增量、减量指令三、增量、减量指令四、二十进制调整四、二十进制调整 一、加减法指令一、加减法指令指令助记符:指令助记符: ADD + ADDC 带带C+ SUBB 带带C-操作数:操作数:如右图,如右图,以以A为目的操作数为目的操作数一、加减法指令一、加减法指令1、加法指令、加法指令(A) +
24、 data (A) ADD A , #data ; ADD A , direct ;ADD A , Ri ;ADD A , Rn ;(A) +(direct) (A) (A) +(Ri) (A) (A) +(Rn) (A) 2、带进位加法指令、带进位加法指令(A) + data + (C) (A) ADDC A , #data ; ADDC A , direct ;ADDC A , Ri ;ADDC A , Rn ;(A) +(direct) + (C) (A) (A) +(Ri) + (C) (A) (A) +(Rn) +(C) (A) 例例3.63.6 MOV A , #54H ADD A
25、 , #27H 0 0 1 1 1 1 0 1 1 0 1 0 1 0 1 0 0 (54)+ 0 0 1 0 0 1 1 1 (27) 000ACCSCY (CY) =0(CS) = 0 (AC) = 0(OV) =(CY) (CS)= 0( P ) = 0例例3.7 1 0 1 0 1 1 0 0 + 1 0 0 0 0 1 0 1 1 0 0 1 1 0 0 0 1 011CYCSACMOV A,#0ACHADD A,#85H (CY) =1(CS) = 0 (AC) = 1(OV) =(CY) (CS)= 1( P ) = 1例例3.8 利用利用ADDC指令进行多字节加法指令进行多字节
26、加法 已知:两个已知:两个16位无符号数位无符号数X1和和X2存放在存放在M1和和M2起始的起始的单元中(低单元中(低8位在前)试写出位在前)试写出X1+X2并把结果放在并把结果放在M1和和M1+1单元(低位在单元(低位在M1)的程序。设两数之和不超过)的程序。设两数之和不超过16位。位。 ORG0500HMOVR0,M1;X1地址送地址送R0MOVR1,M2;X2地址送地址送R1MOVA,R0;X1低低8位位(A) ADDA,R1;X1低低8位位X2低低8位位(A) ,形成,形成CyMOVR0,A;和的低和的低8位存位存M1INCR0;修改地址指针修改地址指针R0INCR1;修改地址指针修改
27、地址指针R1MOVA,R0;X1高高8位位(A) ADDC A,R1;X1高高8位位X2高高8位位Cy (A) MOVR0,A;SJMP;和的高和的高8位存位存M11停机停机3、 减法指令、带借位的减法指令减法指令、带借位的减法指令SUBB A , Rn ; SUBB A , #data;SUBB A , direct;SUBB A , Ri;(A) data (Cy) (A) (A) direct (Cy) (A) (A) Ri (Cy) (A) (A) Rn (Cy) (A) 例例3.9CLR CMOV A , #52HSUBB A , #0B4H 0 1 0 1 0 0 1 0 (52H
28、) 1 0 1 1 0 1 0 0 (B4H)1 0 0 1 1 1 1 0 (9EH)1 01 (CY)=1,(OV)= (CY) (CS)= 1,(AC)=1 , (P)=1 1ACCYCS二、乘除法指令二、乘除法指令1、乘法指令、乘法指令 MUL AB ; (A)(B) 低低8位位A 高高8位位BA、B中都是无符号整数中都是无符号整数如果积大于如果积大于255,(OV)1,否则,否则(OV)0;进位标志总是清零进位标志总是清零 (Cy)02、除法指令、除法指令 DIV AB ; (A) (B) 商商A 余数余数BA、B中都是无符号整数中都是无符号整数如果除数如果除数B为为“0”,(OV)
29、1,否则,否则(OV)0;进位标志总是清零进位标志总是清零 (Cy)0例、利用单字节乘法指令进行多字节乘法运算例、利用单字节乘法指令进行多字节乘法运算 如以双字节数乘以单字节数,设双字节数为如以双字节数乘以单字节数,设双字节数为X,单字节数为,单字节数为Y,则则 XY(X128X2)YX1Y28X2Y设双字节数低设双字节数低8位存位存30H,高,高8为存为存31H,单字节数在,单字节数在40H,积按,积按由低到高位次序存在由低到高位次序存在50H,51H,52H单元中,编程如下:单元中,编程如下: ORG003FHMOVA,30HMOVB,40HMULA BMOV51H,BMOV50H,AMO
30、VA,31HMOVB,40HMULA BADDA,51HMOV51H,AMOVA ,BADDCA,00HMOV52H,AEND三、增量、减量指令三、增量、减量指令 INC A ;(A)+1 (A)INC Rn ;(Rn)+1(Rn)INC Ri ;(Ri)+1(Ri)INC direct ;(direct)+1 (direct)INC DPTR ;(;(DPTR) +1 (DPTR)1、增量指令、增量指令 5条条DEC A ; (A) 1 (A) DEC Rn ;(Rn)1 (Rn)DEC Ri ;(Ri) 1 (Ri) DEC direct ;(direct) 1 (direct)2、减量指
31、令、减量指令 4条条对标志位不产生影响对标志位不产生影响!四、二四、二十进制调整指令十进制调整指令DA A ;若(若(AC ) =1 或(或(A30 ) 9, 则则 ( A )06H(A )若(若(CY ) = 1 或(或(A74 ) 9, 则则 ( A )60H(A ) 使用注意事项:使用注意事项:(1)只能紧跟在加法指令()只能紧跟在加法指令(ADD/ADDC)后进行)后进行(2)两个加数必须已经是)两个加数必须已经是BCD码码(3)只能对累加器)只能对累加器A中结果进行调整中结果进行调整例例3.10 试写出能完成试写出能完成8559的的BCD加法程序加法程序 并对其工作过程进行分析并对其
32、工作过程进行分析 1 0 0 0 0 1 0 1 (85H)+ 0 1 0 1 1 0 0 1 (59H) 1 1 0 1 1 1 1 0 (DEH)+ 0 1 1 0 0 1 1 0 (66H) 0 1 0 0 0 1 0 0 (44H)1ORG 1000HMOV A,85HADD A,59HDA ASJMP $END3.3.3、逻辑操作类指令、逻辑操作类指令一、单操作数指令(操作数在累加器一、单操作数指令(操作数在累加器A A中)中)1.1.累加器累加器A A清清0 0CLRCLR A A ; 0 0 (A A)2.2.累加器累加器A A取反取反CPLCPL A A ; ( A A )(
33、)A A3.3.累加器累加器A A左右移位左右移位RL A ;RLC A ;RR A ;RRC A ;SWAP A ;A7A0A4A3例例3.12已知:已知:M1和和M1+1单元有一个单元有一个16位二进制数(位二进制数(M1中为低中为低8位),编程令其扩大位),编程令其扩大2倍(设该数扩大后小于倍(设该数扩大后小于65536 )。)。ORG 1000HCLR CMOV R1, #M1MOV A, R1RLC AMOV R1 , AINC R1MOV A, R1RLC AMOV R1 , ASJMP $END 二、双操作数指令二、双操作数指令 第二操作数第二操作数# data directRi
34、 Rn1.累加器累加器A与立即数、内部数据存储器之间与立即数、内部数据存储器之间的逻辑操作。的逻辑操作。 ANL (ORL,XRL) 与与 或或 异或异或A,第一操作数第一操作数 ( 、 ) 第二操作数第二操作数(A)第一操作数第一操作数2.2.直接地址单元与累加器直接地址单元与累加器A、立即数、立即数之间的逻辑操作之间的逻辑操作ANL(ORL,XRL)10100000( A0H )10101111(AFH)11111010(FA H)ANL P1 , #0F0H ; (P1)=ORL P1 , #0FH ; (P1)=XRL P1 , 55H ; (P1)=已知:已知:(P1)=0AAH ,
35、 (A) =55H ,执行,执行3.3.4、控制转移指令、控制转移指令一、程序转移指令一、程序转移指令1、无条件转移指令、无条件转移指令LJMPaddr16 ;长转移;长转移 AJMPaddr11 ;短转移;短转移SJMPrel ;相对转移;相对转移JMPADPTR ;间接转移;间接转移(1)长转移指令指令)长转移指令指令LJMP addr16;addr16 (PC)(64K范围内转移)范围内转移) addr11 AJMP addr11;(2)短转移指令()短转移指令(2KB范围)范围)机器码机器码a10a9a800001a7a6a5a4a3a2a1a0a10a9a8a7a6a5a4a3a2a
36、1a0实现与跳转指令实现与跳转指令下一条指令下一条指令同在同在2K范围内的跳转范围内的跳转例例 3.130345H :AJMP 0123 ;AJMP 1123H ;机器码:机器码:2123AJMP 1FEDH ; 机器码:机器码:E1ED机器码:机器码:21232567H :AJMP 29AB ;X27FEH :AJMP 2DEF ;机器码:机器码:A1EF27FEH :AJMP $ ;X跳转范围:跳转范围: 0000H07FFH跳转范围:跳转范围: 2000H27FFH跳转范围:跳转范围: 2800H2FFFH(3)相对短转移指令)相对短转移指令目的地址目的地址=(PC)当前值当前值rel源
37、地址源地址+2+rel(PC) + 2 (PC) (PC) +rel(PC)SJMP rel ; 80 relrel机器码的相对偏移量,机器码的相对偏移量,为为8 8位补码位补码 转移范围:以当前转移范围:以当前PCPC值为中心,向上值为中心,向上128128向下向下127127字节字节rel(目的地址源地址转移指令字节数)(目的地址源地址转移指令字节数)补补源地址:源地址:目的目的当前当前当前当前源源向下跳转:向下跳转:rel =目源目源 2向上跳转向上跳转=(源源目目 2) 补补 = 100H源目源目 2= FEH源目源目例例3.14设设:2110H : SJMP 2100H设设:2100
38、H :SJMP 2123H设设:SJMP $rel=2123H2100H2 =21Hrel=FEH2110H2100H =EEHrel=FEH0 =FEH(4)间接转移指令(多分支转移指令)间接转移指令(多分支转移指令)JMP A+DPTR; (A)+(DPTR) (PC) A A中为中为8 8位无符号数,实现以位无符号数,实现以DPTRDPTR内容为起点向下内容为起点向下256256个单元内的转移。个单元内的转移。例例3.15CM:MOV R1 ,A RL A ADD A , R1 MOV DPTR,#PMTB JMP A+DPTRPMTB:LJMP PM0 ;转入;转入0命令命令 LJMP
39、 PM1 ;转入;转入1命令命令 LJMP PM2 ;转入;转入2命令命令 LJMP PM3 ;转入;转入3命令命令LJMP PM4 ;转入;转入4命令命令 END已知:已知:A A中放有待处理命令编号中放有待处理命令编号0-40-4,程序存储器中放,程序存储器中放有始地址为有始地址为PMTBPMTB的三字节长转移指令表,试编一程序的三字节长转移指令表,试编一程序能使机器按能使机器按A A中命令编号转去执行相应的命令程序。中命令编号转去执行相应的命令程序。;(;(A) 3 (A)2、条件转移指令、条件转移指令(1)累加器判零转移指令)累加器判零转移指令 JZ rel ; JNZ rel;(pc
40、) +2(pc)若若(A)=0,顺序执行,顺序执行若若(A)0,目的地址,目的地址 (pc) +rel(pc)(pc)+2 (pc)若若(A) 0,顺序执行,顺序执行若若(A)=0,目的地址,目的地址 (pc) +rel(pc)例例3.163.16、已知:外部、已知:外部RAM中中DATA1为始址的数为始址的数据块据块以零为结束标志,试编程将其传送到以以零为结束标志,试编程将其传送到以DATA2为始址的片内为始址的片内RAM区。区。ORG 0500HMOV DPTR,DATA1MOV R1,DATA2LOOP: MOVX A,DPTRJZDONEMOV R1,AINCDPTRINCR1 SJM
41、P LOOPDONE: SJMP END CJNE A , #data,rel , B4 relCJNE A , direct,rel , B5 relCJNE Ri ,#data,rel , B6 * relCJNE Rn , #data,rel , B8* rel(CY)=CJNE , ,rel1 0 PC (PC)+3,转移转移(PC ) rel (PC) ,顺序执行顺序执行(2)比较)比较不等不等转移指令转移指令无符号数比较无符号数比较(3)循环转移指令循环转移指令(减减 1 不为不为 0 转移指令转移指令)DJNZ Rn, rel ; D8* rel (PC) 2 (PC) ,(Rn
42、) 1 (Rn)若若(Rn)0 ,则转移,则转移, (PC) rel (PC) (Rn) =0,则顺序执行,则顺序执行DJNZ direct, rel ;例例3.17 :延时子程序延时子程序 delay: MOV R7, #03H delay0: MOV R6, #19H delay1: DJNZ R6, delay1 DJNZ R7, delay0 RET二、子程序调用和返回指令二、子程序调用和返回指令 一、调用指令(一、调用指令(2 2条)条)LCALLLCALL addr16addr16 ;长调用指令;长调用指令(3(3字节字节) )ACALLACALL addr11addr11 ; 短
43、调用指令短调用指令(2(2字节字节) )上面两条指令都是在主程序中调用子程序,两者的区别上面两条指令都是在主程序中调用子程序,两者的区别: :对短调用指令,被调用子程序入口地址必须与调用指令对短调用指令,被调用子程序入口地址必须与调用指令的下一条指令的第一字节在相同的的下一条指令的第一字节在相同的2KB2KB存储区之内。存储区之内。使用时可以用:使用时可以用: LCALL LCALL 标号标号 ;标号表示子程序首地址;标号表示子程序首地址 ACALL ACALL 标号标号 来调用子程序。来调用子程序。例例 :2345H :ACALL 2678H指令的执行过程是:指令的执行过程是:当前当前PCP
44、C压栈压栈,子程序首地址送,子程序首地址送 PCPC,实现转移。,实现转移。RETRET ;子程序返回指令;子程序返回指令二、返回指令(二、返回指令(2条)条)RETIRETI ;中断返回指令中断返回指令二者不能互换使用。二者不能互换使用。4、空操作指令、空操作指令(1条)条)NOPNOP(00H00H);空操作,就是什么事也不干,停一个周期,一般用作短时间空操作,就是什么事也不干,停一个周期,一般用作短时间的延时。的延时。RET指令的执行过程是:堆栈栈顶内容(2字节,调用时保存的当前PC值)弹出给PC,实现返回。RETI指令除了具有RET指令的功能实现程序返回外,同时还清除中断优先级生效触发
45、器,开放低级中断。例例3.18例如:已知(例如:已知(SP)=60H,执行下列指令后的结果:,执行下列指令后的结果:1000H:ACALL 1100H1000H:LCALL 0800H结果:结果:(SP)=62H,(,(61H)=02H,(,(62H)=10H, (PC)=1100H : (SP)=62H,(,(61H)=03H,(,(62H)=10H, (PC)=0800H3.3.5、位操作指令、位操作指令*直接使用位地址直接使用位地址 *位名称表示位名称表示如:如: CY, AC , F0, P*字节地址加位的表示方式字节地址加位的表示方式 如:如: 20H.020H.7*专用寄存器的符号加位号专用寄存器的符号加位号 如:如:Acc.0,P1.0P1.7*用户使用伪指令定义过的符号地址用户使用伪指令定义过的符号地址如:如:D1 BIT 02H位地址表示方式:位地址表示方式:一、位数据传送指令一、位数据传送指令MOV C MOV C , bit bit ; (bitbit)(C C)MOV bit MOV bit
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 华师大版初中科学第一节 地球上的水(34课件T )
- 慢性病管理与健康干预制度
- 把句子写具体
- 福建省华安一中2024年高三第八次联考数学试题
- 2024年甘肃客运资格证应用能力试题及答案详解
- 算法设计与分析 课件 2-程序测试
- 2024年固原客运驾驶员考试题库
- 2024年山东客运从业资格证考试技巧和方法
- 2024年无锡客运资格证仿真试题
- 2024年呼和浩特客运资格证考试技巧
- 物业有偿服务方案
- 2024年云南省第一次高中毕业生复习统一检测(一模)文科综合试卷(含官方答案)
- 《认识隶书(一)》名师课件
- 新人教版小学四年级上册道德与法治教案(第一、第二单元)
- 2024年上海市高考英语语法填空试题真题汇编(含答案详解)
- 林业政策与法律法规
- 快递道路安全培训
- 性格测试98题-最符合和最不符合答案
- 家庭教育学整套课件
- 甘肃庆阳家乡介绍课件
- 体育教师技能培训课件
评论
0/150
提交评论