第2章+指令系统及汇编语言程序设计_第1页
第2章+指令系统及汇编语言程序设计_第2页
第2章+指令系统及汇编语言程序设计_第3页
第2章+指令系统及汇编语言程序设计_第4页
第2章+指令系统及汇编语言程序设计_第5页
已阅读5页,还剩91页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2 指令系统及汇编语言程序设计指令系统及汇编语言程序设计北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计教学目的教学目的q熟悉单片机的寻址方式熟悉单片机的寻址方式q掌握指令系统中的常用指令的用法掌握指令系统中的常用指令的用法q了解汇编语言伪指令及其用法了解汇编语言伪指令及其用法q熟悉汇编语言程序的三种基本结构熟悉汇编语言程序的三种基本结构2北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计本章内容本章内容q寻址方式寻址方式q指令系统指令系统q汇编语言指令格式汇编语言指令格式q汇编语言程序设计概述汇

2、编语言程序设计概述3北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计指令系统指令系统分类(分类(*):):指令构成:指令构成:OP DMCS-51根据其指令编码长短的不同有单、双、三字根据其指令编码长短的不同有单、双、三字节指令。节指令。1、单字节指令、单字节指令1)8位全表示操作码位全表示操作码NOP 例:例:NOP机器码为机器码为00H2)8位又有操作码,又有寄存器编码位又有操作码,又有寄存器编码 例:例: MOV A , Rn ; 11101.4北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序

3、设计2、双字节指令(、双字节指令(*) 指令编码占两个字节,第一个为操作码,第二个为操作数指令编码占两个字节,第一个为操作码,第二个为操作数例:例:MOV A , #85H ;机器码为:第一字节;机器码为:第一字节 74H,第二字节,第二字节为为85H3、三字节指令(、三字节指令(*) 第一字节为操作码,第二字节为第一操作数,第三个字节第一字节为操作码,第二字节为第一操作数,第三个字节为第二操作数为第二操作数例:例:MOV direct , #DATA MOV 78H , #80H 第一字节:第一字节:75H,第二字节:,第二字节:78H,第三字节:,第三字节:80H5北京航空航天大学出版社北

4、京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计书写格式(书写格式(*):):标号:标号: 操作码操作码 操作数操作数 ; 注释注释标号标号第一个字母不能为数字,字母个数不能多于第一个字母不能为数字,字母个数不能多于6个。且须用大写英文字母开始。标号可有可无,个。且须用大写英文字母开始。标号可有可无,若有,则代表该指令第一个字节所存放的存储器若有,则代表该指令第一个字节所存放的存储器单元的地址。所以标号又称为符号地址,汇编时单元的地址。所以标号又称为符号地址,汇编时把该地址赋值给标号。把该地址赋值给标号。操作数操作数可有可有03个,若操作数以字母开头,则前面个,若操作

5、数以字母开头,则前面应加应加0。多个操作数之间用。多个操作数之间用“,”隔开隔开 。6北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计2.1 寻址方式(寻找操作数的方式)寻址方式(寻找操作数的方式)1、立即寻址、立即寻址 MOV A, #6FH ; A=6FH,双字节指令,双字节指令,op为为74H,数为,数为6FH,两者相跟放在程序存储器中。,两者相跟放在程序存储器中。 MOV DPTR, #1234H ; DPTR=1234H 三字节指令三字节指令 注:立即数用注:立即数用#data表示表示 寻址空间:程序存贮器寻址空间:程序存贮器7北京航

6、空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计2、直接寻址(、直接寻址(*) 指令中含有操作数的直接地址,该地址指出了参与操作的数指令中含有操作数的直接地址,该地址指出了参与操作的数据所在的字节地址或位地址。据所在的字节地址或位地址。此方式中操作数存储空间有三种:此方式中操作数存储空间有三种:1)内部)内部数据数据存储器的低存储器的低128个字节单元(个字节单元(00H7FH) MOV A, 4FH; A=(4FH) 二字节二字节2)位地址空间)位地址空间(*) MOV C , 00H ; C的位地址为的位地址为D7H3)专用功能寄存器(只能用直接

7、寻址方式访问,专用功能寄存专用功能寄存器(只能用直接寻址方式访问,专用功能寄存器有专门的地址,寄存器名仅是一个代号,给其送数,其器有专门的地址,寄存器名仅是一个代号,给其送数,其实是给一个地址送数)实是给一个地址送数) MOV A, P0 MOV IE , #85H 寻址空间:内部寻址空间:内部RAM低低128字节,字节,SFR8北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计3、寄存器寻址、寄存器寻址 指令指出某一个寄存器中的内容为操作数,指令的指令指出某一个寄存器中的内容为操作数,指令的操作码中包含了参加操作的寄存器的编号操作码中包含了参加

