第3章-MCS-51单片机指令系统-3.3.1数据传送类指令_第1页
第3章-MCS-51单片机指令系统-3.3.1数据传送类指令_第2页
第3章-MCS-51单片机指令系统-3.3.1数据传送类指令_第3页
第3章-MCS-51单片机指令系统-3.3.1数据传送类指令_第4页
第3章-MCS-51单片机指令系统-3.3.1数据传送类指令_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

常用的指令说明符号符号含义Rn表示当前选定寄存器组的工作寄存器R0~R7,n=0~7Ri表示作为间接寻址的地址指针R0~R1,i=0,1#data表示8位立即数,即00H~FFH#datal6表示16位立即数,即0000H~FFFFHaddrl616位地址,可表示用于64K范围内寻址,用于LCALL和LJMP指令中(216=64K)addrll11位地址,可表示2K范围内寻址,用于ACALL和AJMP指令中(211=2K)rel带符号的8位地址偏移量(-128~+127),用于SJMP和条件转移指令中bit位寻址区的直接寻址位,表示片内RAM中可寻址位和SFR中的可寻址位$当前指令所在地址DPTR数据指针@间接寻址寄存器或基址寄存器的前缀/加在位地址之前,表示该位先取反再参与运算,但不影响该位的值direct8位直接地址,可以是内部RAM区的某一单元或某一专用功能寄存器的地址(X)X地址单元中的内容,或X作为间接寻址寄存器时所指单元的内容((X))由X寻址的单元的内容←将箭头后面的内容传送到箭头前面去3.3MCS-51的指令集3.3MCS-51的指令集按功能,分5类3.3.1数据传送类指令3.3.2算术运算类指令3.3.3逻辑运算类指令3.3.4控制转移指令3.3.5位操作类指令MOV/PUSH/POP/XCH/XCHD/SWAP/

MOVX/MOVC3.3.1数据传送类指令按传送区域,分3组1.内部RAM数据传送

MOV、PUSH/POP、XCH/XCHD、SWAP2.访问外部RAM或I/O的数据传送

MOVX3.程序存储器(ROM)到累加器(A)的传送

MOVC所有的传送指令都不影响标志位CY、AC和OV涉及累加器A的指令将影响奇偶标志位P数据传送类指令一览表1.内部RAM数据传送(1)以累加器A为目的操作数的指令(2)以Rn为目的操作数的指令(3)以直接地址为目的操作数的指令(4)以寄存器间接地址为目的操作数的指令(5)16位数据传送指令(6)堆栈操作指令(7)字节交换指令MOVPUSH/POPXCH/XCHD/SWAPAcc累加器Direct直接寻址@Ri间接寻址Rn寄存器#data立即数(1)以累加器A为目的操作数的指令功能把源操作数的内容送入累加器A格式MOVA,Rn ;(A)←(Rn)MOVA,direct ;(A)←(direct)MOVA,@Ri ;(A)←((Ri))MOVA,#data ;(A)←#data[例]MOVA,#10H ;(A)←#10HAcc累加器Direct直接寻址@Ri间接寻址Rn寄存器#data立即数(2)以Rn为目的操作数的指令功能把源操作数的内容送入当前工作寄存器区的R0~R7中的某一个寄存器(由RS1、RS0

确定)格式MOVRn,A ;(Rn)←(A)MOVRn,direct ;(Rn)←(direct)MOVRn,#data ;(Rn)←#data注意MOVRn,@RiMOVRn,Rn×××[例1]MOVR0,A若RS1=0、RS0=0,则(A)→R0(内部RAM

H)若RS1=0、RS0=1,则(A)→R0(内部RAM

H)[例2]已知:(A)=60H,(R1)=10H,(R3)=45H,(45H)=37H指令为:

MOVR1,A ;(R1)←(A) MOVR2,45H ;(R2)←(30H) MOVR3,#33H ;(R3)←#85H执行后:

(R1)=50H、(R2)=37H、(R3)=35H0008;(R1)←(A);(R2)←(45H);(R3)←#33H60H37H33H(3)以直接地址为目的操作数的指令功能把源操作数送入由直接地址指出的存储单元格式MOVdirect,A ;(direct)←(A)MOVdirect,Rn ;(direct)←(Rn)MOVdirect,direct ;(direct)←(direct)MOVdirect,@Ri ;(direct)←((Rn))MOVdirect,#data ;(direct)←#data[例]若(R1)=51H,(51H)=68H

