§33数据传送类指令(29条) Data transfer nstruction 0S-51助记符: 助记符 MoV、MVX、MoVG XCH、XOHD、SWAP PUSH、PoP ◆源操作数寻址方式(5种): 立即寻址、直接寻址、寄存器寻址、 寄存器间接寻址、变址寻址。 ◆目的操作数寻址方式(3种): 直接寻址、寄存器寻址、寄存器间接寻址 除了目的操作数为Ac的指令影响奇偶标志P外,一般不影响 标志位
2021/1/21 16 §3.3 数据传送类指令(29条) Data Transfer Instruction MCS-51 助记符: 助记符: MOV、MOVX、MOVC XCH、XCHD、SWAP PUSH、POP ❖ 源操作数寻址方式(5种): 立即寻址、直接寻址、寄存器寻址、 寄存器间接寻址、变址寻址。 ❖ 目的操作数寻址方式(3种): 直接寻址、寄存器寻址、寄存器间接寻址 除了目的操作数为ACC的指令影响奇偶标志P外,一般不影响 标志位
3.3.1十六位数的传递指令(1条) MOV DPTR, data16 805是一种8位机,这是唯一的一条16位立即数传递指 令。功能:将一个16位的立即数送入DPTR中去。其中 高8位送入DPH,低8位送入DPL。 例: MOV DPTR,#1234 执行完了之后DPH中的值为12H,DPL中的值为34H 如果我们分别向DPH,DPL送数,则结果也一样。 如下面两条指令: MOV DPH,#35H 0VDPL,#12H。 则就相当于执行了 MOV DPTR,#3512H
2021/1/21 17 3.3.1 十六位数的传递指令(1条) MOV DPTR,#data16 8051是一种8位机,这是唯一的一条16位立即数传递指 令。功能:将一个16位的立即数送入DPTR中去。其中 高8位送入DPH,低8位送入DPL。 例:MOV DPTR,#1234H 执行完了之后DPH中的值为12H,DPL中的值为34H。 如果我们分别向DPH,DPL送数,则结果也一样。 如下面两条指令: MOV DPH,#35H MOV DPL,#12H。 则就相当于执行了 MOV DPTR,#3512H
3.3.2累加器A与片外RAM之间的数据传递类指令(4条) MOVX A. @R i MOVX RI A MOVX A. @DPTR MOVX QDPTR. A 说明: 1.在51中,与外部存储器RAM打交道的只可以是A累加器。所有 需要送入外部RAM的数据必需要通过A送去,而所有要读入的外部 RAM中的数据也必需通过A读入。 在此我们可以看出内外部RAM的区别了,内部RAM间可以直接进 行数据的传递,而外部则不行。 比如,要将外部RAM中某一单元(设为0100单元的数据)送入 另一个单元(设为0200H单元),也必须先将0100H单元中的内容读 入A,然后再送到0200H单元中去。 021/1/21
2021/1/21 18 3.3.2 累加器A与片外RAM之间的数据传递类指令(4条) MOVX A,@Ri MOVX @Ri,A MOVX A,@DPTR MOVX @DPTR,A 说明: 1.在51中,与外部存储器RAM打交道的只可以是A累加器。所有 需要送入外部RAM的数据必需要通过A送去,而所有要读入的外部 RAM中的数据也必需通过A读入。 在此我们可以看出内外部RAM的区别了,内部RAM间可以直接进 行数据的传递,而外部则不行。 比如,要将外部RAM中某一单元(设为0100H单元的数据)送入 另一个单元(设为0200H单元),也必须先将0100H单元中的内容读 入A,然后再送到0200H单元中去
2要读或写外部的RAM,当然也必须要知道RAM的地址 在后两条指令中,地址是被直接放在DPTR中的。而前两条 指令由于R(即R或R1)只是8位的寄存器,所以只提 供低8位地址。高8位地址由P2口来提供。 3.使用时应先将要读或写的地址送入DPTR或R中,然后 再用读写命令。 例:将外部RAM中100H单元中的内容送入外部RAM中200H 单元中。 MOV DPTR, #0100H MOVX A. ODPTR MOV DPTR. #0200H MOVX @DPTR. A 2021/1/2
2021/1/21 19 2.要读或写外部的RAM,当然也必须要知道RAM的地址, 在后两条指令中,地址是被直接放在DPTR中的。而前两条 指令,由于Ri(即R0或R1)只是8位的寄存器,所以只提 供低8位地址。高8位地址由P2口来提供。 3.使用时应先将要读或写的地址送入DPTR或Ri中,然后 再用读写命令。 例:将外部RAM中100H单元中的内容送入外部RAM中200H 单元中。 MOV DPTR,#0100H MOVX A,@DPTR MOV DPTR,#0200H MOVX @DPTR,A
333读程序存储器指令(2条) MOVC A. @A+DPTR MOVC A. @A+PC 本组指令是将ROM中的数送入A中。本组指令也被称为查表指令, 常用此指令来查一个已做好在R0M中的表格 说明:查找到的结果被放在A中,因此,本条指令执行前后,A 中的值不一定相同。 例:有一个数在R0中,要求用查表的方法确定它的平方值(此 数的取值范围是0-5) MOV dPtR. #100H 如果R0中的值为2, MOV A. RO 则最终地址为 MOVc A. @A+DPTR 100H+2为102H, 到102H单元中找到 0RG0100H 的是4。 DB0,1,4,9,16,25 2021/1/2
2021/1/21 20 3.3.3 读程序存储器指令(2条) MOVC A,@A+DPTR MOVC A,@A+PC 本组指令是将ROM中的数送入A中。本组指令也被称为查表指令, 常用此指令来查一个已做好在ROM中的表格 说明:查找到的结果被放在A中,因此,本条指令执行前后,A 中的值不一定相同。 例:有一个数在R0中,要求用查表的方法确定它的平方值(此 数的取值范围是0-5) MOV DPTR,#100H MOV A,R0 MOVC A,@A+DPTR . … ORG 0100H DB 0,1,4,9,16,25 如果R0中的值为2, 则最终地址为 100H+2为102H, 到102H单元中找到 的是4