
《《单片机原理及接口技术》第三章指令系统》由会员分享,可在线阅读,更多相关《《单片机原理及接口技术》第三章指令系统(72页珍藏版)》请在文档大全上搜索。
1、指令系统1 1学习学习目的目的(1)掌握指令格式及表示方法:助记符表示和机器码表示。(2)了解寻址方式的概念。(3)掌握常用指令的功能及应用。2 2问题问题引入引入MOV P1,#55H MOV P1, 55H 请比较以上两条指令执行请比较以上两条指令执行后后P1P1口的状况口的状况? ?为什么为什么? ?往P1口传送数据的指令中,数据的来源不尽相同。数据是指令的操作对象,叫做操作数。指令必须给出操作数所在的地方,才能进行数据传送。寻找操作数地址的方法,称为寻址方式。寻找操作数到底有多寻找操作数到底有多少种方式呢少种方式呢? ?第一节 指令格式伪指令v伪指令:也称汇编命令,仅提供汇编控制信息,
2、不产生机器语言指令。v如ORG 、END、 EQU、DB、DW、DS、BIT第四章的内容定义存储空间,即从制定地址开始保留存储单元位地址符号,功能是把BIT之后的位地址附给字符名。如A1 BIT P1.0定义字。该命令把DW后的数据按16位从当前地址存放。定义字节。该命令把DB后的数据按8位从当前地址存放。第二节 寻址方式寄存器寻址直接寻址立即数寻址寄存器间接寻址变址寻址相对寻址位寻址寄存器寻址直接寻址立即数寻址寄存器间接寻址变址寻址相对寻址位寻址寄存器寻址直接寻址立即数寻址寄存器间接寻址变址寻址相对寻址位寻址R0-R7ABDPTR寄存器寻址直接寻址立即数寻址寄存器间接寻址变址寻址相对寻址位寻
3、址R0R1DPTR寄存器寻址直接寻址立即数寻址寄存器间接寻址变址寻址相对寻址位寻址ADPTRPC寄存器寻址直接寻址立即数寻址寄存器间接寻址变址寻址相对寻址位寻址寄存器寻址直接寻址立即数寻址寄存器间接寻址变址寻址相对寻址位寻址10 0 0 0 0 0 0 07F7F77776F6F67675F5F57574F4F474737372F2F27271F1F17170F0F0707 7E7E76766E6E66665E5E56564E4E4646 36362E2E26261E1E16160E0E06067D7D75756D6D65655D5D55554D4D454535352D2D25251D1D15
4、150D0D05057C7C74746C6C64645C5C54544C4C4444 34342C2C24241C1C14140C0C04047B7B73736B6B63635B5B53534B4B4343 33332B2B23231B1B13130B0B03037A7A72726A6A62625A5A52524A4A4242 32322A2A22221A1A12120A0A020279797171696961615959515149494141 313129292121191911110909010178787070686860605858505048484040 3030282820201
5、818101008080000 例: 3D3D 3C3C 3B3B3F3F 3E3E3A3A 3939383827H27H寄存器寻址直接寻址立即数寻址寄存器间接寻址变址寻址相对寻址位寻址0 0 0 0 0 0 01 0位寻址位寻址位操作指令中的操作数是位地址。位操作指令中的操作数是位地址。用“bit”示 1、位寻址区域、位寻址区域 2、位地址的表示方法、位地址的表示方法 3、位寻址例子、位寻址例子 片内RAM20H2FH,11个SFR位寻址ROM256字节范围内(PC+rel)相对寻址ROM变址寻址片内RAM低128字节,片外RAM寄存器间接寻址R0R7、A、B、DPTR寄存器寻址片内RAM直
6、接寻址ROM立即数寻址寻址空间寻址方式指令描述约定指令描述约定符符 号号含含 义义RnRn表示当前选定寄存器组的工作寄存器表示当前选定寄存器组的工作寄存器R0R0R7R7RiRi表示作为间接寻址的地址指针表示作为间接寻址的地址指针R0R0R1R1#data#data表示表示8 8位立即数,即位立即数,即00H00HFFHFFH#data16#data16表示表示1616位立即数,即位立即数,即0000H0000HFFFFHFFFFHaddr16addr16表示表示1616位地址,用于位地址,用于64K64K范围内寻址范围内寻址addr11addr11表示表示1111位地址,用于位地址,用于2K
7、2K范围内寻址范围内寻址directdirect8 8位直接地址,可以是内部位直接地址,可以是内部RAMRAM区的某一单元或某一专用功能寄存器的地址区的某一单元或某一专用功能寄存器的地址RelRel带符号的带符号的8 8位偏移量(位偏移量(-128-128+127+127)BitBit位寻址区的直接寻址位位寻址区的直接寻址位(X X)某寄存器或某单元中的内容。某寄存器或某单元中的内容。将将 后面的内容传送到前面去后面的内容传送到前面去((X)(X))由由X X间接寻址的单元中的内容间接寻址的单元中的内容第三节 89C51的指令MOV , MOV A,#20H RidirectRn#dataA传
8、送指令在片内存储器的操作功能 MOV DPTR,#data16 MOVX , 例1 近程查表设程序中的数据表格为:10101010H H:02H 02H 1011H1011H:04H04H1012H1012H:06H06H1013H1013H:08H08H 执行程序:10001000H H:MOV AMOV A,#0DH#0DH1002H1002H:MOVC AMOVC A,A+PCA+PC ;(0DH+1003H)A1003H1003H:MOV R0MOV R0,A A ;(A) R0 结果为:(结果为:(A)=02H,(,(R0)=02H,(,(PC)=1004HA=?R0=?PC=?例2
9、 远程查表设程序中的数据表格为: 执行程序:10001000H H:MOV AMOV A,#10H#10H1002H1002H:PUSH DPHPUSH DPH1004H1004H:PUSH DPLPUSH DPL1006H1006H:MOV DPTRMOV DPTR,#7000H#7000H1009H1009H:MOVC AMOVC A,A+DPTRA+DPTR ;(10H+7000H);(10H+7000H)A A100AH: POP DPL100AH: POP DPL100CH100CH:POP DPHPOP DPH 7010H:02H 7011H:04H7012H:06H7013H:0
10、8H结果为:(结果为:(A)=02H ,(PC)=100EH,(DPTR)=原值原值A=?DPTR=?PC=? BCD码码: 0011 0100 十进制十进制二进制二进制BCDBCD码码0123456789 10 11 12 13 14 15000000010010001101000101011001111000100110101011110011011110111100000001001000110100010101100111100010010001 00000001 00010001 00100001 00110001 01000001 01011 81 6+3 4十进制十进制0001
11、10000001 0110+BCD码码0010 11100011 01000010 1110-0000 0110差差691-36=?助记符格式助记符格式机器码机器码(B)相应操作相应操作指令说明指令说明机器周机器周期期INC A00000100AA+1影响影响PSW的的P标志标志1INC Rn00001rrrRnRn+1n=07, rrr=0001111INC direct0 0 0 0 0 1 0 1 direct(direct)(direct)+11INC Ri0000011i(Ri)(Ri)+1i=0,1 1INC DPTR10100011DPTRDPTR+12DEC A00010100
12、AA-1影响影响PSW的的P标志标志1DEC Rn00011rrrRnRn-1n=07, rrr=0001111DEC direct0 0 0 1 0 1 0 1 direct(direct)(direct)+11DEC Ri0001011i(Ri)(Ri)-1i=0,11加1减1指令不影响CY、AC、OV标志位比较: INC A ADD A,#01H都将A的内容加1,但INC A 不影响CY、AC、OV位,只影响P位。而ADD指令影响以上四位。 无符号数相乘,高位存无符号数相乘,高位存B,低位存,低位存A无符号数相除,商存无符号数相除,商存A,余数存,余数存B 助记符格式助记符格式机器码机器
13、码(B)相应操作相应操作指令说明指令说明机器机器周期周期ANL A,direct01010101 directAAdirect按位相与按位相与1ANL A,Rn 01011rrrAARnn=07rrr=0001111ANL A,Ri0101011iAA(Ri)i=0,11ANL A,#data01010100 dataAA#data 1ANL direct,A01010010direct(direct)(direct)A不影响不影响PSW的的P标志标志1ANL direct,#data01010011 directdata(direct)(direct)#data不影响不影响PSW的的P标志标
14、志2 01000011 direct data助记符格式助记符格式机器码机器码(B)相应操作相应操作指令说明指令说明机器机器周期周期ORL A,direct01000101 directAAdirect按位相或按位相或1ORL A,Rn01001rrrAARnn=07, rrr=0001111ORL A,Ri0100011iAA(Ri)i=0,11ORL A,#data01000100dataAA#data 1ORL direct,A01000010 direct(direct)(direct)A不影响不影响PSW的的P标志标志1ORL direct,#data(direct)(direct)
15、#data不影响不影响PSW的的P标志标志2 助记符格式助记符格式机器码机器码(B)相应操作相应操作指令说明指令说明机器机器周期周期XRL A,direct01100101 directAA (direct)按位相异或按位相异或1XRL A,Rn01101rrrAA Rnn=07, rrr=0001111XRL A,Ri0110011iAA (Ri)i=0,11XRL A,#data01100100 dataAA #data 1XRL direct,A01100010 direct(direct)(direct) A不影响不影响PSW的的P标志标志1XRL direct,#data011000
16、11 direct data(direct)(direct) #data不影响不影响PSW的的P标志标志2助记符格式机器码(B)相应操作指令说明机器周期CLR A11100100A00HA中内容清0,影响P标志1CPL A11110100A中内容按位取反,影响P标志1AA 应用vANL A, #00001111B ; 屏蔽某些位 vORL A, #00001111B ; 置位某些位vXRL A, #00001111B ; 取反某些位vCPL A / INC A ;求补码A.0A.7A.0A.7A.0A.7A.0A.7CYCY RL A RR A RLC A RRC A 只有比较转移指令CJNE
17、影响标志。1.无条件转移2.有条件转移3.子程序调用和返回4.空操作AJMP 、LJMP 、SJMP、JMPJZ、JNZ、CJNE、DJNZACALL LCALL、RET、RETINOP假设执行该指假设执行该指令前,令前,PCPC的值的值为为0000H0000H。 PC高5位(保持不变) PC低11位A10A9A800 001A7A6A5A4A3A2A1A0操作码(第一字节)操作数(第二字节)程序计数器PC 例: ;(A)+(DPTR)PC说明: v具有多分枝转移功能,即散转功能,又叫散转指令;v转移范围:是以DPTR为首地址的256B。助记符格式助记符格式机器码机器码(B)相应操作相应操作机
18、器周期机器周期 Rn,rel11011rrr relRnRn-1,若,若Rn0,则,则PCPC+rel, 否则顺序否则顺序执行执行2 direct,rel11010101 direct rel(direct)(direct)-1,若(若(direct)0,则,则PCPC+rel,否则顺序执行否则顺序执行2CJNE (目的操作数目的操作数),(),(源操作数源操作数),),rel CJNE A,direct,rel CJNE A,#data,rel CJNE Rn,#data,rel CJNE Ri,#data,rel 指令执行完后,PC=(PC)+3若(目的操作数) (源操作数) ,则(PC)
19、+relPC,且0CY;若(目的操作数) (源操作数) ,则(PC)+relPC,且1CY;若(目的操作数) = (源操作数) ,则顺序执行,且0CY。助记符格式助记符格式机器码机器码(B)(B)相应操作相应操作机器机器周期周期CJNECJNE A,#data,relA,#data,rel10110100 10110100 data data relrel若若A#data, A#data, 则则PCPCPC+relPC+rel,否则顺序否则顺序执行;若执行;若 A#dataA#data,则,则CY=1CY=1,否则否则CY=0CY=02 2CJNECJNE Rn,#data,relRn,#da
20、ta,rel10111rrr10111rrrdata data relrel若若 Rn#dataRn#data,则,则PCPCPC+relPC+rel,否则顺否则顺序执行;若序执行;若RnRn#data#data,则,则CY=1CY=1,否则否则CY=0CY=02 2CJNECJNE Ri,#data,relRi,#data,rel1011011i1011011idata data relrel若若( (Ri)#dataRi)#data,则,则PCPCPC+relPC+rel,否则否则顺序执行;若顺序执行;若( (RiRi)#data,)#data,则则CY=1CY=1,否否则则CY=0CY=
21、02 2CJNECJNE A,direct,relA,direct,rel1011010110110101direct direct relrel若若A(direct)A(direct),则,则PCPCPC+relPC+rel,否则否则顺序执行;若顺序执行;若A(direct)A(direct),则,则CY=1CY=1,否否则则CY=0CY=02 2还有什么方法实还有什么方法实现循环的终止现循环的终止? ? MOV R0,#20H MOV R7,#0FH CLR ALOOP:MOV R0,A INC A INC R0 DJNZ R7,LOOP SJMP $将00H0FH这16个数顺序地置入片内
22、RAM20H2FH单元中。 MOV R0,#20H MOV R7,#0FH CLR ALOOP:MOV R0,A INC A INC R0 CJNE A,#0FH,LOOP SJMP $ MOV R0,#20H MOV A,#0FH MOV 30H,#00HLOOP:MOV R0,30H INC 30H INC R0 DEC A JNZ LOOP SJMP $ MOV R0,#20H MOV A,#0FH MOV 30H,#00HLOOP:MOV R0,30H INC 30H INC R0 SUBB A,#01H JNC LOOP SJMP $助记符格式助记符格式机器码机器码(B)相应操作相应
23、操作机器周期机器周期ACALL addr11a10a9a810001addr70PC PC+2SP SP+1,(SP)PC07SP SP+1,(SP)PC815PC010 addr112助记符格式助记符格式机器码机器码(B)相应操作相应操作机器周期机器周期LCALL addr1600010010addr158addr70PCPC+3SP SP+1,SPPC07SP SP+1,SPPC815PC addr162助记符格式助记符格式机器码机器码(B)相应操作相应操作机器周期机器周期RET00100010PC815 (SP), SP SP-1PC07 (SP), SP SP-1子程序返回指令子程序返
24、回指令2RETI00110010PC815 SP, SP SP-1PC07 SP, SP SP-1中断返回指令中断返回指令2助记符格式助记符格式机器码机器码(B)相应操作相应操作指令说明指令说明NOP00000000空操作空操作消耗消耗1个机器周期个机器周期单元地址单元地址2FH2FH2EH2EH2DH2DH2CH2CH2BH2BH2AH2AH29H29H28H28H27H27H26H26H25H25H24H24H23H23H22H22H21H21H20H20H7F7F77776F6F67675F5F57574F4F47473F3F37372F2F27271F1F17170F0F0707 MS
25、BMSB 位地址位地址 LSBLSB7E7E76766E6E66665E5E56564E4E46463E3E36362E2E26261E1E16160E0E06067D7D75756D6D65655D5D55554D4D45453D3D35352D2D25251D1D15150D0D05057C7C74746C6C64645C5C54544C4C44443C3C34342C2C24241C1C14140C0C04047B7B73736B6B63635B5B53534B4B43433B3B33332B2B23231B1B13130B0B03037A7A72726A6A62625A5A52524A
26、4A42423A3A32322A2A22221A1A12120A0A020279797171696961615959515149494141393931312929212119191111090901017878707068686060585850504848404038383030282820201818101008080000助记符格式助记符格式机器码机器码(B)相应操作相应操作指令说明指令说明机器周期机器周期MOV C,bit10100010CY bit位传送指令,结果影响位传送指令,结果影响CY标志标志2MOV bit,C10010010bit CY位传送指令,结果不影响位传送指令,结
27、果不影响PSW2助记符格式助记符格式机器码机器码(B)相应操作相应操作指令说明指令说明机器周期机器周期CLR C11000011CY 0位清位清0指令,结果影响指令,结果影响CY标志标志1CLR bit11000010 bitbit 0位清位清0指令,结果不影响指令,结果不影响PSW1SETB C11010011CY1位置位置1指令,结果影响指令,结果影响CY标志标志1SETB bitbit 1位置位置1指令,结果不影响指令,结果不影响PSW111010010 bit助记符格式助记符格式机器码机器码(B)相应操作相应操作指令说明指令说明机器周期机器周期ANL C,bit10000010 bit
28、CY CYbit位与指令位与指令2ANL C,/bit10110010 bit位与指令位与指令2ORL C,bit01110010 bitCY CYbit位或指令位或指令2ORL C,/bit10100010 bit位或指令位或指令2CPL C10110011位取反指令位取反指令2CPL bit10110010位取反指令,结果位取反指令,结果不影响不影响CY2CY CYbitCY CYbitCYCYbitbit助记符格式机器码(B)相应操作机器周期JB bit,rel00100000bit rel若bit=1,则PCPC+rel,否则顺序执行2JNB bit,rel00110000 bit r
29、el若bit=0,则PCPC+rel,否则顺序执行2JBC bit,rel00010000 bit rel若 bit=1,则PCPC+rel,bit0,否则顺序执行2助记符格式助记符格式机器码机器码(B)相应操作相应操作机器周期机器周期JC rel01000000若若CY=1,则则PCPC+rel,否则顺序执行否则顺序执行2JNC rel01010000若若CY1,则则PCPC+rel,否则顺序执行否则顺序执行2v执行如下三条指令后,30H单元的内容是 。vMOV R1,#30H vMOV 40H,#0EHvMOV R1,40H A40H B C30H DFFH0EHvMCS51单片机在执行M
30、OVX A,DPTR或MOVC A,A+DPTR指令时,其寻址单元的地址是由 。 AP0口送高8位,P1口送高8位 CP0口送低8位,P1口送低8位 DP0口送高8位,P2口送低8位v下列指令能能使累加器A低4位不变,高4位置F的是 。 AANL A,#0FH BANL A,#0F0OH DORL A,#0F0H v下列指令能能使累加器A的最高位置1的是 。vAANL A,#7FH BANL A,#80H BP0口送低8位,P2口送高8位CORL A,#0FHCSETB ACC.7 DORL A,#80Hv在MCS51指令中,下列指令中 是无条件转移指令。 ALCALL addr16 BDJN
31、Z direct,rel C DACALL addr11v可以控制程序转向64K程序存贮器地址空间的任何单元的无条件转移指令是 。 AAJMP addr11 B CSJMP rel DJC rel SJMP relLJMP addr16v程序计数器PC用来存放下一条指令的地址,CPU取指令后会自动修改PC的内容,除此以外,PC内容的改变是由下列指令中的 引起的。A执行压栈指令 D查表指令 B执行转移指令C执行调用指令E中断返回或子程序返回v在MCS51指令系统中,位逻辑运算指令是 。vAANL C,bit BANL C,/bit CCLR C DORL C,bit E ORL C,bit v对8031单片机下列指令要访问片外存储器的是 。vAMOV A,#01H vBMOV R0, #20H vCADD A, #0EHvDMOVX A,DPTR vEMOVC A, A+PC vMCS51寻址方式中,可直接寻址的寻址空间是 。片内RAM低128字节 专用寄存器SFR 片内RAM可位寻址的单元20H2FH程序存储器ROM 工作寄存器R0R7