8、操作的寄存器的编号 MOV A, R0; A=(R0) ADD A,R0; A=(A)+(R0) INC R0寻址空间:寻址空间:R0R7,A,B,C, DPTR, AB(乘除法),(乘除法),其其R0R7由操作码低三位的由操作码低三位的8种组合表示,种组合表示, A,B,C, DPTR则隐含在操作码中则隐含在操作码中9北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计4、寄存器间接寻址(、寄存器间接寻址(*) 1)访问片内访问片内RAM或片外的某页或片外的某页256字节空间时,可用字节空间时,可用R0,R1作为间址寄存器。此类指令为单字节指令,

9、操作为间址寄存器。此类指令为单字节指令,操作码的最低位表示是采用作码的最低位表示是采用R0还是还是R1 MOV A, R1 ; A=(R1) 若若(R1)=40H, 则则A=(40H) MOV 60H, #3BH MOV R0 , #60H MOV A,R0 则则(A)=3BH MOVX A, R0; A=(R0) 外部数据存储器外部数据存储器 ExternalMOV P2,#10H P2 放高放高8位地址位地址10北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计q内部内部RAM的的80H-FFH高高128个字节与个字节与SFR地址是重叠的,即

10、高地址是重叠的,即高128字节的字节的RAM和和SFR地址相同,但物理上分开,究竟是访问谁,地址相同,但物理上分开,究竟是访问谁,用寻址方式区分。用寻址方式区分。 直接寻址方式访问直接寻址方式访问SFR 间接寻址访问高间接寻址访问高128字节的字节的RAM例如:例如: MOV 0A0H, #data ; 访问访问SFR中的中的0A0H,即,即P2口口 MOV R0, #data ; 若若R0的内容为的内容为0A0H,则访问地址,则访问地址 为为0A0H的数据单元,而不是访问的数据单元,而不是访问P2口口注:堆栈操作也是间接寻址方式,所以高注:堆栈操作也是间接寻址方式,所以高128字节数据字节数

11、据RAM也可以也可以作为堆栈区使用作为堆栈区使用11北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计2)访问片外)访问片外RAM时,可用时,可用DPTR作间址寄存器,它作间址寄存器,它为为16位,可以访问片外整个位,可以访问片外整个64K的地址空间。的地址空间。MOVX A, DPTR; A=(DPTR)寻址空间:内部寻址空间:内部RAM(R0, R1, SP); 外部外部RAM(R0, R1, DPTR)3)执行)执行push,pop时,也可采用时,也可采用sp为间址寄存器为间址寄存器12北京航空航天大学出版社北京航空航天大学出版社2指令系统

