§3.3数据传送类指令(29条) Data transfer nstruct i on 0S-51助记符: 助记符 MoV、MoVX、MoVc XOH、XCHD、SWAP PUSH、POP ◇源操作数寻址方式(5种): 立即寻址、直接寻址、寄存器寻址、 寄存器间接寻址、变址寻址。 ◇目的操作数寻址方式(3种): 直接寻址、寄存器寻址、寄存器间接寻址 除了目的操作数为A0G的指令影响奇偶标志P外,一般不影响 标志位。1
2021/2/23 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,#1234H 执行完了之后DPH中的值为12H,DPL中的值为34H 如果我们分别向DPH,DPL送数,则结果也一样。 如下面两条指令: MOV DPH,#35H MOV DPL,#12H。 则就相当于执行了 MOV DPTR,#3512H
2021/2/23 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. OR i MOVX ORi, A MOVX A. ODPTR MOVX QDPTR A 说明: 在51中,与外部存储器RAM打交道的只可以是A累加器。所有 需要送入外部RAM的数据必需要通过A送去,而所有要读入的外部 RAM中的数据也必需通过A读入 在此我们可以看出内外部RAM的区别了,内部RAM间可以直接进 行数据的传递,而外部则不行。 比如,要将外部RAM中某一单元(设为0100H单元的数据)送入 另一个单元(设为0200H单元),也必须先将0100H单元中的内容读 入A,然后再送到0200H单元中去。 2021/223
2021/2/23 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 @DPTR MOV DPTR.#0200H MOVX @DPTR. A 021/2/23
2021/2/23 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 本组指令是将RM中的数送入A中。本组指令也被称为查表指令, 常用此指令来查一个已做好在ROM中的表格 说明:查找到的结果被放在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/223
2021/2/23 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