指令为:MOV22H,@R1 ;(40H)←(72H)

执行结果:(22H)=68H;(22H)←(51H)(4)以寄存器间接地址为目的操作数的指令功能把源操作数送入由R0或R1指出的存储单元格式MOV@Ri,A ;((Ri))←(A)MOV@Ri,direct ;((Ri))←(direct)MOV@Ri,#data ;((Ri))←#data[例]若(R1)=30H,(A)=20H,

指令为:MOV@R1,A

执行结果:(R1)=______H、(30H)=____H2030Acc累加器Direct直接寻址@Ri间接寻址Rn寄存器#data立即数×(5)16位数据传送指令功能把16位常数送入DPTR高位→DPH低位→DPL格式MOVDPTR,#data16 ;(DPTR)←#data16[例]MOVDPTR,#1342H ;执行后(DPTR)=1342H ;(DPH)=____、(DPL)=____13H42HAccDirect直接寻址@Ri间接寻址Rn寄存器#data立即数×练习已知,内部RAM中的30H单元的内容为50H,分析执行下面程序后,有关单元的内容。MOV60H,#30HMOVR0,#60HMOVA,@R0MOVR1,AMOV40H,@R1MOV60H,30H;(60H)=30H;(R0)=60H;(A)=((R0))=(60H)=30H;(R1)=(A)=30H;(40H)=((R1))=(30H)=50H;(60H)=(30H)=50H(6)堆栈操作指令功能、格式PUSH—进栈PUSHdirect

;(SP)←(SP)+1,(SP)←(direct)POP—

出栈POPdirect

;(direct)←(SP),(SP)←(SP)-1注意:堆栈是一个“先进后出”的区域在内部RAM中操作数只能使用直接寻址方式不能使用其他方式寄存器[例1]

正确指令 错误指令PUSH ACC PUSH APUSH 00H PUSH R0POP ACC POP APOP 00H POP R0累加器A的直接地址E0HPUSH ACC等价PUSH 0E0H√×

?PUSH/POP操作,可访问内RAM的低128B及SFR区[例2]进入中断服务子程序时的处理①现场保护若保护PSW、累加器A、数据指针DPTR设保护前:(PSW)=78H、(A)=56H、(DPTR)=1234H堆栈保护程序

PUSHPSWPUSHACCPUSHDPLPUSHDPH63H62H61H60H64HSP保护前SPPUSHPSW后SPPUSHACC后SPPUSHDPL后SPPUSHDPH后78H56H34H12HMCS-51提供一个向上升的堆栈;SP设置初值时要充分考虑堆栈的深度。XX②现场恢复堆栈恢复程序

POPDPH POPDPL POPACC POPPSW63H62H61H60H64HSPPOPPSW

后SPPOPACC

后SPPOPDPL

后SPPOPDPH

后SP恢复前78H56H34H12H设恢复前:

(PSW)=0AH (A)=0BH (DPTR)=09ABCH(PSW)=0AH,(A)=0BH,(DPTR)=09ABCH(PSW)=0AH,(A)=0BH,(DPTR)=012BCH(PSW)=0AH,(A)=0BH,(DPTR)=01234H(PSW)=0AH,(A)=56H,(DPTR)=01234H(PSW)=78H,(A)=56H,(DPTR)=01234HXX保护前:(PSW)=78H、(A)=56H、(DPTR)=1234H练习已知,(SP)=30H,(40H)=88H,(50H)=11H,指出下列程序的执行结果和功能。PUSH40HPUSH50HPOP40HPOP50H执行结果:功能:(40H)=11H,(50H)=88H,(SP)=30H40H和50H单元的内容互换。;(SP)(SP)+1=31H,((SP))(40H),(31H)=88H;(SP)(SP)+1=32H,((SP))(50H),(32H)=11H;(50H)((SP)),(SP)(SP)-1=30H,(50H)=88H;(40H)((SP)),(SP)(SP)-1=31H,(40H)=11H(7)字节交换指令功能、格式XCHA,Rn ;(A)←→RnXCHA,direct ;(A)←→(direct)XCHA,@Ri ;(A)←→((Ri))XCHDA,@Ri ;(A3~0)←→((Ri)3~0)

SWAPA ;(A3~0)←→(A7~4)