12、及汇编语言程序设计指令系统及汇编语言程序设计5、基址加变址寻址、基址加变址寻址(*)基址寄存器:基址寄存器:DPTR , PC 变址寄存器:变址寄存器:A MOVC A, A+DPTR ; A=(DPTR)+(A) 单字节单字节 MOVC A, A+PC ; PC=(PC)+1 ; A=(PC)+(A)变址寻址方式只适用于变址寻址方式只适用于8051的程序存贮器,用于读的程序存贮器,用于读取数据表取数据表13北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计6、相对寻址(、相对寻址(*) PC内容为基地址,指令的第二字节为偏移量,两内容为基地址,

13、指令的第二字节为偏移量,两者相加,和为跳转指令的转移目的地址者相加,和为跳转指令的转移目的地址 SJMP rel ;PC=PC+2 PCPC14北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计7、位寻址、位寻址 SETB bit ; (bit)=1 寻址空间:内部寻址空间:内部RAM可位寻址区;可位寻址区; SFR 可位寻址位可位寻址位15北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计 方方 式式 利用的变量利用的变量寻址空间寻址空间立即寻址立即寻址程序存储器程序存储器直接寻址直接寻址片内片内

14、RAM低低128个字节,专用寄存器,片个字节,专用寄存器,片内内RAM的位寻址空间的位寻址空间寄存器寻址寄存器寻址R0R7,A,B, CY,DPTR寄存器间接寻址寄存器间接寻址R0,R1, SP片内片内RAMR0,R1, DPTR外部外部RAM基址加变址基址加变址A+PC, A+DPTR程序存储器程序存储器相对寻址相对寻址PC+偏移量偏移量程序存储器,跳转范围程序存储器,跳转范围256B位寻址位寻址片内片内RAM位寻址区和可位寻址的专用功能位寻址区和可位寻址的专用功能寄存器寄存器16北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计2.2 指令简

15、介指令简介按功能分类:按功能分类:共共111条,条,5类类传送类传送类29条条算术运算类算术运算类24条条逻辑操作类逻辑操作类24条条位操作类位操作类17条条控制转移类控制转移类17条条17北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计符号标示(符号标示(*)Rn, Ri , direct , #data , #data16 , addr16 , addr11 , rel , bit , DPTR , A , B , C , /bit , (X) , (X)18北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及

16、汇编语言程序设计1、传送类指令、传送类指令1)功能:将一个源操作数送入指定的目的地之中,源操作数)功能:将一个源操作数送入指定的目的地之中,源操作数表示方法表示方法:地址、立即数、符号地址地址、立即数、符号地址例:例:MOV A , #00H MOV A , 00H MOV A , R02)分类)分类MOV 类类 、 MOVX类、类、 MOVC类、类、XCH,XCHD,SWAP数据交换类数据交换类 、PUSH,POP堆栈操作类堆栈操作类19北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计3)MOVX类指令类指令 a 、外部数据存储器地址由、外部

17、数据存储器地址由DPTR指向指向 MOVX A , DPTR ; A=(DPTR) MOVX DPTR, A ; (DPTR)=A例:例:MOV DPTR , #2007H MOVX A , DPTR INC DPTR MOVX DPTR , A RET20北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计q例:把片外数据存储器例:把片外数据存储器2040H单元中的数取出,单元中的数取出,传送到传送到3000H单元中单元中 MOV DPTR , #2040H MOVX A , DPTR MOV DPTR , #3000H MOVX DPTR ,

18、A21北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计 b、外部数据存储器地址由、外部数据存储器地址由Ri和和P2口指向口指向 Ri: R0 , R1指向地址低指向地址低8位位(*) P2:指地址高:指地址高8位位 MOVX A , Ri ; A=(Ri)+(P2) MOVX Ri , A ; (Ri)+(P2)=A例:例:MOV P2 , #20H MOV R0 , #07HMOVX A , R0INC R0MOVX R0 , A22北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计总结(总结(

19、*):):1、A与片外数据存储器的地址传送通过与片外数据存储器的地址传送通过P0和和P2进行,数据传送由进行,数据传送由P0传输传输 2、访问外部数据存储器只能用间址方式、访问外部数据存储器只能用间址方式 3、只能和、只能和A进行传送进行传送 4、访问片外、访问片外I/O口使用这四条指令,因为其统一口使用这四条指令,因为其统一编址编址23北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计4)MOVC指令指令(*) 常用于查表,数据表格可放在程序存储器中常用于查表,数据表格可放在程序存储器中 a、 MOVC A , A+PC ; PC=PC+1 ;

