MCS51单片机汇编指令详解
以累加器为目的操作数的指令
MOVA,R
MOVA,direct
MOVA,Ri
MOVA,data
第一条指令中,R
代表的是R0R7。第二条指令中,direct
就是指的直接地址,而第三条指令中,就是我们刚才讲过的。第四条
指令是将立即数data送到A中。
下面我们通过一些例子加以说明:
MOVA,R1;将工作寄存器R1中的值送入A,R1中
的值保持不变。
MOVA30H;将内存30H单元中的值送入A,30H单
元中的值保持不变。
MOVAR1;先看R1中是什么值,把这个值作为地
址,并将这个地址单元中的值送入A中。如执行命令前R1中的值为
20H,则是将20H单元中的值
送
入A
中。
fMOVA34H;将立即数34H送入A中,执行完本条指令后,A中的值是34H。
以寄存器R
为目的操作的指令MOVR
AMOVR
directMOVR
data这组指令功能是把源地址单元中的内容送入工作寄
存器,源操作数不变。
以直接地址为目的操作数的指令MOVdirectA例:MOV20HAMOVdirectR
MOV20HR1MOVdirect1direct2MOV20H30HMOVdirectRiMOV20HR1MOVdirectdataMOV20H34H
以间接地址为目的操作数的指令MOVRiA例:MOVR0AMOVRidirectMOVR120HMOVRidataMOVR034H
f十六位数的传递指令MOVDPTR,data168051是一种8位机,这是唯一的一条16位立即数
传递指令,其功能是将一个16位的立即数送入DPTR中去。其中高8位送入DPH(083H),低8位送入DPL082H。例:MOVDPTR,1234H,则执行完了之后DPH中的值为12H,DPL中的值为34H。反之,如果我们分别向DPH,DPL送数,则结果也一样。如有下面两条指令:MOVDPH,35H,MOVDPL,12H。则就相当于执行了MOVDPTR,3512H。
累加器A与片外RAM之间的数据传递类指令MOVXARiMOVXRiAMOVX9ADPTRMOVXDPTRA
说明:1)在51中,与外部存储器RAM打交道的只可以是
A累加器。所有需要送入外部RAM的数据必需要通过A送去,而所有要读入的外部RAM中的数据也必需通过A读入。在此我们可以看出内外部RAM的区别了,内部RAM间可以直接进行数据的传递,而外部则不行,比如,要将外部RAM中某一单元(设为0100H单元的数据)送入另一个单元(设为0200H单元),也必须先将0100H单元中的内容读入A,然后再送到0200H单元中去。
f2)要读或写外部的RAM,当然也必须要知道RAM的地址,在后两条指令中,地址是被直接放在DPTR中的。而前两条指令,由于Ri(即R0或R1)只是一个8位的寄存器,所以只提供低8位地址。因为有时扩展的外部RAM的数量比较少,少于或等于256个,就只需要提供8位地址就够了。
3)使用时应当首先将要读或写的地址送入r