《51单片机指令系统-数据传送类指令.ppt》由会员分享,可在线阅读,更多相关《51单片机指令系统-数据传送类指令.ppt(26页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、51单片机指令系统-数据传送类指令1.1.访问片内数据存储器的一般数据传送指令访问片内数据存储器的一般数据传送指令 该类指令的功能是实现数在片内RAM单元之间、寄存器之间、寄存器与RAM单元之间的传送。所有指令具有统一的格式,其格式如下:MOV,;目的操作数单元源操作数(或单元)操作码助记符都是MOV,目的操作数和源操作数不同寻址方式的组合就派生出该类的全部指令。因此,记忆这类指令的关键在于掌握两个操作数的各种寻址方式的组合关系。2)以以Rn 为目的操作数的指令为目的操作数的指令 例:若(例:若(60H)=30H 执行执行 MOV R6,60H MOV Rn,Adirect#data结果结果:
2、(R6)=30H。3)以以direct 为目的操作数的指令为目的操作数的指令例:若(例:若(R0)=30H,(30H)=25H 执行执行MOV 40H,R0 指令指令结果:(结果:(40H)=25H。MOV direct,Rndirect1Ri#dataA4)以以Ri为目的操作数的指令为目的操作数的指令例例 若(若(R1)=56H,(,(A)=35H 执行执行 MOV R1,A 指令指令 结果结果:(:(56H)=35HMOV Ri,Adirect#data访问片内RAM的一般传送指令操作关系图累加器ADirect 直接地址Rn寄存器Data立即数Ri间址例例 设内部设内部RAM(30H)=4
3、0HRAM(30H)=40H,(40H)=10H(40H)=10H,(10H)=00H(P1)=0CAH(10H)=00H(P1)=0CAH,分析以下程序执行后各单元,分析以下程序执行后各单元及寄存器、及寄存器、P2P2口的内容。口的内容。MOV R0MOV R0,#30H#30HMOV AMOV A,R0R0MOV R1MOV R1,A AMOV BMOV B,R1R1MOV R1MOV R1,P1P1MOV P2MOV P2,P1P1MOV 10HMOV 10H,#20H#20H;R0=30HR0=30H;A=40HA=40H;R1=40HR1=40H;B=10HB=10H;(40H)=0
4、CAH(40H)=0CAH;(P2)=0CAH(P2)=0CAH;(10H)20H(10H)20H执行上述指令后的结果为:执行上述指令后的结果为:(R0)=30H(R0)=30H,(R1)=(A)=40H(R1)=(A)=40H,(B)=10H(B)=10H,(40H)=(P1)=(P2)=CAH(40H)=(P1)=(P2)=CAH,(10H)=20H(10H)=20H。2.特殊传送指令特殊传送指令 访问程序存储器的数据传送指令又称作查表指令,采用基址寄存器加变址寄存器间接寻址方式,把程序存储器中存放的表格数据读出,传送到累加器A。共有如下两条单字节指令,指令操作码助记符为MOVC。(1)R
5、OM查表指令查表指令 2)MOVC A,A+PC 以以PC的当前值的当前值与与偏移量之和偏移量之和作为程序存储作为程序存储 器地址,将该地址单元的内容传送到器地址,将该地址单元的内容传送到A。指令执行后指令执行后PC的内容不变。的内容不变。2.特殊传送指令特殊传送指令 1)MOVC A,A+DPTR 以以DPTR与与偏移量之和偏移量之和作为程序存储器地作为程序存储器地 址,将该地址单元的内容传送到址,将该地址单元的内容传送到A。指令。指令 执行后执行后DPTR的内容不变。的内容不变。前一条指令采用DPTR作基址寄存器,因此可以很方便地把一个16位地址送到DPTR,实现在整个64 KB程序存储器
6、单元到累加器A的数据传送。即数据表格可以存放在程序存储器64 KB地址范围的任何地方。后一条指令以PC作为基址寄存器,CPU取完该指令操作码时PC会自动加1,指向下一条指令的第一个字节地址,即此时是用(PC)+1作为基址的。另外,由于累加器A中的内容为8位无符号数,这就使得本指令查表范围只能在256个字节范围内(即(PC)+1H(PC)+100H),使表格地址空间分配受到限制。同时编程时还需要进行偏移量的计算,即MOVC A,A+PC指令所在地址与表格存放首地址间的距离字节数的计算,并需要一条加法指令进行地址调整。偏移量计算公式为:偏移量偏移量=表首地址表首地址-(MOVC-(MOVC指令所在
7、地址指令所在地址+1)+1)例例 从片外程序存储器从片外程序存储器2000H2000H单元单元开始存放开始存放0909的平方值,以的平方值,以DPTRDPTR作作为基址寄存器进行查表得为基址寄存器进行查表得3 3的平方的平方值。值。如果用以DPTR为基址寄存器的查表指令,其程序如下:MOV DPTR,#2000H;置表首地址MOV A,#03HMOVC A,A+DPTR01491625364964812000H2001H2009H1FFDH1FFFH1FFEH设MOVC指令所在地址(PC)=1FFDH,则偏移量=2000H-(1FFDH+1)=02H。相应的程序如下:MOV A,#03H ;(
8、A)03HADD A,#02H ;用加法指令 进行地址调整MOVC A,A+PC ;(A)(A+PC+1)执行结果为:(PC)=1FFEH,(A)=09。01491625364964812000H2001H2009H1FFDH1FFFH83H1FFEH(2)读、写片外读、写片外RAM 指令指令 MCS-51单片机CPU对片外扩展的数据存储器RAM或I/O口进行数据传送,必须采用寄存器间接寻址的方法,通过累加器A来完成。这类指令共有以下条单字节指令,指令操作码助记符都为MOVX。(2)读、写片外读、写片外RAM 指令指令 1)读片外读片外RAM MOVX A,DPTR MOVX A,Ri 2)写
9、片外写片外RAM MOVX DPTR,A MOVX Ri,A例例 设外部设外部RAM(0203H)=0FFHRAM(0203H)=0FFH,分析以下指令执,分析以下指令执行后的结果。行后的结果。MOV DPTRMOV DPTR,#0203H#0203HMOVX AMOVX A,DPTR DPTR MOV 30HMOV 30H,A A MOV AMOV A,#0FH#0FHMOVX DPTRMOVX DPTR,A A执行结果为:执行结果为:(DPTR)=0203H(DPTR)=0203H,(30H)=FFH(30H)=FFH,(0203H)=(A)=0FH(0203H)=(A)=0FH。(3)堆
10、栈操作指令堆栈操作指令 堆栈操作有进栈和出栈,即压入和弹出数据,常堆栈操作有进栈和出栈,即压入和弹出数据,常用于保存或恢复现场。进栈指令用于保存片内用于保存或恢复现场。进栈指令用于保存片内RAMRAM单元单元(低低128128字节字节)或特殊功能寄存器或特殊功能寄存器SFRSFR的内容;的内容;出栈指令用于恢复片内出栈指令用于恢复片内RAMRAM单元单元(低低128128字节字节)或特或特殊功能寄存器殊功能寄存器SFRSFR的内容。的内容。(3)堆栈操作指令堆栈操作指令 3)操作指令操作指令 PUSH direct POP direct 1)原则:原则:向地址高端生长,后进先出向地址高端生长,
11、后进先出 2)SP :指向栈顶指向栈顶(活动端活动端),复位值,复位值07H例例 若(若(SP)=07H,(,(40H)=88H 执行执行 PUSH 40H 指令指令结果结果:(:(SP)=08H,(,(08H)=88H。(4)数据交换指令数据交换指令 数据传送指令一般都是将操作数自源地址单元传送到目的地址单元,指令执行后,源地址单元的操作数不变,目的地址单元的操作数则修改为源地址单元的操作数。交换指交换指令数据作双向传送,涉及传送的双方互为源地址、目的地令数据作双向传送,涉及传送的双方互为源地址、目的地址,指令执行后每方的操作数都修改为另一方的操作数。址,指令执行后每方的操作数都修改为另一方
12、的操作数。数据交换指令共有如下5条指令:(4)数据交换指令数据交换指令例例 若(若(R0)=67H,(,(A)=45H。执行执行 XCH A,R0 指令指令 交换类指令,交换类指令,传送是传送是双向双向的的 1)字节交换指令字节交换指令XCH A,RndirectRi结果结果:(:(A)=67H,(,(R0)=45H。2)半字节交换指令半字节交换指令 例:若(例:若(R0)30H,(,(30H)67H,(A)20H。执行执行 XCHD A,R0 后,后,(A)27H,(,(30H)60H。XCHD A,Ri SWAP A例例 若(若(A)30H,执行,执行SWAP A 后,后,(A)03H。作
13、业作业1 1变址寻址和相对寻址中的地址偏移量有何异同?变址寻址和相对寻址中的地址偏移量有何异同?2.2.写出能完成下列数据传送的指令写出能完成下列数据传送的指令R1R1的内容传送到的内容传送到R0R0内部内部RAM 20HRAM 20H单元中的内容送到单元中的内容送到30H30H单元单元外部外部RAM 2000HRAM 2000H单元中的内容送到内部单元中的内容送到内部RAM20HRAM20H单元单元外部外部ROM 2000HROM 2000H单元中的内容送到内部单元中的内容送到内部RAM20HRAM20H单元单元外部外部ROM 2000HROM 2000H单元中的内容送到外部单元中的内容送到外部RAM3000HRAM3000H单单元元已知(已知(20H20H)=X,(21H)=Y,(22H)=Z=X,(21H)=Y,(22H)=Z请用图示说明下列请用图示说明下列程序执行后堆栈中的内容是什么?程序执行后堆栈中的内容是什么?MOV SP,#70HPUSH 20HPUSH 21HPUSH 22H此此课件下件下载可自行可自行编辑修改,修改,仅供参考!供参考!感感谢您的支持,我您的支持,我们努力做得更好!努力做得更好!谢谢!
限制150内