《单片机汇编》期末考试、考研常见考题、习题,题型汇总(五)

此篇文章中涉及的新指令如下:

数量     助记符     说明	     字节数	    执行时间	   指令代码
31,CLR A	       累加器A清零	1	1	E4H
32,MOV A,#data	   将立即数data送累加器A	2	1	74H,data
33,INC DPTR			数据指针增1	1	2	A3H
34,DJNZ Rn,rel		寄存器中的内容减1,不为零转移	2	2	D8H-DFH,rel
35,MOV direct,@Ri	寄存器内为内部RAM地址,将该地址中的内容送至direct中	2	2	86H-87H,direct
36,DEC Rn			寄存器中的内容减1	1	1	18H-1FH
37,MOV @Ri,direct	寄存器内为内部RAM地址,将direct中的内容送至该地址中	2		2	A6H-A7H,direct
38,MOVX A,@DPTR		将DPTR寄存器所指外部RAM地址单元内的数据送到累加器A中	1	2	E0H
39,MOVX @DPTR,A		将累加器A中的内容送至DPTR寄存器所指外部RAM地址单元内	1	2	F0H
40,MOVX @Ri,A		将累加器A中的内容送至Ri寄存器所指外部RAM地址单元内	1	2	F2H-F3H
41,MOVX A,@Ri		将Ri寄存器所指外部RAM地址单元内的数据送到累加器A中	1	2	E2H-E3H
42,DJNZ direct,rel	direct中的内容减1,不为零转移	3	2	D5H,direct,rel

题7:数据的拷贝或移动

题7.1 外部RAM数据传送到外部RAM
将存于外部 RAM 4000H 开始的 50H个数据传送外部RAM 0000H开始 的区域,请编程实现。
解析:对于外部RAM数据传外部RAM这类题型,注意传送地址是否超过8位位宽,如果超过请使用MOVX @DPTR,A指令替代MOVX @R0,A 。例如:扩展题7.1
程序源码:

	ORG 0000H
	MOV DPTR,#4000H
	MOV R2,#50H
	MOV R0,#00H
	MOV A,#00H
LOOP:
	MOVX A,@DPTR
	MOVX @R0,A      ;-----1
	INC R0			;-----2
	INC DPTR
	DJNZ R2,LOOP
	SJMP $
	END

扩展题7.1
将存于外部 RAM 4000H 开始的 50H个数据传送外部RAM 0200H 开始的区域,请编程实现。
程序源码:

	ORG 0000H
	MOV R2,#50H
	MOV R0,#40H
	MOV R1,#42H
	MOV 40H,#00H
	MOV 41H,#40H
	MOV 42H,#00H
	MOV 43H,#02H
	CLR A
LOOP:
	MOV  DPL,@R0
	INC R0
	MOV DPH,@R0
	MOVX A,@DPTR
	INC DPTR	
	DEC R0
	MOV @R0,DPL
	INC R0
	MOV @R0,DPH
	MOV DPL,@R1
	INC R1
	MOV DPH,@R1
	MOVX @DPTR,A 
	INC DPTR
	DEC R1
	MOV @R1,DPL
	INC R1
	MOV @R1,DPH  
	DEC R0
	DEC R1		
	DJNZ R2,LOOP
	SJMP $
	END

题7.2 外部RAM数据传送到内部RAM
将存于外部 RAM 4000H 开始的 50H个数据传送内部RAM 60H 开始的区域,请编程实现。
解析:注意细节,原理遇上题差不多
程序源码:

;将存于外部 RAM 4000H 开始的 50H个数据传送内部RAM 60H 的区域,请编程实现。	
	ORG 0000H
	MOV R2,#50H
	MOV R0,#60H
	MOV DPTR,#4000H
	CLR A
LOOP:
	MOVX A,@DPTR
	INC DPTR
	MOV @R0,A 
	INC R0		
	DJNZ R2,LOOP
	SJMP $
	END

题7.3 内部RAM数据传送到内部RAM
将存于内部 RAM 40H 开始的 10H个数据传送内部RAM 60H 开始的区域,请编程实现。
解析:注意数据存放原始地址和数据存放目的地址是否重叠,如果重叠需要预先保护,例子:见扩展7.2
程序源码:

	ORG 0000H
	MOV R2,#10H
	MOV R0,#60H
	MOV R1,#40H
	CLR A
LOOP:
	MOV A,@R0
	INC R0
	MOVX @R1,A 
	INC R1
	DJNZ R2,LOOP
	SJMP $
	END

扩展7.2
将存于内部 RAM 40H 开始的 10个数据传送内部RAM 45H 开始的区域,请编程实现。
解析:数据原始地址和目的地址有重叠,需要提前保护
程序源码:

	ORG 0000H
	CLR A
	CLR RS0
	CLR RS1
	MOV R2,#5
	MOV R0,#40H
	MOV R1,#45H
	CLR RS0
	SETB RS1
	MOV R2,#5
	MOV R0,#70H
	MOV R1,#4AH
	AJMP SAVE
START:
	CLR RS0
	CLR RS1
LOOP1:
	MOV A,@R0
	MOV @R1,A
	INC R0 
	INC R1
	DJNZ R2,LOOP1
	CLR RS0
	SETB RS1
LOOP2:
	MOV A,@R0
	MOV @R1,A
	INC R0 
	INC R1
	DJNZ R2,LOOP2
	SJMP $
	ORG 0060H
SAVE:
	SETB RS0
	CLR  RS1
	MOV 36H,#05H
	MOV R0,#45H
	MOV R1,#70H
LOOP3:
	MOV A,@R0
	MOV @R1,A
	INC R0
	INC R1
	DJNZ 36H,LOOP3
	AJMP START
	END

题7.4 内部RAM数据传送到外部RAM
将存于内部 RAM 60H 开始的 50H个数据传送外部RAM 4000H 开始的区域,请编程实现。
程序源码:

;将存于内部RAM 60H 开始的 50H个数据传送外部 RAM 4000H的区域,请编程实现。	
	ORG 0000H
	MOV R2,#50H
	MOV R0,#60H
	MOV DPTR,#4000H
	CLR A
LOOP:
	MOV A,@R0
	INC R0
	MOVX @DPTR,A 
	INC DPTR
	DJNZ R2,LOOP
	SJMP $
	END
发布了26 篇原创文章 · 获赞 23 · 访问量 5744

猜你喜欢

转载自blog.csdn.net/liuxianfei0810/article/details/105486302