




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第2章章 指令系统指令系统 及汇编语言程序设计及汇编语言程序设计北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计2 2教学目的及内容教学目的及内容q熟悉单片机的指令格式及标识熟悉单片机的指令格式及标识q熟悉单片机的寻址方式熟悉单片机的寻址方式q掌握指令系统中的常用指令的用法掌握指令系统中的常用指令的用法q了解汇编语言伪指令及其用法了解汇编语言伪指令及其用法q熟悉汇编语言程序的三种基本结构熟悉汇编语言程序的三种基本结构北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计3 32.1单片机的指令格式及
2、标识单片机的指令格式及标识2.1.1 指令格式指令格式q不同的指令完成不同的操作,实现不同功能,具有不同的不同的指令完成不同的操作,实现不同功能,具有不同的格式。一条指令要指出完成何种操作,操作的对象在那里,格式。一条指令要指出完成何种操作,操作的对象在那里,具体出现的形式描述归纳如下:具体出现的形式描述归纳如下:q标号:标号:操作码助记符操作码助记符 目的操作数,源操作数目的操作数,源操作数;注释;注释q(1)标号;标明该指令在内存中所占的地址,称为符号地)标号;标明该指令在内存中所占的地址,称为符号地址,作用;为转移指令提供转移的目的地址址,作用;为转移指令提供转移的目的地址q(2)操作码
3、助记符指出该指令的功能,也即完成的操作)操作码助记符指出该指令的功能,也即完成的操作q(3) 操作数是指指令操作的对象在那里,通常用相应的操作数是指指令操作的对象在那里,通常用相应的寻址方式来说明。在寻址方式来说明。在51单片机中依据操作数的多少,指令可单片机中依据操作数的多少,指令可分为无操作数指令,单操作数分为无操作数指令,单操作数指令指令,双操作数,双操作数指令指令,三操作三操作数指令数指令北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计4 4指令系统指令系统(4)注释是对具体指令的解释,方便编程者对程序)注释是对具体指令的解释,方便编程
4、者对程序的的理解理解和记忆。可有可无。和记忆。可有可无。1、单字节指令、单字节指令1)8位二进数表示操作码。位二进数表示操作码。 例:例:NOP机器码为机器码为00H2)8位位二进数二进数又有操作码,又有寄存器编码又有操作码,又有寄存器编码 例:例: MOV A , Rn ; 11101.北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计5 52、双字节指令(、双字节指令(*) 指令编码占两个字节,第一个为操作码,第二个为操作数指令编码占两个字节,第一个为操作码,第二个为操作数例:例:MOV A , #85H ;机器码为:第一字节;机器码为:第一
5、字节 74H,第二字节,第二字节为为85H3、三字节指令(、三字节指令(*) 第一字节为操作码,第二字节为第一操作数,第三个字节第一字节为操作码,第二字节为第一操作数,第三个字节为第二操作数为第二操作数例:例:MOV direct , #DATA MOV 78H , #80H 第一字节:第一字节:75H,第二字节:,第二字节:78H,第三字节:,第三字节:80H北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计6 62.1.2指令中用到的标识符指令中用到的标识符指令形式再写如下指令形式再写如下标号:标号: 助记符操作码助记符操作码 操作数操作数
6、; 注释注释标号;第一个字母不能为数字,字母个数不能多于标号;第一个字母不能为数字,字母个数不能多于6个。且须用个。且须用大写英文字母开始。标号可有可无,若有,则代表该指令第大写英文字母开始。标号可有可无,若有,则代表该指令第一个字节所存放的存储器单元的地址。所以标号又称为符号一个字节所存放的存储器单元的地址。所以标号又称为符号地址,汇编时把该地址赋值给标号。地址,汇编时把该地址赋值给标号。操作数操作数可有可有03个,若操作数以字母开头,则前面应加个,若操作数以字母开头,则前面应加0。多。多个操作数之间用个操作数之间用“,”隔开隔开 。指令中常用的标识符指令中常用的标识符1、Ri和和Rn:表示
7、当前工作寄存器区中的工作寄存器,表示当前工作寄存器区中的工作寄存器,i取取0或或1,表示表示R0或或R1,n取取07,表示,表示R0R72、#data:表示包含在指令中的表示包含在指令中的8位立即数位立即数3、#data16:表示包含在指令中的:表示包含在指令中的16位立即数位立即数4、rel:以补码形式表示的以补码形式表示的8位相对偏移量,范围位相对偏移量,范围-127127,主要,主要用在相对寻址指令中用在相对寻址指令中5、addr16和和addr11:分别表示分别表示16位直接地址和位直接地址和11位直接地址。位直接地址。北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程
8、序设计指令系统及汇编语言程序设计7 72.1.2指令中用到的标示符指令中用到的标示符6、direct:表示直接寻址的地址。表示直接寻址的地址。7、bit:表示可按位寻址的直接位地址:表示可按位寻址的直接位地址8、(X):表示表示X单元的内容单元的内容9、/和和 :/表示对该位操作数取反,表示对该位操作数取反, 将箭尾一方的内容将箭尾一方的内容送入箭头所指的地方送入箭头所指的地方10、A:累加器累加器11、B:专用寄存器,用于专用寄存器,用于MUL和和DIV指令中指令中12、C:进位标志或进位位,或布尔处理机中的累加器进位标志或进位位,或布尔处理机中的累加器13、:间址寄存器或基址寄存器的前缀,
9、如:间址寄存器或基址寄存器的前缀,如Ri, A,DPTR14、DPTR:数据指针,用作:数据指针,用作16位的地址寄存器位的地址寄存器北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计8 82.2 寻址方式(寻找操作数或操作对象的方式)寻址方式(寻找操作数或操作对象的方式)要处理的数据通常存放在寄存器,要处理的数据通常存放在寄存器,RAM数据区中,如何以适当的数据区中,如何以适当的形式表达出来这就是寻址方式,或寻找操作数的方式形式表达出来这就是寻址方式,或寻找操作数的方式1、立即寻址方式立即寻址方式(常数寻址方式常数寻址方式)在数据的前面加上在数
10、据的前面加上#标识号,必须是操作数中的源操作数形式标识号,必须是操作数中的源操作数形式 MOV A, #6FH ; A=6FH,双字节指令,双字节指令,op(操作码)为(操作码)为74H,操作数为操作数为6FH,两者相跟放在程序存储器中。,两者相跟放在程序存储器中。 MOV DPTR, #1234H ; DPTR=1234H 三字节指令三字节指令 注:常数用注:常数用#data表示,常数是指令代码的一部分表示,常数是指令代码的一部分 寻址空间:程序存贮器寻址空间:程序存贮器北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计9 92、寄存器寻址、寄
11、存器寻址 操作数在寄存器中,使用时在指令中直接使用寄存器的名操作数在寄存器中,使用时在指令中直接使用寄存器的名称,指令的操作码中包含了参加操作的寄存器的编号称,指令的操作码中包含了参加操作的寄存器的编号 MOV A, R0; A (R0),R0寄存器中的数据送到寄存器中的数据送到A累加器累加器 ADD A, R0; A (A)+(R0) INC R0寻址空间:寻址空间:R0R7,A ,B ,CY(位)(位), DPTR, AB(乘除(乘除法),其法),其R0R7由操作码低三位的由操作码低三位的8种组合表示,种组合表示, A,B,CY(位)(位), DPTR则隐含在操作码中则隐含在操作码中北京航
12、空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计10103、直接寻址方式、直接寻址方式 指令中含有操作数的直接地址,该地址指出了参与操作的数指令中含有操作数的直接地址,该地址指出了参与操作的数据所在的据所在的RAM中的字节地址或位地址。中的字节地址或位地址。此方式中操作数存储空间有三种:此方式中操作数存储空间有三种:1)内部)内部数据数据存储器的低存储器的低128个字节单元(个字节单元(00H7FH) MOV A, 4FH; A=(4FH)2)位地址空间(可寻址位)位地址空间(可寻址位) MOV C , 00H ; 00H是位地址(是位地址(00H5
13、FH)3)专用功能寄存器(只能用直接寻址方式访问,专用功能寄存专用功能寄存器(只能用直接寻址方式访问,专用功能寄存器有专门的地址,寄存器名仅是一个代号,给其送数,其器有专门的地址,寄存器名仅是一个代号,给其送数,其实是给一个地址送数)实是给一个地址送数) MOV A, P0 MOV IE , #85H 寻址空间:内部寻址空间:内部RAM低低128字节,字节,SFR。专用功能寄存器。专用功能寄存器。内部内部数据数据存储器中的可寻址位存储器中的可寻址位北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计11114、寄存器间接寻址、寄存器间接寻址 是指存
14、储器单元的地址存放在寄存器中,在指令中通过提供是指存储器单元的地址存放在寄存器中,在指令中通过提供寄存器来使用对应的存储单元。寄存器来使用对应的存储单元。“形式形式寄存器名寄存器名” 1)访问片内访问片内RAM或片外的某页或片外的某页256字节空间时,可用字节空间时,可用R0,R1作作为地址寄存器。此类指令为单字节指令,操作码的最低位表示为地址寄存器。此类指令为单字节指令,操作码的最低位表示是采用是采用R0还是还是R1 MOV A, R1 ; A=(R1) 若若(R1)=40H, 则则A=(40H) MOV 60H, #3BH MOV R0 , #60H MOV A, R0 则则(A)=3BH
15、 MOVX A, R0; A=(R0) 外部数据存储器外部数据存储器 ExternalMOV P2, #10H P2 放高放高8位地址位地址北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计1212q内部内部RAM的的80H-FFH高高128个字节与个字节与SFR地址是重叠的,即高地址是重叠的,即高128字节的字节的RAM和和SFR地址相同,但物理上分开,究竟是访问谁,地址相同,但物理上分开,究竟是访问谁,用寻址方式区分。用寻址方式区分。 直接寻址方式访问直接寻址方式访问SFR 间接寻址访问高间接寻址访问高128字节的字节的RAM例如:例如: M
16、OV 0A0H, #data ; 访问访问SFR中的中的0A0H,即,即P2口口 MOV R0, #data ; 若若R0的内容为的内容为0A0H,则访问地址,则访问地址 为为0A0H的数据单元,而不是访问的数据单元,而不是访问P2口口注:堆栈操作也是间接寻址方式,所以高注:堆栈操作也是间接寻址方式,所以高128字节数据字节数据RAM也可以也可以作为堆栈区使用作为堆栈区使用北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计13132)访问片外)访问片外RAM时,可用时,可用DPTR作间址寄存器,它作间址寄存器,它为为16位,可以访问片外整个位,可
17、以访问片外整个64K的地址空间。的地址空间。MOVX A, DPTR; A=(DPTR)寻址空间:内部寻址空间:内部RAM(R0, R1, SP); 外部外部RAM(R0, R1, DPTR)3)执行)执行push,pop时,也可采用时,也可采用sp为间址寄存器为间址寄存器北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计14145、基址加变址寻址、基址加变址寻址(*)基址寄存器:基址寄存器:DPTR , PC 变址寄存器:变址寄存器:A MOVC A, A+DPTR ; A=(DPTR)+(A) 单字节单字节 MOVC A, A+PC ; PC
18、=(PC)+1 ; A=(PC)+(A)变址寻址方式只适用于变址寻址方式只适用于8051的程序存贮器,用于读的程序存贮器,用于读取数据表取数据表北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计15156、相对寻址寻址方式、相对寻址寻址方式 PC内容为基地址,指令的第二字节为偏移量,两内容为基地址,指令的第二字节为偏移量,两者相加,和为跳转指令的转移目的地址者相加,和为跳转指令的转移目的地址 SJMP rel ;PC=PC+2 PCPC北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计16167、位
19、寻址、位寻址 SETB bit ; (bit)=1 寻址空间:内部寻址空间:内部RAM中可位寻址区;中可位寻址区; SFR 可位寻址位可位寻址位北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计1717 方 式 利用的变量寻址空间立即寻址程序存储器直接寻址片内RAM低128个字节,专用寄存器,片内RAM的位寻址空间寄存器寻址R0R7,A,B, CY,DPTR寄存器间接寻址R0,R1, SP片内RAMR0,R1, DPTR外部RAM基址加变址A+PC, A+DPTR程序存储器相对寻址PC+偏移量程序存储器,跳转范围256B位寻址片内RAM位寻址区和
20、可位寻址的专用功能寄存器北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计18182.3 指令系统简介指令系统简介51单片机指令共单片机指令共111条,按功能分类:条,按功能分类:5类类数据传送类指令数据传送类指令29条条算术运算类指令算术运算类指令24条条逻辑操作类指令逻辑操作类指令24条条位操作类指令位操作类指令17条条控制转移类指令控制转移类指令17条条北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计19192.3.1 数据传输类指令数据传输类指令 数据传输类指令共计数据传输类指令共计29条
21、,分为条,分为 MOV 类类 、 MOVX类、类、 MOVC类、类、XCH , XCHD, SWAP数据交换类数据交换类 、PUSH , POP堆栈操作类堆栈操作类功能:将一个源操作数送入指定的目的地之中,源操作数表示方法功能:将一个源操作数送入指定的目的地之中,源操作数表示方法:地址、立地址、立即数、符号地址即数、符号地址指令格式:指令格式:MOV 目的操作数,目的操作数, 源操作数源操作数1、MOV类指令,片内数据传输类指令类指令,片内数据传输类指令操作数出现的可能性,操作数出现的可能性,A、Rn, Ri, direct, #data, DPTP例:例:MOV A , #00H;以累加器以
22、累加器A为目的操作数的为目的操作数的MOV指令指令 MOV Rn, 00H;以寄存器以寄存器Rn为目的操作数的为目的操作数的MOV指令指令 MOV direct, A;以直接地址为目的操作数的以直接地址为目的操作数的MOV指令指令 MOV Ri, A;以寄存器以寄存器Ri间接地址为目的操作数的间接地址为目的操作数的MOV指令指令 MOV DPTR, #data16;16位数据传输指令位数据传输指令北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计2020片内数据传输指令使用时应注意:源操作数和目的片内数据传输指令使用时应注意:源操作数和目的操作数
23、不允许在同一条指令出现工作寄存器,不操作数不允许在同一条指令出现工作寄存器,不管是寄存器寻址还是寄存器间接寻址:管是寄存器寻址还是寄存器间接寻址:MOV Rn, RnMOV Ri, Rn北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计21212、MOVX类指令,片外数据与累加器类指令,片外数据与累加器A传输类指令传输类指令只能通过累加器只能通过累加器A,与片外数据存储器进行数据传输。访问时只能通,与片外数据存储器进行数据传输。访问时只能通过过Ri和和DPTR以间接寻址方式进行。以间接寻址方式进行。 a 、外部数据存储器地址由、外部数据存储器地址
24、由DPTR指向指向 MOVX A , DPTR ; A=(DPTR)寄存器间接寻址寄存器间接寻址 MOVX DPTR, A ; (DPTR)=A例:例:MOV DPTR , #2007H MOVX A , DPTR INC DPTR MOVX DPTR , A北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计2222q例:把片外数据存储器例:把片外数据存储器2040H单元中的数取出,单元中的数取出,传送到片外数据存储器的传送到片外数据存储器的3000H单元中单元中 MOV DPTR , #2040H MOVX A , DPTR MOV DPTR
25、, #3000H MOVX DPTR , A北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计2323 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 , R0;寄存器间接寻址寄存器间接寻址INC R0MOVX R0 , A北京
26、航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计2424注意:注意:1、A与片外数据存储器的地址传送通过与片外数据存储器的地址传送通过P0和和P2进行,数据传送由进行,数据传送由P0传输传输 2、访问外部数据存储器只能用间址方式、访问外部数据存储器只能用间址方式 3、只能和、只能和A进行传送进行传送 4、访问片外、访问片外I/O口使用这四条指令,在单片机的口使用这四条指令,在单片机的I/O和外部和外部RAM存储器是统一编址的存储器是统一编址的, 在存储器扩在存储器扩展中再讲述展中再讲述北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言
27、程序设计指令系统及汇编语言程序设计25253、MOVC指令,程序内数据查表传输指令,有两条指令,程序内数据查表传输指令,有两条 一条是用一条是用DPTR基址变址寻址,一条是基址变址寻址,一条是PC基址变址寻址方基址变址寻址方式:式:MOVC A , A+PC ;近程查表指令;近程查表指令 MOVC A,A+DPTR ;远;远程查表指令程查表指令 常用于查表,数据表格可放在程序存储器中常用于查表,数据表格可放在程序存储器中 a、 MOVC A , A+PC ; PC=PC+1 ;A=(A)+(PC)例:例:start: MOVC A , A+PC 若若start=1000H,(A)=30H,(,
28、(1030H)=20H,(1031H)=55H则则 (A)=?北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计2626例:写程序片段例:写程序片段(1)将)将R0的内容送的内容送R6中,程序片段为:中,程序片段为: MOV A, R0 MOV R6,A(2)将片内)将片内RAM 30H单元的内容送片外单元的内容送片外60H单元中,程序单元中,程序 片段为:片段为: MOV A, 30H MOV R0, #60H MOVX R0, A(3)将片外)将片外RAM 1000H单元的内容送片内单元的内容送片内20H单元中,程序单元中,程序 片段为:片段
29、为: MOV DPTR, #1000H MOVX A, DPTR MOV 20H, A 北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计2727 (4) 将将 ROM 2000H单元的内容送片内单元的内容送片内30H单元中,程单元中,程序序 片段为:片段为: MOV A, #0H MOV DPTR , #2000H MOVC A, A+DPTR MOV 30H, A 注意:注意:MOVC只能用基址只能用基址+变址方式,且目的操作数变址方式,且目的操作数只能为只能为A北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统
30、及汇编语言程序设计2828例:累加器中的内容为一位例:累加器中的内容为一位BCD码,用查表法获得相应的码,用查表法获得相应的ASCII码码INC AMOVC A , A+PCRETTAB:DB 30HDB 31HDB 32HDB 33H .DB 39H北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计29294、栈操作指令:堆栈是在片内、栈操作指令:堆栈是在片内RAM中按中按“先进后出,先进后出,后进先出后进先出”原则设置的专用原则设置的专用RAM区区 PUSH direct POP direct例:进栈顺序例:进栈顺序 PUSH A PUSH
31、20H 出栈顺序出栈顺序POP 20HPOP A北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计3030q例:将例:将片外片外2500H单元中的内容压入堆栈,后弹单元中的内容压入堆栈,后弹出到出到40H单元中单元中MOV DPTR , #2500HMOVX A , DPTRMOV 20H , AMOV SP , #30HPUSH 20HPOP 40H北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计31315、数据交换指令、数据交换指令通常数据传送指令实现将源操作数的数据传送到目的操作数,通常数据
32、传送指令实现将源操作数的数据传送到目的操作数,指令执行后,源操作数的数据不变,数据是单向传送。数指令执行后,源操作数的数据不变,数据是单向传送。数据交换指令把数据作双向传输,源操作数的数据成为目的据交换指令把数据作双向传输,源操作数的数据成为目的操作数的数据,目的操作数的数据变成源操作数的数据。操作数的数据,目的操作数的数据变成源操作数的数据。XCH A, Rn; A RnXCH A , Ri;A (Ri) XCH A , direct; A (direct)XCHD A , Ri ; 数据的低四位交换数据的低四位交换 A (03) (Ri)(03)SWAP A;数据的低四位与高四位交换;数据
33、的低四位与高四位交换A (03) A (47) 北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计3232例例:将将20H单元的内容与单元的内容与A中内容互换,而后将中内容互换,而后将A的高的高4位存入位存入Ri指示的指示的RAM单元中的低单元中的低4位,位,A的低的低4位位存入该单元的高存入该单元的高4位位XCH A , 20HSWAP AMOV Ri , A北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计MOV指令传送路径指令传送路径MOV也并非任意传送也并非任意传送直接地址数据直接地址数据D
34、ata寄存器间接寄存器间接SP寄存器寄存器 C寄存器寄存器 DPTR寄存器寄存器 R7R0直接地址数直接地址数据据Data立即数立即数#Data累加器累加器 A寄存器间接寄存器间接R1,R01616位位北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计MOV指令传送路径指令传送路径MOV也并非任意传送也并非任意传送A R7R0direct目的操作数目的操作数源操作数源操作数DPTRA R7R0direct#data16R1,R0R1,R0北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计3535 算
35、术运算类指令共计算术运算类指令共计24条,其运算结果会影响条,其运算结果会影响CY , Ac, OV但但INC和和DEC不影响标志位不影响标志位1:加法指令:加法指令1)不含进位的加法指令)不含进位的加法指令ADD 有四种形式有四种形式 ADD A , Rn ; ADD A , Ri; ADD A , direct ; ADD A , #data例例:(A)=C3H , (R0)=20H , (20H)=AAHADD A , R0则则Ac=0, CY=1 ,OV=1 , (A)=6DH2.3.22.3.2算术运算类指令算术运算类指令北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语
36、言程序设计指令系统及汇编语言程序设计3636 2)带进位加法)带进位加法ADDC:有四种形式有四种形式 ADDC A , Rn ; ADDC A , Ri; ADDCA , direct ; ADDC A , #data例:例:A=AEH , (20H)=81H CY=1 ADDC A , 20H则:则:CY=1 , Ac=1 ,OV=1 , (A)=30H多用于多字节数的加法运算多用于多字节数的加法运算例:有两个无符号例:有两个无符号16位数分别存于位数分别存于30H和和32H开始的单元开始的单元中,设(中,设(30H)=AFH,(31H)=0AH,(32H)=90H, (33H)=2FH,
37、高字节在高地址单元,低字节在低地址单,高字节在高地址单元,低字节在低地址单元,算两数之和并存入元,算两数之和并存入32开始的单元中开始的单元中北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计3737CLR CMOV R0 , #32HMOV A , 30HADD A , R0MOV R0 , A MOV A , 31HINC R0ADDC A , R0MOV R0 , A北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计38382)加)加1指令指令 INC: INC A INC Rn INC di
38、rect INC Ri INC DPTR 注注: (1)若原来为)若原来为0FFH,则加,则加1后溢出为后溢出为00H,不影不影响任何标志响任何标志(2)对于)对于 INC direct指令,若指令,若direct是是I/O端口端口(P0P3)时,执行的是读)时,执行的是读-修改修改-写操作(写操作(*)(3)INC DPTR是唯一的一条是唯一的一条16位加位加1指令,指令,执行过程中若低执行过程中若低8位有进位可直接向高位有进位可直接向高8位进位而位进位而不用通过不用通过CY传送。传送。北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计3939
39、2、减法指令、减法指令1)带借位减法指令)带借位减法指令SUBB:有四种形式有四种形式(Substrct with Borrow) SUBB A , Rn SUBB A ,direct SUBB A , Ri SUBB A ,#data2)没有不带借位标志的减法指令)没有不带借位标志的减法指令,要进行不带借位的要进行不带借位的减法运算,可以先通过对减法运算,可以先通过对cy清清“0”,而后进行带,而后进行带借位的减法运算。借位的减法运算。 CLR CY SUBB A , 20H ; A255(即(即B中不为中不为0),则),则OV=1,否则,否则OV=0 乘法指令是指令系统中执行时间最长的乘法
40、指令是指令系统中执行时间最长的2条指令之条指令之一,需要一,需要4个机器周期个机器周期北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计42424、除法指令:只有一条、除法指令:只有一条 DIV AB A/B,把,把A中的中的8位无符号整数除以位无符号整数除以B中的中的8位无符位无符号整数,号整数, 结果商在结果商在ACC中,余数(不是小数部分)中,余数(不是小数部分)在在B中中注:指令执行后注:指令执行后CY=0,OV=0,只有当除数为,只有当除数为0时,时,A和和B中的内容为不确定值,此时中的内容为不确定值,此时OV=1,除法溢,除法溢出出除
41、法指令是指令系统中执行时间最长的除法指令是指令系统中执行时间最长的2条指令之一,条指令之一,需要需要4个机器周期个机器周期北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计43435、十进制调整指令、十进制调整指令 DA 对对A参与的参与的BCD码加法所获得的码加法所获得的8位结果进行十进位结果进行十进制调整,只有一条制调整,只有一条 DA A注:注:DA A使用时一般跟在使用时一般跟在ADD和和ADDC指令之后,指令之后,用来对两位压缩的用来对两位压缩的BCD码数进行修正码数进行修正注:若注:若A039或或Ac=1,则,则A9或或CY=1,则,
42、则A=(A)+#60H若上述条件均成立,则若上述条件均成立,则A=(A)+#66H例例2.:BCD表示表示十进制数十进制数68+53=121 MOV A, #68H ADD A, #53H DA A; A中的值为中的值为21H,C=1北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计4444例:设计一个例:设计一个BCD加法程序,设被加数放在加法程序,设被加数放在32H , 31H , 30H中,加数放在中,加数放在42H , 41H , 40H中,和放在中,和放在32H , 31H , 30H中,程序片段如下;中,程序片段如下;CLR CMOV
43、 R0 , #30HMOV R1 , #40HMOV A , R0ADD A , R1DA AMOV R0 , AINC R0INC R1北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计4545MOV A , R0ADDC A , R1DA AMOV R0 , AINC R1INC R0MOV A , R0ADDC A , R1DA AMOV R0 , AEND北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计4646例:把例:把A中的二进制数转换成中的二进制数转换成BCD码(三位),要求百位放在
44、码(三位),要求百位放在50H,十位,个位放在,十位,个位放在51H中中 MOV B , #100DIV ABMOV 50H , AMOV A , BMOV B , #10DIV ABSWAP AADD A , BMOV 51H , ARET北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计47472.3.3逻辑类操作指令逻辑类操作指令逻辑操作类共计逻辑操作类共计24条,包括逻辑与指令、或指令、异或指令、条,包括逻辑与指令、或指令、异或指令、清零和求反指令清零和求反指令1、累加器清、累加器清0和求反指令和求反指令1)累加器清)累加器清0CLR A
45、 若对寄存器进行操作若对寄存器进行操作, CLR指令只能对寄存器指令只能对寄存器A进行操作,进行操作,且不影响且不影响CY , AC , OV等标志等标志2)累加器内容按位取反)累加器内容按位取反CPL A 若对寄存器进行操作若对寄存器进行操作, CPL指令只能对寄存器指令只能对寄存器A进行操作,进行操作,且不影响且不影响CY , AC , OV等标志等标志北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计48482、循环移位指令:该指令有、循环移位指令:该指令有4条,左循环,右循环条,左循环,右循环 1)左循环移位左循环移位(1)累加器)累加器
46、A内容循环左移一位:内容循环左移一位: RL A 不影响标志位不影响标志位(2)累加器)累加器A内容带进位循环左移一位内容带进位循环左移一位 RLC A 只影响只影响CYD2D2D1D1 D0D0D7D7 D6D6 D5D5 D4D4 D3D3 D2D2D1D1 D0D0D7D7D6D6 D5D5 D4D4 D3D3 D2D2 D1D1 D0D0CYCY北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计4949例:实现一个流水灯例:实现一个流水灯MOV A , #01HTT1: MOV P1 , ALCALL 延时程序延时程序RL ALJMP T
47、T1北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计50502)右循环移位)右循环移位 (1)累加器)累加器A内容循环右移内容循环右移 RR A 不影响标志不影响标志 (2)累加器)累加器A内容带进位循环内容带进位循环右移右移 RRC A 仅影响仅影响CYD7D7D6D6D5D5 D4D4 D3D3D2D2 D1D1D0D0D7D7D6D6D5D5 D4D4D3D3D2D2 D1D1D0D0CYCY北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计51513、逻辑与、逻辑与 指令指令ANL:如下:
48、如下6条条qANL A,Rn ; A=ARn累加器内容逻辑累加器内容逻辑“与与”寄存器内容,寄存器内容,q 结果送累加器。结果送累加器。qANL A, direct ;累加器内容逻辑累加器内容逻辑“与与”内部内部RAM或专用寄存器内容,或专用寄存器内容,q 结果送累加器。结果送累加器。qANL A, Ri ;累加器内容逻辑累加器内容逻辑“与与”内部内部RAM,q 结果送累加器。间接寻址方式结果送累加器。间接寻址方式qANL A, #data ;累加器内容逻辑累加器内容逻辑“与与”立即数,结果送累加器。立即数,结果送累加器。qANL direct, A ;内部内部RAM或专用寄存器内容逻辑或专用
49、寄存器内容逻辑“与与”累加器内容累加器内容,q 结果送内部结果送内部RAM或专用寄存器或专用寄存器。qANL direct, #data ; 内部内部RAM或专用寄存器内容逻辑或专用寄存器内容逻辑“与与”立即数,立即数,q 结果送内部结果送内部RAM或专用寄存器。或专用寄存器。北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计5252 该指令若以该指令若以A作为目标寄存器,则影响奇偶标志位作为目标寄存器,则影响奇偶标志位P,若直接地址是,若直接地址是P0P3时,可进行读时,可进行读-修改修改-写的写的操作(数据为锁存器内容),可利用其对单元内操作
50、(数据为锁存器内容),可利用其对单元内容清零容清零例:对内部例:对内部20H单元的低单元的低4位清零,高位清零,高4位位 保持不变,设(保持不变,设(20H)=87HANL 20H , #0F0H 则则 (20H)=80H北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计53534、逻辑或、逻辑或 ORL:有:有6条条ORL A, Rn;累加内容逻辑或寄存器内容,结果送入累加器。累加内容逻辑或寄存器内容,结果送入累加器。ORL A, Ri;累加内容逻辑或内部累加内容逻辑或内部RAM内容,结果送入累加器。寄存器间接寻址。内容,结果送入累加器。寄存器
51、间接寻址。ORL A, #data ;累加内容逻辑或立即数,累加内容逻辑或立即数,结果送入累加器。结果送入累加器。ORL A, direct ;累加内容逻辑或内部累加内容逻辑或内部RAM或专用寄存器,或专用寄存器,结果送入累加器。结果送入累加器。ORL direct, A ;内部内部RAM或专用寄存器内容逻辑或累加内容,结果送入内部或专用寄存器内容逻辑或累加内容,结果送入内部RAM或专或专用寄存器。用寄存器。ORL direct, #data ;内部内部RAM或专用寄存器逻辑或立即数,结果送入内部或专用寄存器逻辑或立即数,结果送入内部RAM或专或专用寄存器。用寄存器。该指令若以该指令若以A作为
52、目标寄存器,则影响奇偶标志位作为目标寄存器,则影响奇偶标志位P,若直接地址,若直接地址direct是是P0P3时,可进行读时,可进行读-修改修改-写的操作写的操作(数据为锁存器内容),可利用其对单元内容指定位置(数据为锁存器内容),可利用其对单元内容指定位置1例:已知例:已知TMOD各位均为各位均为0,欲将其,欲将其D7 ,D5,D2,D0位置位置 1ORL TMOD , #0A5H北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计5454例:根据例:根据A中位中位40的状态,用的状态,用“与与”,“或或”控制控制P1口的位口的位40状态,状态,
53、P1口的高三位不变口的高三位不变ANL A , #00011111B ;屏蔽屏蔽A7A5ANL P1 , #11100000B ; 清清P1口的低口的低5位位ORL P1 , A ;按按 A4A0设置设置P1.4P1.0 如此,位口线先输出如此,位口线先输出0状态,再按状态,再按A4A0置位,可置位,可能发生一个机器周期短暂的能发生一个机器周期短暂的“闪烁闪烁”,所以改用,所以改用下面的程序下面的程序(*)北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计5555ANL A , #00011111B ; 屏蔽屏蔽A7A5ORL P1 , A OR
54、L A , #11100000BANL P1 , A北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计56565、逻辑异或、逻辑异或 XRL:有:有6条条XRL A, Rn;累加内容或寄存器内容,结果送入累加器。累加内容或寄存器内容,结果送入累加器。XRL A, Ri;累加内容逻辑异或内部累加内容逻辑异或内部RAM内容,结果送入累加器。寄存器间接寻址。内容,结果送入累加器。寄存器间接寻址。XRL A, #data ;累加内容逻辑异或立即数,结果送入累加器。累加内容逻辑异或立即数,结果送入累加器。XRL A, direct ;累加内容逻辑异或内部累
55、加内容逻辑异或内部RAM或专用寄存器,或专用寄存器,结果送入累加器。结果送入累加器。XRL direct, A ;内部内部RAM或专用寄存器内容逻辑异或累加内容,或专用寄存器内容逻辑异或累加内容, 结果送入内部结果送入内部RAM或专用寄存器。或专用寄存器。XRL direct, #data ;内部内部RAM或专用寄存器异或立即数,或专用寄存器异或立即数, 结果送入内部结果送入内部RAM或专用寄存器。或专用寄存器。 实际使用中,逻辑实际使用中,逻辑“与与”用于实现对指定位清零,其余位不变。逻用于实现对指定位清零,其余位不变。逻辑辑“或或”用于实现对指定位置用于实现对指定位置“1”,其余位不变。逻
56、辑,其余位不变。逻辑“异或异或”用于实现对指定位取反,其余位不变。用于实现对指定位取反,其余位不变。XRL A , #0FFH ; 对各位均取反对各位均取反北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计57572.3.4位操作类指令位操作类指令位操作类指令共计位操作类指令共计17,分为如下情况,分为如下情况1、位数据传送指令、位数据传送指令 MOV C, bit;直接寻址位传送到进位标志;直接寻址位传送到进位标志 MOV bit ,C;进位标志传送到直接寻址位;进位标志传送到直接寻址位 特点:围绕特点:围绕C进行工作(进行工作(C在位操作中为
57、位累加器),该指在位操作中为位累加器),该指令用于直接寻址位(令用于直接寻址位(202FH中的中的128位以及位以及80FFH中的中的可位寻址的专用寄存器)与位累加器之间的数据传送,不可位寻址的专用寄存器)与位累加器之间的数据传送,不能直接进行位到位的数据传输能直接进行位到位的数据传输MOV A , 00H;字节数据传输;字节数据传输MOV C , 00H;位数据传输;位数据传输 例:将片内例:将片内RAM中位寻址区的中位寻址区的20H位的内容传送到位的内容传送到30H位。位。 MOV C , 20H; MOV 30H , C;北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程
58、序设计指令系统及汇编语言程序设计5858q位地址的表示位地址的表示 00H , 20H.1 , RS1 , PSW.4,RS0 北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计59592、位逻辑操作指令、位逻辑操作指令(1)位清)位清“0” : CLR C;清进位标志;清进位标志 ,C 0 CLR bit ;清直接寻址位;清直接寻址位, (bit) 0 (2)位)位 取取 反:反: CPL C ;进位标志取反,;进位标志取反,C (/C) CPL bit ;直接寻址位取反;直接寻址位取反, (bit) (/bit) (3)位置)位置“1” :S
59、ETB C ;进位标志位置;进位标志位置“1”,C 1 SETB bit ;直接寻址位置;直接寻址位置“1”,(bit) 1 (4)位或)位或 :ORL C, bit; 进位标志逻辑或直接寻址位,结果送进位标志逻辑或直接寻址位,结果送C ORL C, /bit; 进位标志逻辑或直接寻址位的反,结果送进位标志逻辑或直接寻址位的反,结果送C ( 5 )位与位与 :ANL C, bit; 进位标志逻辑与直接寻址位,结果送进位标志逻辑与直接寻址位,结果送C ANL C, /bit; 进位标志逻辑与直接寻址位的反,结果送进位标志逻辑与直接寻址位的反,结果送C利用位逻辑运算指令可以实现各种逻辑功能利用位逻
60、辑运算指令可以实现各种逻辑功能北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计6060“/”表示对该位取反后再参与运算,但不改变原来的内容表示对该位取反后再参与运算,但不改变原来的内容注:均围绕注:均围绕C进行进行 ANL C , 00H 与与 ANL A , 00H 的区别的区别举例(教材举例(教材70页)页)北京航空航天大学出版社北京航空航天大学出版社2指令系统及汇编语言程序设计指令系统及汇编语言程序设计61613、位转移指令、位转移指令 (1)以)以C为条件的位转移指令为条件的位转移指令 JC rel; C=1 则转移,则转移,PC+2+
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025石墨矿石买卖合同(完整)
- 2025实习员工合同范本
- 化肥厂采购设备安装规定
- 汽车保险代理合同协议
- 中医考试题及答案大专
- 金融机构总部大楼租赁及金融服务合作协议
- 宫萱与吴鹏的情感纠葛离婚协议书
- 宠物狗品种鉴定与知识产权保护协议
- 文员岗位招聘与团队建设合同
- 离婚协议书签订与诉讼离婚心理咨询服务合同
- 供水工程成本预算与动态控制方案
- GB/T 45860.1-2025光纤激光束焊机的验收试验第1部分:光纤输送机的激光组件
- 卒中后抑郁症的中医治疗
- 2025年4月自考00155中级财务会计试题及答案含评分标准
- DB50∕T 1653-2024 林区森林防火及森林质量提升专项规划编制导则
- 道路工程培训课件
- 制冰厂可行性研究报告
- 快递业务流程标准化管理
- 中班健康魔法消气屋课件
- 呼吸内科出科汇报
- JJF 2267-2025场磨式大气电场仪校准规范
评论
0/150
提交评论