51单片机 汇编语言 一次存多个数到RAM

作者&投稿:阙钧 (若有异议请与网页底部的电邮联系)
51单片机 汇编语言 一次存多个数到RAM~

从ROM读出,放到RAM中,这要看RAM的大小。
STC单片机的RAM比较大。
从ROM中读一组数据,当然要用循环了。
可以这么写:
MOV
R7,#n
;n是读出数据的个数
MOV
DPTR,#TAB
;在ROM中存放的数据起始
MOV
R0,
#ram
;ram是在RAM中存放首地址
LOOP:MOVC
A,
@DPTR;从ROM读出数据
MOV
@R0,A
;保存到RAM中
INC
DPTR
INC
R0
DJNZ
R7,LOOP
END

DATM:
MOV DPTR,#4000H
MOV R2,#20
MOV R0,#30H
MOV R1,#50H
LOOP:
MOVX A,@DPTR
JB ACC.7,LOOP1
MOV @R1,A
INC R1
SJMP LOOP2
LOOP1:
MOV @R0,A
INC R0
LOOP2:
INC DPTR
DJNZ R2,LOOP
RET

51存数据到RAM中有两条指令,分别针对是内部RAM还是扩展的外部RAM。
1、内部RAM,将30H开始的16个数存入50H开始的存储器中
RAMCC:
MOV R0,#30H

MOV R1,#50H

MOV R2,#16

LOOP:
MOV A,@R0

MOV @R1,A

INC R0

INC R1

DJNZ R2,LOOP

RET

2、将ROM中的TAB开始的16个字节存入1000H开始的RAM中
RAMCC:
MOV R2,#0
LOOP:
MOV DPTR,#TAB

MOV A,R2

MOVC A,@A+DPTR

PUSH ACC

MOV DPTR,#1000H

MOV A,R2

ADD A,DPL

MOV DPL,A

POP ACC

MOVX @DPTR,A

INC R2

CJNE R2,#16,LOOP

RET

从ROM读出,放到RAM中,这要看RAM的大小。
STC单片机的RAM比较大。
从ROM中读一组数据,当然要用循环了。
可以这么写:
MOV R7,#n ;n是读出数据的个数
MOV DPTR,#TAB ;在ROM中存放的数据起始
MOV R0, #ram ;ram是在RAM中存放首地址
LOOP:MOVC A, @DPTR;从ROM读出数据
MOV @R0,A ;保存到RAM中
INC DPTR
INC R0
DJNZ R7,LOOP
END


新乐市15787931769: 51单片机 汇编语言 一次存多个数到RAM -
苌霄乳增: 51存数据到RAM中有两条指令,分别针对是内部RAM还是扩展的外部RAM.1、内部RAM,将30H开始的16个数存入50H开始的存储器中 RAMCC: MOV R0,#30H MOV R1,#50H MOV R2,#16 LOOP: MOV A,@R0 MOV @R1,A INC R0 INC R1 ...

新乐市15787931769: 要在8051单片机片内RAM里存入的一个16位数据,汇编语言怎么写? -
苌霄乳增: 在8051单片机片内RAM中存入一个16位数据,汇编指令中没有专门的指令.可以通过以下方法来实现:(加入十六位数为DATA,存入30H31H中)1、用压栈指令实现.MOV SP,#30H PUSH #LOW(DATA) PUSH #HIGH(DATA) 或者这样也可以:PUSH #LOW(DATA) PUSH #HIGH(DATA) POP 31H POP 30H2、用传送指令实现.MOV A,#LOW(DATA) MOV 30H,A MOV A,#HIGH(DATA) MOV 31H,A

新乐市15787931769: 51单片机如何写多个程序保存在不同的文件里相互包含 -
苌霄乳增: 你就将你程序中的一个过程函数,如延时函数 delay() 注释掉,然后把整个复制到新文件,当然包括函数用到的变量的定义,保存为 delay.c,再新建个 delay.h 文件,里面有 void delay() 语句.然后在住程序里加上语句 #include "delay.h" 就是了; 去试试吧

新乐市15787931769: at89c51单片机怎么用汇编语言写“多个延时程序” -
苌霄乳增: 单片机汇编语言中要使一个延时程序可以被不同情况下调用而延时不同的时间,可以通过类似于C语言中传递参数的方式来实现,举例如下:ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV P0,#5AH ;P0上的LED灯间隔点亮 MOV R7,#50 ;R7...

新乐市15787931769: 单片机汇编语言怎样实现将41H内的内容依次存入50H - 70H中,使用INC指令应该怎么用? -
苌霄乳增: 用间接寻址,循环存入 MOV R0,#50H MOV A,41H LOOP: MOV @R0,A INC R0 CJNE R0,#71H,LOOP

新乐市15787931769: 51单片机串口接收多字符并存入数组的程序 -
苌霄乳增: 你这串口接收子程序,只要接收到第一个字节的数据就一直在中断子程序中,然后等待接收其它数据了,while(!RI); 这就是在等待接收其它数据了,接收完了以后又在中断子程序连续发送了.这么写程序是有很大弊病的,一旦进入中断程序,...

新乐市15787931769: 汇编语言中怎么把数存到一个单元啊,y单元,单元需要定义吗 -
苌霄乳增: 需要定义:如果Y是字节,那定义为y db ?如果y是字,那定义为y dw ?定义好后直接可对该单元存取

新乐市15787931769: 51单片机程序如何把数组放在程序存储空间 -
苌霄乳增: 定义的前面加个code就可以了 code unsigned char X[100] = {.....};如果是汇编语言,用DB伪指令DB 00H,01H....

新乐市15787931769: 向内部RAM20H到29H中单元输入任意10个数据的单片机C51汇编程序是什么 -
苌霄乳增: ORG 0000HTAB: DB 00H,01H...09H ;这里放十个任意数,以逗号隔开MOV R0,#20H ;存起始地址MOV R1,#0AH ;循环次数,十次MOV A,#TAB ;累加器A中放待存数据LOOP: MOV @R0,AINC AINC R0DJNZ R1,LOOP ;非零转移指令,R1不为零继续循环SJMP $ END

新乐市15787931769: 51单片机内部存储器能存多少条c语言的程序 -
苌霄乳增: 汇编指令一条通常占1~3个字节,与你的具体指令有关,例如INC ACC占1字节、MOV A,30H占2字节、LJMP **就得占3个字节. 短程序对照指令表一个一个计算可知,长的通常估算就用2字节乘指令行数得个大概值. C语言,可以说编译出来...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网