20、A=(A)+(PC)例:例:start: MOVC A , A+PC 若若start=1000H,(A)=30H,(,(1030H)=20H,(1031H)=55H则则(A)=?24北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计例:设例:设MOVC指令放在指令放在3000H处,试用处,试用MOVC A , A+PC将将3041H中的内容送入中的内容送入A中中(*)ORG 2FFEHMOV A , #40HMOVC A , A+PCRET25北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计 b(

21、*)、MOVC A , A+DPTR ;A9或或Ac=1,则,则A9或或CY=1,则,则A=(A)+#60H若上述条件均成立,则若上述条件均成立,则A=(A)+#66H例(例(*):十进制数):十进制数68+53=121注:注:DA A使用时一般跟在使用时一般跟在ADD和和ADDC指令之后,指令之后,用来对加法和进行修正用来对加法和进行修正37北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计例:设计一个例:设计一个BCD加法程序,设被加数放在加法程序,设被加数放在32H , 31H , 30H中,加数放在中,加数放在42H , 41H , 40

22、H中,和放在中,和放在32H , 31H , 30H中中CLR CMOV R0 , #30HMOV R1 , #40HMOV A , R0ADD A , R1DA AMOV R0 , AINC R0INC R138北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计MOV A , R0ADDC A , R1DA AMOV R0 , AINC R1INC R0MOV A , R0ADDC A , R1DA AMOV R0 , AEND39北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计5、SUBB带借

23、位减法带借位减法(Substrct with Borrow) SUBB A , Rn 没有不带借位标志的减法指令没有不带借位标志的减法指令 SUBB A , 20H ; A255,则,则OV=1,否则清零,而,否则清零,而CY总是为总是为0 乘法指令是指令系统中执行时间最长的乘法指令是指令系统中执行时间最长的2条指令之条指令之一,需要一,需要4个机器周期个机器周期42北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计8、除法、除法 DIV AB A/B,把,把A中的中的8位无符号整数除以位无符号整数除以B中的中的8位无符位无符号整数,号整数, 结

24、果商在结果商在ACC中,余数(不是小数部分)中,余数(不是小数部分)在在B中中注:注:CY=0,OV=0,只有当除数为,只有当除数为0时,时,A和和B中的中的内容为不确定值,此时内容为不确定值,此时OV=1,除法溢出,除法溢出除法指令是指令系统中执行时间最长的除法指令是指令系统中执行时间最长的2条指令之一,条指令之一,需要需要4个机器周期个机器周期43北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计例:把例:把A中的二进制数转换成中的二进制数转换成BCD码(三位),要求百位放在码(三位),要求百位放在50H,十位,个位放在,十位,个位放在51H

25、中中 MOV B , #100DIV ABMOV 50H , AMOV A , BMOV B , #10DIV ABSWAP AADD A , BMOV 51H , ARET44北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计3、逻辑操作类、逻辑操作类1)累加器清)累加器清0CLR A 若对寄存器进行操作若对寄存器进行操作, CLR指令只能对寄存器指令只能对寄存器A进行操作,进行操作,且不影响且不影响CY , AC , OV等标志等标志2)累加器内容按位取反)累加器内容按位取反CPL A 若对寄存器进行操作若对寄存器进行操作, CPL指令只能对

26、寄存器指令只能对寄存器A进行操作,进行操作,且不影响且不影响CY , AC , OV等标志等标志45北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计3)、左循环移位)、左循环移位a、A内容循环左移内容循环左移(*) RL A 不影响标志不影响标志b、A内容带进位循环左移内容带进位循环左移(*) RLC A只影响只影响CY46北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计例:实现一个流水灯例:实现一个流水灯MOV A , #01HTT1: MOV P1 , ALCALL 延时程序延时程序RL A

27、LJMP TT147北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计4)右循环移位)右循环移位 a、A内容循环右移内容循环右移 RR A不影响标志不影响标志 b、A内容带进位循环右移内容带进位循环右移 RRC A仅影响仅影响CY48北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计5)逻辑与)逻辑与qANL A,Rn ; A=ARnqANL A, directqANL A, RiqANLA, #dataqANL direct, AqANL direct, #dataqANL C, bitqANL

