指令系统与汇编语言程序设计教案.ppt
《指令系统与汇编语言程序设计教案.ppt》由会员分享,可在线阅读,更多相关《指令系统与汇编语言程序设计教案.ppt(89页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、指令系统与汇编语言程序设计 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望指令和助记符指令和助记符 指令本身是一组二进制数代码,为了便于记忆,将这些代码用具有一定含义的指令助记符来表示,助记符一般采用英文单词的缩写。例:例:指令代码指令代码 助记符助记符 功能功能 740A MOV A,#0AH 将十六进制数将十六进制数0AH放放 入累加器入累加器A中中 指令的字节数指令的字节数 一条指令由操作码和操作数组成。操作码指明执行什么操作,例如数的传送、加法、减法等。操
2、作数则表示这条指令所完成的操作对象,即是对谁进行操作。操作数可以是一个数,或者是一个数所在的内存地址。指令由指令字节组成,不同的指令,指令的字节数不相同。有单字节指令、双字节指令和三字节指令。寻址方式寻址方式1 寄存器寻址2 直接寻址3 立即寻址4 寄存器间接寻址5 变址寻址6 相对寻址7 位寻址1寄存器寻址寄存器寻址 以通用寄存器的内容为操作数的寻址方式。通用寄存器为A、B、DPTR以及R0R7。例:例:CLR A ;A0 INC DPTR ;DPTRDPTR+1 ADDR5,#20H ;R5#20H+R52直接寻址直接寻址 指令中直接给出操作数地址的寻址方式,能进行直接寻址的存储空间有SF
3、R寄存器和内部数据RAM。例:例:MOVPSW,#20H ;PSW#20H MOVA,30H ;A(30H)3立即寻址立即寻址 指令中直接给出操作数的寻址方式。立即操作数用前面加有#号的8位或16位数来表示。例:例:MOVA,#60H ;A#60H MOVDPTR,#3400H;DPTR#3400H MOV30H,#40H;30H单元单元#40H 4寄存器间接寻址寄存器间接寻址 以寄存器中内容为地址,以该地址中内容为操作数的寻址方式。间接寻址的存储器空间包括内部数据RAM和外部数据RAM。能用于寄存器间接寻址的寄存器有R0,R1和DPTR。在寄存器名称前面加一个符号来表示寄存器间接寻址。例:例
4、:MOV A,R0 ;A (R0)MOVX DPTR,A ;外部;外部RAM(DPTR)A 片内片内RAM30HR034HA30H34H MOV A,R0 操作示意图操作示意图片外片外RAM2000HDPTR30HA2000H30HMOVX DPTR,A 操作示意图操作示意图5 5 变址寻址变址寻址 变址寻址是以某个寄存器的内容为基本地址,然后在这个基址上加以地址的偏移量,才是真正的操作数地址。例:例:MOVC A,A+DPTR ;A(A+DPTR)MOVC A,A+PC ;A(A+PC)MOVC A,A+DPTR 操作示意图操作示意图程序存储器程序存储器02F1HDPTRA0302H1EH1
5、1HA执行前执行前1EHA执行后执行后+6 6相对寻址相对寻址 以当前程序计数器PC的内容为基础,加上指令给出的一字节补码数(偏移量)形成新的PC值的寻址方式。相对寻址用于修改PC值,主要用于实现程序的分支转移。例:例:SJMP 08H ;PCPC+2+08H SJMP 08H 操作示意图操作示意图程序存储器程序存储器SJMP200AH08H2000H+208H执行前执行前PC2000H执行后执行后PC7 7 位寻址位寻址 位寻址只能对有位地址的单元作位寻址操作。位寻址其实是一种直接寻址方式,不过其地址是位地址。例:例:SETB 10H ;将;将10H位置位置1 MOV 32H,C ;32H进
6、位位进位位C CLR PSW.4 ;将;将RS1位清位清0指令分类说明指令分类说明1 算术运算类指令2 逻辑运算与循环类指令3 数据传送类指令4 程序转移类指令5 子程序调用及返回指令6 位操作指令算术运算类指令算术运算类指令 主要用于主要用于8 8位无符号数运算;也可用于带符号数运位无符号数运算;也可用于带符号数运算。包括:加、减、乘、除、加算。包括:加、减、乘、除、加1 1、减、减1 1运算指令,运算指令,指令操作将影响指令操作将影响PSWPSW中有关状态位。中有关状态位。1 加法指令ADD AADD A,#data#data ADD AADD A,direct direct ADD AA
7、DD A,Rn Rn ADD AADD A,Ri Ri 用途:将用途:将A A中的值与源操作数所指内容相加,最终结果中的值与源操作数所指内容相加,最终结果 存在存在A A中。中。(1)不带进位位的加法指令(4 4条)条)例例1 1:ADD AADD A,#47H#47HADD AADD A,34H34HADD AADD A,R7R7ADD AADD A,R0R0例例2 2:MOV AMOV A,#0AEH ;-82#0AEH ;-82ADD AADD A,#81H ;-127#81H ;-127则执行完本条指令后,则执行完本条指令后,A A中的值为中的值为2FH2FHPSWPSW中状态位中状态
8、位 C=1 C=1,AC=0AC=0,OV=1OV=1,P=1P=1对无符号数:结果为对无符号数:结果为12FH;12FH;对带符号数:对带符号数:OV=1OV=1,有错,有错。(2)带进位位的加法指令(4 4条)条)ADDC AADDC A,RnRn;A ARnRnCYCYAAADDC AADDC A,directdirect;A A(direct)(direct)CYACYAADDC AADDC A,RiRi;A A(Ri)(Ri)CYACYAADDC AADDC A,#data#data;A AdatadataCYACYA用途:将用途:将A A中的值和其后面的值以及进位位中的值和其后面的
9、值以及进位位C C中的值相加,中的值相加,最终结果存在最终结果存在A A,常用于多字节数运算中。,常用于多字节数运算中。例:先做先做67H+A0H=107H67H+A0H=107H,而,而1 107H07H显然超过了显然超过了0FF0FFH H,因此最终保存在,因此最终保存在A A中的是中的是07H07H,而,而1 1则到了则到了PSWPSW中中的的CYCY位了。换言之,位了。换言之,CYCY就相当于是就相当于是100H100H。然后再做然后再做10H+30H+10H+30H+CYCY,结果是,结果是41H41H,所以,所以最终的结果是最终的结果是4107H4107H。1067H+30A0H1
10、067H+30A0H0001 0000 0110 0111 0011 0000 1010 0000 0100 0001 0000 0111 1067H1067H30A0H30A0H4107H4107H又例:先做先做67H+20H=87H67H+20H=87H,没有超过,没有超过0FF0FFH H,因此最终,因此最终保存在保存在A A中的是中的是87H87H,而,而PSWPSW中的中的CY=0CY=0。然后再做然后再做10H+30H+10H+30H+CYCY,结果是,结果是40H40H,所以,所以最终的结果是最终的结果是4087H4087H。1067H+3020H1067H+3020H0001
11、0000 0110 0111 0011 0000 0010 0000 0100 0000 1000 0111 1067H1067H3020H3020H4087H4087H(3)加1指令(5 5条)条)INC AINC A;A+1A+1AA,影响,影响P P标志标志INC RnINC Rn;Rn+1RnRn+1RnINC directINC direct;(direct)+1(direct)(direct)+1(direct)INC RiINC Ri;(Rn)+1(Rn)(Rn)+1(Rn)INC DPTRINC DPTR;DPTR+1DPTRDPTR+1DPTR功能很简单,就是将后面目标中的值
12、加功能很简单,就是将后面目标中的值加1 1。例:例:A=12HA=12H,R0=33HR0=33H,(21H)=32H(21H)=32H,(34H)=22H (34H)=22H,DPTR=1234HDPTR=1234H。连续执行下面的指令:连续执行下面的指令:INC A INC A INC R0 INC R0 INC 21H INC 21H INC R0 INC R0 INC DPTR INC DPTR;A=13H;R0=34H;(21H)=33H;(34H)=23H;DPTR=1235HDA ADA A在进行在进行BCDBCD码加法运算时,跟在码加法运算时,跟在ADDADD和和ADDCADD
13、C指令指令之后,用来对之后,用来对BCDBCD码加法运算结果进行码加法运算结果进行自动修正自动修正。例:例:A=00010101A=00010101(代表十进制数(代表十进制数1515)ADD A ADD A,#8#8(4)十进制调整指令(1 1条)条);A=1DH;A=1DH,按二进制规律加,按二进制规律加;A=23H;A=23H,按十进制规律加,按十进制规律加DA ADA A2 减法指令(8 8条)条)SUBB ASUBB A,RnRn ;A ARnRnCYCYAASUBB ASUBB A,direct direct ;A A(direct)(direct)CYACYASUBB ASUBB
14、 A,RiRi ;A A(Ri)(Ri)CYCYAASUBB ASUBB A,#data#data;A AdatadataCYACYA将将A A中的值减去源操作数所指内容以及进位位中的值减去源操作数所指内容以及进位位C C中的中的值,最终结果存在值,最终结果存在A A中。中。说明:没有不带借位的减法指令,如果需要做不带位说明:没有不带借位的减法指令,如果需要做不带位的减法指令(在做第一次相减时),只要将的减法指令(在做第一次相减时),只要将CY清零即可。清零即可。(1)带借位的减法指令(4 4条)条)(2)减1指令(4 4条)条)DEC ADEC A ;A-1A-1A,A,DEC RnDEC
15、Rn;Rn-1RnRn-1RnDEC directDEC direct ;(direct)-1(direct)(direct)-1(direct)DEC RiDEC Ri;(Rn)-1(Rn)(Rn)-1(Rn)与加与加1 1指令类似。指令类似。3 乘法指令(1 1条)条)MUL ABMUL AB ;A AB BBABA此指令的功能是将此指令的功能是将A A和和B B中的两个中的两个8 8位无符号数相乘,位无符号数相乘,结果将为结果将为1616无符号数。其中高无符号数。其中高8 8位放在位放在B B中,低中,低8 8位放在位放在A A中。中。在乘积大于在乘积大于FFHFFH时,时,0V0V置置
16、1 1,否则,否则OVOV为为0 0;而;而CYCY总是总是0 0。例:例:A=4EHA=4EH,B=5DHB=5DH,执行执行MUL ABMUL AB指令后,乘积是指令后,乘积是1C561C56H H,所以在,所以在B B中放的是中放的是1CH1CH,而,而A A中放的则是中放的则是56H56H。4 除法指令(1 1条)条)DIV ABDIV AB;A AB B的商的商AA,余数,余数BB此指令的功能是将此指令的功能是将A A中的中的8 8位无符号数除位无符号数除B B中的中的8 8位位无符号数,商放在无符号数,商放在A A中,余数放在中,余数放在B B中。中。如果在做除法前如果在做除法前B
17、 B中的值是中的值是00H00H,也就是除数为,也就是除数为0 0,那,那么么0V=10V=1。例:例:A=11HA=11H,B=04HB=04H,执行执行DIV ABDIV AB指令后,结果为:指令后,结果为:A=04HA=04H,B=1B=1。逻辑运算与循环类指令逻辑运算与循环类指令主要用于对主要用于对2 2个操作数按位进行逻辑操作,结果送到个操作数按位进行逻辑操作,结果送到A A或直接寻址单元。或直接寻址单元。v 主要操作主要操作 与、或、异或、移位、取反、清零等。与、或、异或、移位、取反、清零等。v 对标志位的影响对标志位的影响 除了目的操作数为除了目的操作数为ACCACC的指令影响奇
18、偶标志的指令影响奇偶标志P P外,外,一般不影响标志位。一般不影响标志位。1 1 逻辑或指令逻辑或指令(6 6条)条)ORL A,Rn ;ARnAORL A,direct ;A(direct)AORL A,Ri ;A(Ri)AORL A,#data ;AdataAORL direct,A ;(direct)A(direct)ORL direct,#data;(direct)data(direct)影响影响P P标志标志例:例:71H和和56H相或:相或:01110001(71H)01010110(56H)01110111 即即77H后两条指令,若直接地址为后两条指令,若直接地址为I/OI/O端
19、口,则为端口,则为“读改读改写写”操作。操作。2 逻辑与指令(6 6条)条)ANL A,Rn ;ARnAANL A,direct ;A(direct)AANL A,Ri ;A(Ri)AANL A,#data ;AdataAANL direct,A ;(direct)A(direct)ANL direct,#data ;(direct)data(direct)影响影响P P标志标志例:例:71H71H和和56H56H相与:相与:01110001 01110001(71H71H)01010110 01010110(56H56H)01010000 01010000 即即50H50H后两条指令,若直接
20、地址为后两条指令,若直接地址为I/OI/O端口,则为端口,则为“读改读改写写”操作。操作。例:例:71H71H和和56H56H相异或:相异或:01110001 01110001(71H71H))01010110)01010110(56H56H)3 逻辑异或指令(6 6条)条)XRL A,Rn ;A RnAXRL A,direct ;A (direct)AXRL A,Ri ;A (Ri)AXRL A,#data ;A dataAXRL direct,A ;(direct)A(direct)XRL direct,#data ;(direct)data(direct)影响影响P标志标志0010011
21、1 00100111 即即27H27H后两条指令,若直接地址为后两条指令,若直接地址为I/OI/O端口,则为端口,则为“读改读改写写”操作。操作。4 取反与清与清0 0指令(2 2条)条)取反:取反:CPL A CPL A;/AA/AA例:若例:若A=5CHA=5CH,执行执行CPL ACPL A 结果:结果:A=A3HA=A3H清清0 0:CLR ACLR A ;0A0A5 循环移位指令(4 4条)条)RL ARR ARLC ARRC AA.7 A.0A.7 A.0A.7 A.0CYCYA.7 A.0后两条指令,影响后两条指令,影响P P和和CYCY标志。标志。例:若若A=5CHA=5CH,
22、CY=1CY=1,执行,执行RLC ARLC A后,后,v 对对RLCRLC、RRCRRC指令,在指令,在CY=0CY=0时时RLCRLC相当于相当于乘乘以以2 2RRCRRC相当于相当于除除以以2 2结果:结果:A=B9HA=B9H,CY=0CY=0,P=1P=10101 11000101 11001 11011 10011011 10010 0综合举例:综合举例:ANL AANL A,#0FH#0FH ;屏蔽;屏蔽A A的高的高4 4位位SWAP ASWAP AANL P1ANL P1,#0FH#0FH ;清;清P1P1口高口高4 4位位ORL P1ORL P1,A A ;P1P1口高口高
23、4 4位输出位输出A A的低的低4 4位;位;把累加器把累加器A A中的低中的低4 4位状态,通过位状态,通过P1P1口的高口的高4 4位输位输出,出,P1 P1口的低口的低4 4位状态不变。位状态不变。数据传送类指令数据传送类指令 助记符助记符 说明说明 MOV MOV、MOVXMOVX、MOVC MOVC 传送操作传送操作 XCH XCH、XCHDXCHD、SWAP SWAP 交换操作交换操作 PUSH PUSH、POP POP 堆栈操作堆栈操作v 源操作数寻址方式源操作数寻址方式:立即寻址、直接寻址、寄存器寻址、立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址。寄存器间接寻址、变
24、址寻址。v 目的操作数寻址方式目的操作数寻址方式:直接寻址、寄存器寻址、寄存器间接寻址直接寻址、寄存器寻址、寄存器间接寻址 除了目的操作数为除了目的操作数为ACCACC的指令影响奇偶标志的指令影响奇偶标志P P外,一般不影外,一般不影 响标志位。响标志位。直接地址直接地址direct累加器累加器A直接地址直接地址direct间接地址间接地址Ri寄存器寄存器Rn立即数立即数#data寄存器寄存器DPTR8051单片机片内数据传送图单片机片内数据传送图1 1 以累加器为目的操作数的指令(以累加器为目的操作数的指令(4 4条)条)MOV AMOV A,RnRn MOV AMOV A,directdi
25、rectMOV AMOV A,RiRiMOV AMOV A,#data#data 这组指令功能将这组指令功能将源操作数指定内容源操作数指定内容送到送到A A中。中。2 2 以寄存器以寄存器RnRn为目的操作数的指令为目的操作数的指令 (3 3条)条)MOV Rn MOV Rn,A A MOV Rn MOV Rn,directdirect MOV Rn MOV Rn,#data#data 这组指令功能是把这组指令功能是把源操作数指定源操作数指定的内容送入当前工作寄存的内容送入当前工作寄存 器,源操作数不变。器,源操作数不变。3 3 以直接地址为目的操作数的指令(以直接地址为目的操作数的指令(5
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 指令系统 汇编语言 程序设计 教案
限制150内