常见 51 单片机指令及详解数据传递类指令 (1) 以累加器为目的操作数的指令 MOV A,RnMOV A,directMOV A,@RiMOV A,#data第一条指令中,Rn 代表的是 R0—R7。第二条指令中,direct 就是指的直接地址,而第三条指令中,就是我们刚才讲过的。第四条指令是将立即数 data 送到 A 中。下面我们通过一些例子加以说明:MOV A,R1 ;将工作寄存器 R1 中的值送入 A,R1 中的值保持不变.MOV A,30H ;将内存 30H 单元中的值送入 A,30H 单元中的值保持不变。MOV A,@R1 ;先看 R1 中是什么值,把这个值作为地址,并将这个地址单元中的值送入 A 中。如执行命令前 R1 中的值为 20H,则是将 20H 单元中的值送入 A 中.MOV A,#34H ;将立即数 34H 送入 A 中,执行完本条指令后,A 中的值是 34H.(2)以寄存器 Rn 为目的操作的指令 MOV Rn,AMOV Rn,directMOV Rn,#data这组指令功能是把源地址单元中的内容送入工作寄存器,源操作数不变。(3)以直接地址为目的操作数的指令MOV direct,A 例: MOV 20H,AMOV direct,Rn MOV 20H,R1MOV direct1,direct2 MOV 20H,30HMOV direct,@Ri MOV 20H,@R1MOV direct,#data MOV 20H,#34H(4)以间接地址为目的操作数的指令MOV @Ri,A 例:MOV @R0,AMOV @Ri,direct MOV @R1,20HMOV @Ri,#data MOV @R0,#34H(5)十六位数的传递指令MOV DPTR,#data168051 是一种 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。累加器 A 与片外 RAM 之间的数据传递类指令MOVX A,@RiMOVX @Ri,AMOVX #9; A,@DPTRMOVX @DPTR,A说明:1)在 51 中,与外部存储器 RAM 打交道的只可以是 A 累加器。所有需要送入外部 RAM 的数据必需要通过A 送去,而所有要读入的外部 RAM 中的数据也必需通过 A 读入。在此我们可以看出内外部 RAM 的区别了,内部 RAM 间可以直接进行数据的传递,而外部则不行,比如,要将外部 RAM 中某一单元(设为 0100H 单元的数据)送入另一个单元(设为 0200H 单元),也必...