版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二部分微机原理主讲教师:喻红第3章MCS-51的
指令系统2主要内容MCS-51单片机的寻址方式
MCS-51单片机的指令系统33.1指令及其表示方法指明执行什么性质和类型的操作明确参加操作的数据或数据所在的地址指定操作结果存放的地址指定下一条指令的地址指令是完成一种特定操作的命令。具有以下功能:4格式:指令由操作码和操作数两部分组成。MCS-51指令格式有三种:单字节指令:操作码双字节指令:操作码
操作数三字节指令:操作码
第一操作数,第二操作数指令表示方法:机器码和助记符表示法。53.2
MCS-51单片机的寻址方式寻址:对操作数的来源进行寻址;对操作数的目的进行寻址;对下条指令地址进行寻址。寻址的中心任务是如何在寻址范围内灵活方便地找到所需的操作数或操作数的地址。自然,寻址方式越多,计算机的功能越强,灵活性越大。6MCS-51单片机有七种寻址方式。寄存器寻址方式直接寻址方式寄存器间接寻址方式立即寻址方式基址加变址的间接寻址方式相对寻址方式位寻址方式73.2.1寻址空间和符号注释一、寻址空间存储器的存储单元地址和位地址。程序存储器:片内外统一编址,64K片内数据存储器:工作寄存器、特殊功能寄存器片外数据存储器:64K具有地址的位8Rn:当前工作寄存器R0~R7Ri:可作为地址指针的寄存器R0或R1#data:8位二进制立即数(#xxB,#xxH,#xx)
#data16:16位二进制立即数
direct:8位片内RAM的直接地址
rel:相对地址偏移量,一字节带符号数二、符号注释9addr11:11位二进制数的目的地址addr16:16位二进制数的目的地址Bit:可进行位寻址的位地址(x):直接寻址方式中,表示直接地址x单元中 的内容; 间接寻址方式中,表示由间接寄存器x所 指地址单元中的内容:数据传送方向@:寄存器间接寻址符号103.2.2寻址方式——立即寻址例如:MOVDPTR,#3456H;DPH←34H,DPL←56H
MOV
A,#45H
;A←45H(1)立即寻址:指令中操作数就是直接参与操作的数,因此又称“立即数”。立即寻址主要用来对寄存器赋值。立即数只能作为源操作数。11(2)直接寻址:指令中操作数的值是存放参与操作的数的字节地址。这种寻址方式使用的变量是direct,可访问的存储空间有:(只能对片内RAM)
特殊功能寄存器(只能用直接寻址方式)内部数据存储器的低128字节3.2.2寻址方式——直接寻址12例如:指令 MOV A,45H
指令代码:E545131.内部RAM的低128字节;
例如:MOVA,78H;A←(78H)
MOV
30H,40H;(30H)←(40H)2.特殊功能寄存器;
例如:
MOV
DPH,A;DPH←A:E583 MOV
83H,A;83H←A:E583可使用SFR的名字或地址14(3)寄存器寻址:操作数存放在某一寄存器中,指令中指出相应的寄存器名。这种寻址方式可以对R0~R7、A、B、C(位)、DPTR进行操作。寄存器寻址主要是对工作寄存器R0-R7进行操作,用指令操作码的低3位指明所使用的寄存器。
MOVA,R0;E8(11101000)
MOVA,R1;E9(11101001)
MOVA,R7;EF
(11101111)
3.2.2寻址方式——寄存器寻址15例如:指令 MOV A,R3
指令代码:EB(11101011)16(4)寄存器间接寻址:寄存器中的内容不是操作数本身,而是操作数的地址。即操作数的地址是以寄存器中的内容间接给出的。
可用于寄存器间接寻址的寄存器:工作寄存器R0和R1、堆栈指针SP、数据指针DPTR寻址空间:R0和R1寻址片内低128个字节或片外低256个字节;堆栈指针SP寻址堆栈;数据指针DPTR寻址片外64K数据存储器3.2.2寻址方式——寄存器间接寻址17例如:指令 MOV A,@R0
机器代码:1110011018适用的存储空间:
1.内部RAM,使用的变量为@R0、@R1、@SP;例如:MOV
@R0,76H;
(R0)←(76H)
PUSH
PSW;
SP←SP+1,(SP)←PSW192.内部RAM的低半字节,使用的变量是
@R0、@R1;
例如:
XCHD
A,@R1;20XCH字节交换:A与内部RAM单元或SFR交换。例如XCHA,R2;(A)
(R2)XCHD半字节交换:A与内部RAM单元进行低四位交换,只能用寄存器间址@Ri。例如XCHDA,@R1;(A)D0-D3
((R1))D0-D3SWAPA;(A)D0-D3
(A)D4-D7
213.外部RAM(或I/O口),使用的变量是@R0、@R1、@DPTR;例如:
MOVX@R0,A
;(R0)←A
MOVXA,@DPTR
;A←(DPTR)223.2.2寻址方式——变址寻址这种寻址方式仅适用于程序存储器空间(5)变址寻址:以程序计数器PC或数据指针DPTR作为基址寄存器,累加器A作为变址寄存器,操作的数的有效地址为:有效地址=(基址寄存器)+A23例如:指令 MOVC A,@A+DPTR
机器代码:93设累加器A=47H,DPTR=2000H,(2047H)=5CH,指令执行后,A=5CH243.2.2寻址方式——相对寻址(6)相对寻址:寻找下一条要执行的指令的地址,仅用于相对转移指令中。相对寻址的有效地址为: D=PC+rel式中:有效地址D称为目的地址
PC为当前执行的程序指令地址,称为源地址
rel是相对地址,它是目的地址与源地址的差值偏移量:用机器码表示的相对地址25例如:指令 JC 18H
机器代码:4016263.2.2寻址方式——位寻址(7)位寻址:操作对象是位,指令中直接给出位地址。这种寻址方式也可以归并于直接寻址方式,但它提供的是直接的位地址。
例如:指令 SETB 3AH
机器代码:D23A位地址3AH是片内RAM中27H单元的第2位,指令执行后,3AH这一位被置为1。若(27H)=00000000B,则指令执行后(27H)=00000100B27MCS-51指令系统的七种寻址方式283.3
MCS-51单片机的指令系统111条指令按功能分为五大类:数据传送类指令28条算术运算类指令24条逻辑运算类指令25条控制转移类指令17条位操作类指令17条29
111条指令中单字节49条单周期64条双字节45条双周期45条三字节17条四周期2条303.3.1数据传送类指令功能:实现数据存储器之间的数据传送 操作对象:工作寄存器组、片内RAM、片外RAM、I/O口寄存器片内RAM立即数累加器片外数据存储器程序存储器31(1)片内RAM之间MOVdirect1,direct2
;(direct1)←(direct2)MOV@Ri,direct
;(Ri)←(direct)MOVdirect,@Ri
;(direct)←(Ri)
例:20H:0FFH;R0:40H。
MOV30H,40H;(30H)←(40H)MOV@R0,20H;(R0)←(20H)=(40H)←(20H)MOV30H,@R0;(30H)←(R0)=(30H)←(40H)一、片内RAM数据传送32PUSHdirect;SP←SP+1,(SP)←(direct)
POPdirect;(direct)←(SP),SP←SP-1
堆栈操作指令属于寄存器间接寻址方式,所用的指针是SP。例:SP=30H,(50H)=80HPUSH 50H;SP←SP+1,(31H)←(50H)POP 40H;(40H)←(31H),SP←SP-133(2)片内RAM与寄存器
MOVdirect,Rn
;(direct)←Rn
MOVRn,direct
;Rn←(direct)例:R1←R0
MOV4EH,R0;(4EH)←R0
MOVR1,4EH;R1←(4EH)34(3)片内RAM与A
MOVA,direct
;A←(direct)
MOVA,@Ri
;A←(Ri)
MOVdirect,
A
;(direct)←A
MOV@Ri
,A;(Ri)←A35(4)立即数送片内RAM
MOV@Ri,#data;((Ri))←data
MOVdirect,#data;(direct)←data例:R1:30H
MOV@R1,#0FFH;(R1)←0FFH(11111111B)
MOV30H,#255;(30H)←25536(1)寄存器之间同片内RAM与寄存器方式二、寄存器数据传送MOVdirect,Rn
;(direct)←RnMOVRn,direct
;Rn←(direct)37(2)寄存器与A
MOVA,Rn
;A←Rn
MOVRn,A
;Rn←A38(3)立即数送寄存器
MOVRn,#data
;Rn←data
MOVA,#data;A←data
MOVDPTR,#data16;DPTR←data16
例:MOVDPTR,#2000H数据指针DPTR由DPL和DPH组成,该指令将立即数高8位20H传送到DPH,将立即数低8位00H传送到DPL39目的操作数为A:
MOVA,Rn
;A←Rn
MOVA,direct;A←(direct)
MOVA,@Ri
;A←(Ri)
MOVA,#data;A←data40目的操作数为寄存器Rn:
MOVRn,A;Rn←A
MOVRn,direct;Rn
←(direct)
MOVRn,#data
;Rn
←data41目的操作数为直接地址:
MOVdirect,A;(direct)←A
MOVdirect,Rn
;(direct)←Rn
MOVdirect,direct;
(direct)←(direct)
MOVdirect,@Ri
;(direct)←(Ri)
MOVdirect,#data;(direct)←data42目的操作数为间接地址:
MOV@Ri,A;(Ri)←A
MOV@Ri,direct;(Ri)
←(direct)
MOV@Ri,#data
;(Ri)
←data43只能用寄存器间接寻址方式;只能与A之间进行数据传送;地址指针可以是@R0、@R1,@DPTR
MOVXA,@Ri;A←(Ri)
MOVX@Ri,A;(Ri)←A
MOVXA,@Ri;A←(Ri)
MOVX@Ri,A;(Ri)←A
MOVXA,@DPTR;A←(DPTR)
MOVX@DPTR,A;(DPTR)←A
三、片外数据存储器数据传送共有6条指令片外256字节范围片外64K字节范围44例1:把片内RAM40H单元中的内容送到片外RAM2000H单元中:
MOVA,40H ;A←(40H) MOVDPTR,#2000H ;DPTR←2000H MOVX@DPTR,A ;(2000H)←A例2:把2100H单元中的内容传送到2120H单元中: MOV DPTR,#2100H MOVX A,@DPTR MOV DPTR,#2120H MOVX @DPTR,A45从程序存储器中取数据应用于查取预置的数据表格,有两条查表指令:
MOVCA,@A+PC
;PC←PC+1,A←(A+PC)所查的表格在以当前程序指针PC为基址寄存器的256个字节的程序存储器范围内。
MOVCA,@A+DPTR
;A←(A+DPTR)所查的表格在以DPTR为基址寄存器的64K程序存储器范围内。四、程序存储器数据传送46例:程序存储器中的数据表格 2000H:01H 2001H:23H 2002H:45H 2003H:67H执行程序:
1000H: MOV A,#03H 1002H: MOV DPTR,#2000H 1005H: MOVCA,@A+DPTR
47MCS-51I/O口:可视为片内存储器单元外部扩充I/O口:可视为片外数据存储器例:
MOVA,P1;A←P1
MOVP2,P1;P2←P1五、并行I/O数据传送48(1)XCH
:源操作数与A的字节交换
XCHA,Rn
;ARn
XCHA,direct
;A(direct)
XCHA,@Ri
;A(Ri)
六、交换指令49(2)XCHD:源操作数与A的低半字节交换
XCHDA,@Ri
;
(3)SWAPA:累加器A的高4位与低4位内容互换指令SWAPA ;A.3~A.0←→A.7~A.4
A503.3.2算术运算类指令1.加法指令
2.减法指令
3.乘法指令
4.除法指令511.加法指令:ADD一、加法指令522.带进位加法指令: ADDC533.加1指令:INC
544.十进制数加法调整DAA:当要进行十进制数加法运算时,该指令用在加法指令(ADD、ADDC)之后,会对相加结果进行调整,确保结果也是BCD码。551.带借位的减法指令:SUBB
进行减法运算前必须对Cy清0。二、减法指令562.减1指令:DEC57MULABA、B中为两个单字节无符号数,乘积为双字节数,高字节在B中,低字节在A中。当乘积大于255(OFFH)时,OV=1;任何情况下,Cy总是“0”。三、乘法指令58DIVAB
两个单字节无符号数除法,被除数送A,除数送B,执行后商在A中,余数在B中。若除数为0,则指令执行后A、B的内容不定,且OV=1,任何情况下,Cy总是清“0”。四、除法指令593.3.3逻辑运算类指令一、逻辑与指令 ANL二、逻辑或指令 ORL三、逻辑异或指令 XRL四、累加器A清零指令 CLR A五、累加器A取反指令 CPL A六、累加器A循环移位指令 RL A RR A RLC A RRC A60ANLA,Rn
; A←A∧Rndirect; A←A∧(direct)@Ri; A←A∧
(Ri)#data; A←A∧dataANLdirect,direct;direct
←
(direct
)∧(direct
)#data;direct
←
(direct
)∧data逻辑与指令常用于屏蔽某些位一、逻辑与指令61ORLA,Rn
; A←A∨Rndirect; A←A∨
(direct
)@Ri; A←A∨
(Ri)#data; A←A∨
data逻辑或指令常用于某些位的置位ORLdirect,direct;direct
←
(direct
)∨(direct
)#data;direct
←
(direct
)∨
data二、逻辑或指令62逻辑异或指令常用于某些位的取反三、逻辑异或指令XRLA
,Rn
; A←A∨Rndirect; A←A∨(direct
)@Ri; A←A∨
(Ri)#data; A←A∨
dataXRLdirect
,direct;direct
←
(direct
)∨(direct
)#data;direct
←
(direct
)∨
data63以上指令可直接对接口进行操作:
ANLP1,#01111100B
ORLP1,#00110010B
XRLP1,#31H64累加器A清零
CLRA
;A←0
累加器A取反
CPLA
;A←A
四、对A的逻辑运算指令65RLA;
RLCA;
RRA;
RRCA
;
AACACA累加器A循环移位663.3.4程序控制类指令作用:通过改变程序计数器PC,改变程序执行的方向,或调用子程序,或从子程序返回一、转移类指令二、调用子程序及返回指令 三、空操作指令 NOP
67(1)短转移指令SJMP(ShortJump)SJMPrel
;(PC)←(PC)+rel
;
-126<rel<
+129
例:
0100H
80rel
SJMPAAA
0102H
00
NOP
…
0123H
00
AAA:NOP跳转起始位置:(PC)+2跳转范围:起始位置的-128~+127之间无条件转移类指令68(2)绝对跳转指令AJMP(AbsoluteJump)AJMPaddr11
;(PC)←(PC)+2,PC=PC15~11a10a9a8a7a6a5a4a3a2a1a0跳转起始位置:(PC)+2跳转范围:2K(3)长跳转LJMP(LongJump)LJMPaddr16
;(PC)←addr15~0
跳转范围:64K无条件转移类指令69(4)间接转移指令JMP(JumptoAddress)JMP@A+DPTR
;(PC)←(A)+(DPTR)(A)是无符号数,指令执行后,不影响累加器和DPTR中的内容,也不影响任何标志。
本指令根据A中的内容可实现多个分支,故亦称散转指令。
无条件转移类指令70例:在某键盘处理程序中,假定命令键的读数(0AH、0BH、0CH、0DH中之一)在A中,利用散转指令便可根据A中的内容实现正确的转向。KEYB:MOVDPTR,#JMPTBL
CLRC
SUBBA,#0AH
RLA
JMP@A+DPTR
JMPTBL:AJMPAAA;
AJMPBBB
AJMPCCC
AJMPDDD无条件转移类指令71
AJMPAJMPPC+22K
LJMPLJMPPC64K
SJMPSJMPPC+2-128+127
JMPJMP@A+DPTRPCPC+2DPTR256无条件转移类指令72(5)子程序调用与返回(ACALL、LCALL、RET)1.ACALLaddr11
;(PC)←(PC)+2,
(SP)←(SP)+1,((SP))←(PC7~0)
(SP)←(SP)+1,((SP))←(PC15~8)
PC=PC15~11a10a9…a0
2.LCALLaddr16
;(PC)←(PC)+3
(SP)←(SP)+1,((SP))←(PC7~0)
(SP)←(SP)+1,((SP))←(PC15~8)(PC)←addr16
无条件转移类指令733.RET;
;(PC15~8)←((SP)),(SP)←(SP)-1
;(PC7~0)←((SP)),(SP)←(SP)-14.RETI;(PC15~8)←((SP)),(SP)←(SP)-1
;(PC7~0)←((SP)),(SP)←(SP)-1;清除中断状态寄存器中相应中断标志位
无条件转移类指令74
条件转移指令是指当满足某种条件时程序才转移,而条件不满足时程序继续执行下一条指令。条件主要指PSW中的标志。8051单片机指令对标志的影响如下表条件转移类指令75指令标志指令标志COVACCOVACADD×××CLRC0ADDC×××CPLC×SUBB×××ANLC,bit×MUL0×ANLC,/bit×DIV0×ORLC,bit×DA×ORLC,/bit×RRC×MOVC,bit×RLC×CJNE×SETBC176一、根据进位标志:
(1)JCrel
;当C=1时转移,(PC)←(PC)+2,(PC)←(PC)+rel(2)JNCrel;当C=0时转移,(PC)←(PC)+2,(PC)←(PC)+rel二、根据零标志:(1)JZrel
;当(A)=0时转移,(PC)←(PC)+2,(PC)←(PC)+rel(2)JNZrel
;当(A)≠0时转移,(PC)←(PC)+2,(PC)←(PC)+rel条件转移类指令77三、比较不相等,则转移:CJNEA,#data,rel;CJNEA,direct,rel;
CJNE@Ri,#data,rel;CJNERn,#data,rel;3字节指令,当第一操作数=第二操作数时不转,(PC)←(PC)+3,否则转移,(PC)←(PC)+3+rel,本指令还影响Cy,当第一操作数≥第二操作数时,Cy=0,因此可实现程序的三分支。条件转移类指令78
A=B吗?
出口YNA>B吗?
入口YN12379例:
CJNEA,30H,NEQ;(A)≠(30H),转NEQEQ:;(A)=(30H)NEQ:JCLITTER;(A)<(30H),转LITTERLITTER:┋┋┋条件转移类指令80四、减1不为0则转移:
DJNZRn,rel
;(PC)←(PC)+2,(Rn)←(Rn)-1
当(Rn)=0时,不转移,
当(Rn)≠0时转移,(PC)←(PC)+relDJNZdirect,rel(PC)←(PC)+3,(direct)←(direct)-1
当(direct)=0时,不转移,
当(direct)≠0时转移,(PC)←(PC)+rel条件转移类指令81(2)根据对某一位测试确定是否转移JBbit,rel
;(bit)=1转移;即(PC)←(PC)+3,(PC)←(PC)+relJNBbit,rel
;(bit)=0转移
JBCbit,rel
;(bit)=1转移,且(bit)←0条件转移类指令82寻址空间:1.片内RAM的20H~2FH共16个字节单元的每一位,位地址为00H~7FH
2.SFR中字节地址可以被8整除的专用寄存器中的位,位地址从80H~F7H,其中有少数位未被定义。3.3.5位操作类指令MCS-51单片机中有一个位处理器,以进位位Cy作为位累加器,可完成以下操作:1.位数据传送2.位状态控制3.位逻辑操作4.位条件转移指令83位地址的表达方式:
1.直接用位地址表示;20H 2.用点操作符号表示;(20H).1,PSW.4 3.寄存器的位定义名称;RS1,OV 4.用户定义;L1BITPSW.484位数据传送必须经过位累加器Cy,而不能在可寻址位之间传送。
MOVC,bit
;(Cy)←(bit)
MOVbit,C
;(bit)←(Cy)一、位数据传送指令85位状态控制有置1和清零两种,每种有两条指令,如下:
SETBC
;(Cy)←1
SETBbit
;(bit)←1
CLRC
;(Cy)←0
CLRbit
;(bit)←0二、位状态控制指令86
位逻辑操作有与、或、取反三种。与、或操作时,以位累加器Cy作为第一操作数,第二操作数为位地址,操作结果在Cy中。取反可以对每个位地址内容直接进行。ANLC,bit
;(Cy)←(Cy)∧(bit)
ANLC,/bit
;(Cy)←(Cy)∧(/bit)
ORLC,bit
;(Cy)←(Cy)∨(bit)
ORLC,/bit
;(Cy)←(Cy)∨(/bit)
CPLC
;(Cy)←(/Cy)
CPLbit
;(bit)←(/bit)三、位逻辑操作指令87指令练习1.20H:50H;MOVA,#10; A:10,(0AH)MOVR0,#20H; R0:20HMOV30H,@R0; 30H:50HADDA,30H; A:5AH;30H:50HMOVDPTR,#2000H; DPTR:2000HMOVX@DPTR,A; 2000H:5AH 882.MCS-51单片机是通过哪些方法将程序存储器和数据存
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 托管安责任制度
- 扬尘办公室责任制度
- 技术管理岗位责任制度
- 护士十项护理责任制度
- 押运员岗位责任制度
- 按份责任制度
- 操作工岗位安全责任制度
- 放射科责任制度
- 政法委保密工作责任制度
- 教师工作岗位责任制度
- 2026年露天矿山复工复产试卷
- 2026广东广州市中级人民法院招募就业见习人员25人考试参考题库及答案解析
- 2026河北邢台市数字化城市管理服务中心公开招聘编外工作人员20名笔试备考试题及答案解析
- 2026年扎兰屯职业学院单招职业技能考试题库含答案解析
- 2026年江西旅游商贸职业学院单招职业适应性测试题库含答案解析
- 2026吉林农业大学三江实验室办公室招聘工作人员考试参考题库及答案解析
- 2023年12月英语四级真题及答案-第3套
- 2026年内蒙古商贸职业学院单招职业技能测试题库带答案详解(考试直接用)
- 水利工程运行维护与故障处理指南
- 高职高专学生心理健康教育 第四版 课件 第第五讲 相伴适应路
- 心血管疾病健康知识科普
评论
0/150
提交评论