在8051单片机片内RAM中存入一个16位数据,汇编指令中没有专门的指令。可以通过以下方法来实现:(加入十六位数为DATA,存入30H31H中)
1、用压栈指令实现。
MOV SP,#30H
PUSH #LOW(DATA)
PUSH #HIGH(DATA)
或者这样也可以:
PUSH #LOW(DATA)
PUSH #HIGH(DATA)
POP 31H
POP 30H
2、用传送指令实现。
MOV A,#LOW(DATA)
MOV 30H,A
MOV A,#HIGH(DATA)
MOV 31H,A
第一种方式:
直接赋值:
mov 30h,data1
mov 31h,data2
这样16位数据就分为两个字节,分别存于30h、31h中了
第二种方式,间接赋值:
MOV R0,#30h
MOV @R0,DATA1
INC RO
MOV @R0,DATA2
只能存进两个寄存器里。
如:MOV @R0,DPH
MOV @R0,DPL
分成两个储存空间存不就行了,还要怎么写啊!??
连续移动数据两次,要看你原来的数据在哪儿.