28、C, /bit49北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计 该指令若以该指令若以A作为目标寄存器,则影响奇偶标志位作为目标寄存器,则影响奇偶标志位P,若直接地址是,若直接地址是P0P3时,可进行读时,可进行读-修改修改-写的写的操作(数据为锁存器内容),可利用其对单元内操作(数据为锁存器内容),可利用其对单元内容清零容清零例:对内部例:对内部20H单元的低单元的低4位清零,高位清零,高4位位 保持不变,设(保持不变,设(20H)=87HANL 20H , #0F0H 则则 (20H)=80H50北京航空航天大学出版社北京航空航天大学出版

29、社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计6)逻辑或)逻辑或 ORL 该指令若以该指令若以A作为目标寄存器,则影响奇偶标志位作为目标寄存器,则影响奇偶标志位P,若直接地址若直接地址direct是是P0P3时,可进行读时,可进行读-修改修改-写写的操作(数据为锁存器内容),可利用其对单元的操作(数据为锁存器内容),可利用其对单元内容指定位置内容指定位置1例:已知例:已知TMOD各位均为各位均为0,欲将其,欲将其D7 ,D5,D2,D0位位置置 1ORL TMOD , #0A5H51北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计例:

30、根据例:根据A中位中位40的状态,用的状态,用“与与”,“或或”控制控制P1口的位口的位40状态,状态,P1口的高三位不变口的高三位不变ANL A , #00011111B ;屏蔽屏蔽A7A5ANL P1 , #11100000B ; 清清P1口的低口的低5位位ORL P1 , A ;按按 A4A0设置设置P1.4P1.0 如此,位口线先输出如此,位口线先输出0状态,再按状态,再按A4A0置位,可置位,可能发生一个机器周期短暂的能发生一个机器周期短暂的“闪烁闪烁”,所以改用,所以改用下面的程序下面的程序(*)52北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及

31、汇编语言程序设计ANL A , #00011111B ; 屏蔽屏蔽A7A5ORL P1 , A ORL A , #11100000BANL P1 , A53北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计7)逻辑异或)逻辑异或 XRL 该指令若以该指令若以A作为目标寄存器,则影响奇偶标志位作为目标寄存器,则影响奇偶标志位P,若直接地址,若直接地址direct是是P0P3时,可进行读时,可进行读-修改修改-写的操作(数据为锁存器内容),可利用其对单写的操作(数据为锁存器内容),可利用其对单元内容指定位取反元内容指定位取反(*) XRL A , #

32、0FFH ; 对各位均取反对各位均取反54北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计4、位操作类、位操作类1)位数据传送)位数据传送MOV C, bitMOV bit ,C 围绕围绕C进行工作(进行工作(C在位操作中为位累加器),该在位操作中为位累加器),该指令用于直接寻址位(指令用于直接寻址位(202FH中的中的128位以及位以及80FFH中的可位寻址的专用寄存器)与位累加器中的可位寻址的专用寄存器)与位累加器之间的数据传送之间的数据传送MOV A , 00HMOV C , 00H55北京航空航天大学出版社北京航空航天大学出版社2指令系

33、统及汇编语言程序设计指令系统及汇编语言程序设计 若直接寻址位为若直接寻址位为P0P3口中的某一位,指令执行口中的某一位,指令执行时,先读入端口的全部内容(时,先读入端口的全部内容(8位),而后通过位),而后通过C修改过后,再把修改过后,再把8位内容传送到端口锁存器,因此,位内容传送到端口锁存器,因此,它也是一种读它也是一种读-修改修改-写指令。写指令。56北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计例:把例:把P1.0的状态传送到的状态传送到P1.6MOV C , P1.0MOV P1.6 , C 读入读入P1口的口的8位数,修改位数,修改

34、P1.6位,而后把位,而后把8位数再位数再写到写到P1口的锁存器口的锁存器例:设片内数据存储器中(例:设片内数据存储器中(20H)=7FH,则,则 MOV C , 07H执行后,(执行后,(C)=057北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计q位地址的表示位地址的表示 00H , 20H.1 , RS1 , PSW.458北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计2)位变量修改)位变量修改CLR CCLR bitCPL CCPL bit SETB CSETB bit59北京航空航天