整字节交换半字节交换例已知,(30H)=88H,(40H)=11H,(R0)=30H,(R1)=40H,指出下列程序段的执行结果和功能。MOVA,30HXCHA,40HMOV30H,A;(A)(30H),(A)=88H;(A)(40H),(A)=11H,(40H)=88H执行结果:(30H)=11H,(40H)=88H,功能:30H和40H单元内容互换MOVA,@R0XCHA,@R1MOV@R0,A执行结果:(30H)=11H,(40H)=88H,功能:30H和40H单元内容互换;(A)((R0))=(30H)=88H;(30H)(A),(30H)=11H;(A)((R1))=(40H),(A)=11H,(40H)=88H;((R0))(A)=11H,(30H)=11H[例1]若(ACC)=71H,(R0)=23H,(23H)=76H指令:

XCHDA,@R0;(A3~0)←→((Ri)3~0)结果:(A)=____H

(R0)=____H

(23H)=____H[例2]若(A)=092H指令:SWAPA结果:(A)=____H76237129小结:片内(核内)数据传送指令特殊2.访问外部RAM或I/O的数据传送功能CPU与外部RAM或I/O接口间传送数据必须:寄存器间接寻址,并通过累加器A传送格式MOVX

A,@DPTR ;(A)←((DPTR))MOVX

A,@Ri ;(A)←((Ri))MOVX@DPTR,A ;((DPTR))←(A)MOVX@Ri,A ;((Ri))←(A)输入输出注意:一个8位的字节传送,通过ADPTR间址(16位地址)高8位地址→DPH→P2低8位地址→DPL→P0R0、R1间址高8位地址→P2低8位地址→R0或R1→P0读/写信号片外RAM或I/O→A:P3.7读信号:/RDA→片外RAM或I/O:P3.6写信号:/WRP0由ALE信号锁存在地址锁存器读写[例1]若(DPTR)=3000H,(3000H)=30H MOVXA,@DPTR ;(A)←((DPTR))结果:

(A)=30H[例2]若(P2)=20H,(R1)=48H,(A)=66H MOVX@R1,A ;((R1))←(A)结果:

(2048H)=66H[例3]

试编程,将累加器A中的内容送入片外RAM的0060H单元。MOV P2,#00 ;高8位地址送P2MOV R1,#60H ;低8位地址送R1(访问外RAM的16位地址)MOVX @R1,A;A中内容送外部RAM(1)Ri作间接寻址寄存器(2)DPTR作间接寻址寄存器MOV DPTR,#0060H ;访问外RAM的16位地址→DPTRMOVX @DPTR,A;A中内容送外部RAM[例4]

试编程,将片外RAM的2000H单元内容送入片外RAM的0200H单元中。解MOV DPTR,#2000H ;源地址送DPTRMOVX A,@DPTR ;从外部RAM取数送AMOV DPTR,#0200H ;目的地址送DPTRMOVX @DPTR,A ;A中内容送外部RAM表基地址寄存器功能查表指令查找ROM中的常数表格,只能读,不能写格式(单字节指令)MOVCA,@A+PC ;(PC)←(PC)+1 ;(A)←((A)+(PC))寻址范围:MOVCA,@A+DPTR;(PC)←(PC)+1 ;(A)←((A)+(DPTR))寻址范围:

3.程序存储器(ROM)到累加器(A)的传送?整个ROM的64KB空间查表指令后的256B空间[例1]若(PC)=1001H,(A)=40H,(1042H)=56HMOVC A,@A+PC结果:(A)=_____H,(PC)=______H[例2]若(DPTR)=3201H,(A)=47H,(3248H)=0FEHMOVC A,@A+DPTR

结果:(A)=______H,(DPTR)=_______H5610020FE3201[例3]已知:累加器A中有一个0~9范围内的数,使用查表指令编程查找出该数的平方值,设:查8

的平方值。01491625364964812000H2001H2002H2003H2004H2005H2006H2007H2008H2009H用DPTR作为基址寄存器MOVDPTR,#_______HMOVA,#_____HMOVCA,@A+DPTRROM

中0~9的平方表200008用PC作为基址寄存器 地址 机器码源代码注释-------------|-------------|---------------------|-----------------------1FFBH|24HDATA|ADDA,#data |;(A)←(A)+#data1FFDH|83H |MOVCA,@A+PC |;(PC)←(PC)+1| | |;(A)←((A)+(PC))1FF

温馨提示

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

评论

0/150

提交评论