35、大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计注:注:1、若直接寻址位为、若直接寻址位为P0P3口中的某一位时,具口中的某一位时,具有读有读-修改修改-写操作功能。写操作功能。2、CLR , CPL要对字节地址进行操作时,仅能要对字节地址进行操作时,仅能对对A进行操作,若操作指令中写的是地址,则该地进行操作,若操作指令中写的是地址,则该地址对应的是位地址址对应的是位地址(*)例:例:CLR A CLR 7BH60北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计3)位变量)位变量“与与”,“或或”指令指令(

36、*)ANL C , bitANL C , /bitORL C , bitORL C , /bit“/”表示对该位取反后再参与运算,但不改变原来的表示对该位取反后再参与运算,但不改变原来的内容内容注:均围绕注:均围绕C进行进行ANL C , 00H ANL A , 00H61北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计4)判位转移指令()判位转移指令(*)JC relJNC relJB bit , relJNB bit , relJBCbit , rel62北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编

37、语言程序设计例例(*):MOV A , #56H JNB ACC.3 , L2 .L2: ADD A , #01H 例(例(*):):MOV A , #43HJBC ACC.6 , L2.L2 : ADD A , #01H. 63北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计5、控制转移类、控制转移类1)无条件转移指令)无条件转移指令 a、绝对转移指令、绝对转移指令(*)AJMP addr11 ; (PC)=(PC)+2PC100=addr100PC1511不变不变注:目标地址必须与该指令后面的一条指令的第一注:目标地址必须与该指令后面的一条

38、指令的第一个字节地址在同一个个字节地址在同一个2K区区64北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计例(例(*):):KWR: AJMP addr设设KWR=1030H , addr=0100H问能否实现正常跳转?问能否实现正常跳转?若若KWR=07FDH , addr=0100H KWR=07FEH , addr=0100H KWR=07FEH , addr=0830H以上三种条件下,是否能正常跳转,跳到何处?以上三种条件下,是否能正常跳转,跳到何处?65北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及

39、汇编语言程序设计b、相对转移指令、相对转移指令(*)SJMP rel ; PC=(PC)+2 PC=(PC)+relrel为为-128+127偏移量偏移量,rel可以用符号地址代替可以用符号地址代替例:例:KRD : SJMP PKRD66北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计c、长跳转指令(、长跳转指令(*)LJMP addr16 不影响任何标志不影响任何标志 LJMP 8100H67北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计d、散转指令、散转指令JMP A+DPTR ; PC

40、=(A)+(DPTR)不改变不改变A和和DPTR的值,也不影响标志的值,也不影响标志 位位例(例(*):设):设A中为中为0,1,2,根据,根据A内容分别执行程内容分别执行程序序PM0 , PM1 , PM268北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计MOV R1, AMOV B , #02MUL ABMOV DPTR , #TABJMP A+DPTRTAB: AJMP PM0 AJMP PM1 AJMP PM269北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计2)条件转移指令)条件转

41、移指令 依照某种特定条件转移,若满足,则目的地址在下依照某种特定条件转移,若满足,则目的地址在下一条指令的起始地址为中心的一条指令的起始地址为中心的256个字节范围个字节范围(-128+127)内)内 JZ relJNZ rel rel也可写成目的地址的标号地址,如此,跳转偏移也可写成目的地址的标号地址,如此,跳转偏移量由计算机直接计算量由计算机直接计算注:这两条指令是对注:这两条指令是对Acc的内容进行判断的内容进行判断70北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计3)比较不相等转移指令)比较不相等转移指令CJNE A , direct

42、 , relCJNE A , #data , relCJNE Rn , #data , relCJNE Ri , #data , rel比较两数大小,若不相等则转移。比较两数大小,若不相等则转移。PC=(PC)+3 PC=(PC)+rel若数若数1数数2,则,则CY=1,否则,否则CY=0该指令不影响任一个操作数的内容该指令不影响任一个操作数的内容71北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计例:例:T2: CJNE A , #0FFH , T1操作:操作:A=#0FFH PC=(PC)+3 CY=0 顺序顺序 执行执行 A#0FFH C

43、Y=1 PC=(PC)+3PC#0FFH CY=0 PC=(PC)+3PC=(PC)+rel 72北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计例:例:T2:CJNE A , #0FFH , T1 LJMP T3T1:JC T4 LJMP T5例:比较内部例:比较内部RAM中中30H和和40H中的两个无符号数中的两个无符号数的大小,将大数存入的大小,将大数存入50H,小数存入,小数存入51H单元中,单元中,若两数相等,则使片内若两数相等,则使片内RAM的的7F位置位置173北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设

44、计指令系统及汇编语言程序设计MOV A , 30HCJNE A , 40H , Q1SETB 7FHRETQ1: JC Q2MOV 50H , AMOV 51H , 40HRETQ2: MOV 50H , 40HMOV 51H , ARET74北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计4)减)减1不为不为0转移指令转移指令 DJNZ Rn , rel DJNZ direct , rel 源操作数减源操作数减1再送给源操作数,若不为再送给源操作数,若不为0,则跳转,则跳转例:从例:从P1.0输出输出15个方波(个方波(*) MOV R2 ,

45、 #30PULSE:CPL P1.0 DJNZ R2 , PULSE该方波的周期为该方波的周期为6个机器周期个机器周期75北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计5)调用及返回指令)调用及返回指令 a、绝对调用、绝对调用 (*) ACALL addr11 ; PC=(PC)+2SP=(SP)+1(SP)=(PC)L SP=(SP)+1(SP)=(PC)HPC=addr100注:子程序地址必须与注:子程序地址必须与ACALL后一条指令的第一个字节在同后一条指令的第一个字节在同一个一个2K区域的存储器区内。不影响标志位区域的存储器区内。不影

46、响标志位76北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计 b、长调用指令(、长调用指令(*) LCALL addr16 ; PC=(PC)+3SP=(SP)+1(SP)=(PC)L SP=(SP)+1(SP)=(PC)HPC=addr16注:可调用存放在存储器中注:可调用存放在存储器中64K字节范围内任何地方字节范围内任何地方的子程序的子程序77北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计 c、子程序返回指令、子程序返回指令 RET 弹出栈顶相邻两单元内容送入弹出栈顶相邻两单元内容送入P

47、C,SP内容减内容减2 d、中断返回指令(、中断返回指令(*) RETI 弹出栈顶相邻两单元内容送入弹出栈顶相邻两单元内容送入PC,SP内容减内容减2,释放中断逻释放中断逻辑使之能接受同级或低级的另一个中断请求,若在执行辑使之能接受同级或低级的另一个中断请求,若在执行RETI指令时,有一个同级或低级的另一个中断请求已经被指令时,有一个同级或低级的另一个中断请求已经被挂起,则挂起,则CPU要在至少执行了中断返回指令之后的下一条要在至少执行了中断返回指令之后的下一条指令才能去响应被挂起的中断指令才能去响应被挂起的中断78北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系

48、统及汇编语言程序设计MOV R1 , #10HMOV R0 , #30HMOV A , R0 进入中断,且有中断进入中断,且有中断 挂起挂起XCH A , R1 此特性可以用来实现单步操作此特性可以用来实现单步操作79北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计 e、空操作、空操作NOP 除使除使PC+1外,机器不作任何操作,而转向下一条外,机器不作任何操作,而转向下一条指令执行。不影响任何寄存器和标志。因为是单指令执行。不影响任何寄存器和标志。因为是单周期指令,所以时间上只用一个机器周期,常用周期指令,所以时间上只用一个机器周期,常用于精

49、确延时或时间上的等待于精确延时或时间上的等待80北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计伪指令伪指令汇编:把汇编语言源程序翻译成机器语言目标程序汇编:把汇编语言源程序翻译成机器语言目标程序的过程。此过程可由人工完成,也可以由计算机的过程。此过程可由人工完成,也可以由计算机系统软件(汇编程序)完成。系统软件(汇编程序)完成。 在汇编程序对源程序进行汇编时,还要提供一在汇编程序对源程序进行汇编时,还要提供一些汇编用的指令。这些指令在汇编时不产生目标些汇编用的指令。这些指令在汇编时不产生目标代码,不影响程序的执行,所以称为伪指令代码,不影响程

50、序的执行,所以称为伪指令81北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计 1、ORG 设置起始地址(设置起始地址(*) ORG nn ; nn为为16位位2进制数进制数 ORG总是出现在每段源程序或数据块的开始,表总是出现在每段源程序或数据块的开始,表明此语句后的程序或数据经汇编后的目标程序的明此语句后的程序或数据经汇编后的目标程序的起始地址。该段源程序(数据块)就连续存放在起始地址。该段源程序(数据块)就连续存放在以后的地址内,直到遇到另一个以后的地址内,直到遇到另一个ORG nn为止。为止。它可使程序员把程序,子程序,数据块存放在存它可

51、使程序员把程序,子程序,数据块存放在存储器的任何位置储器的任何位置例:例:ORG 2000HMOV A , 20H82北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计注:一般要求注:一般要求ORG定义空间地址由小到大,且不能定义空间地址由小到大,且不能重叠重叠(*)ORG 3000HORG 2000HMOV A , 20H MOV A , 20HORG 2700HORG 2001HMOV A , 21H MOV A , 21HENDEND注:若在源程序开始不放注:若在源程序开始不放ORG指令,则汇编将从指令,则汇编将从0单单元开始编排目标程序元

52、开始编排目标程序83北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计2、DB 定义字节(定义字节(*)标号:标号: DB 字节常数或字符或表达式字节常数或字符或表达式把字节常数或字节串存入内存连续单元中把字节常数或字节串存入内存连续单元中例:例: ORG 1000HSEG1: DB 53H, 74H, 78H, 1, 2SEG2: DB 23H, DAY END注:注:DB后的若为数值,则其取值范围为后的若为数值,则其取值范围为00FFH,即不能超过一个字节。若为字符串,其长度应限即不能超过一个字节。若为字符串,其长度应限制在制在80个字符内(

53、由汇编程序决定)个字符内(由汇编程序决定)84北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计3、DW 定义一个字定义一个字标号:标号:DW 字或字串字或字串 汇编后,低位地址存低位字节汇编后,低位地址存低位字节 ,高位地址存高位,高位地址存高位字节字节4、DS 预留存储区(预留存储区(*)标号:标号:DS 项项 由标号指定单元开始,定义一个存储区,以备源程由标号指定单元开始,定义一个存储区,以备源程序使用,存储区内预留的单元数由序使用,存储区内预留的单元数由“项项”的值决的值决定定85北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇

54、编语言程序设计指令系统及汇编语言程序设计例:例:ORG 3C40HTEMP:DS 10注:注:DB, DW, DS常放在源程序之后,其起始地址可常放在源程序之后,其起始地址可用用ORG指令指定。若不指定,则如果伪指令紧跟指令指定。若不指定,则如果伪指令紧跟在源程序之后,则汇编后的数据块将紧挨着目标在源程序之后,则汇编后的数据块将紧挨着目标程序的末尾地址开始存放程序的末尾地址开始存放86北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计5、EQU 为标号赋值为标号赋值标号标号 EQU 操作数操作数 将操作数赋值于标号,使两边的两个量等值将操作数赋值

55、于标号,使两边的两个量等值例:例:BLK EQU 1000HSTK EQU BLK注:同一程序中,用注:同一程序中,用EQU对标号赋值后,该标号的值在整个对标号赋值后,该标号的值在整个程序中不再改变。即在一个源程序中,任一标号只能赋值程序中不再改变。即在一个源程序中,任一标号只能赋值一次。赋值后的标号可以做程序地址、数据地址或立即数一次。赋值后的标号可以做程序地址、数据地址或立即数使用,因此,操作数可以是使用,因此,操作数可以是8位或位或16位二进制数值位二进制数值87北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计6、DATA名字名字 DATA 直接字节地址直接字节地址 给一个给一个8位内部位内部RAM单元起一个名字,名字必须是单元起一个名字,名字必须是以字母开头的字母数字串,必须是先前未定义过以字母开头的字母数字串,必须是先前未定义过的。同一单元地址可以有多个名字。的。同一单元地址可以有多个名字。ERROR DATA 80H即:一个单元可以有多个名字,但一个名字只能

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论