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

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

数量     助记符     说明	     字节数	    执行时间	   指令代码
1,MOV direct,#data 将立即数data送片内RAM direct地址单元 3 2 75H,direct,data
2,MOV A,direct	将direct地址单元内的数据送累加器A	 2	1	E5H,direct
3,ADD A,Rn	寄存器内容加累加器内容结果存放至累加器中	1	1	28H-2FH
4,RL A	累加器循环左移	1	1	23H
5,MOV DPTR,#data16	将16位立即数data16送数据指针寄存器DPTR	3	2	90H,dataH,dataL
6,MOVX @DPTR,A	将累加器A的数据送数据指针DPTR寄存器所指外部RAM地址单元中	1	2	F0H
7,SJMP rel	短转移	2	2	80H,rel
8,MOV Rn,A	将累加器A内的数据送寄存器Rn	1	1	F8H-FFH
9,MUL AB	累加器A与寄存器B相乘	1	4	A4H
10,MOV Rn,#data	将立即数data送寄存器Rn	2	1	78H-7FH,data
11,MOVC A,@A+DPTR	(A)+(DPTR)构成ROM地址,将该地址内的数据送到A中	1	2	93H
12,INC Rn	寄存器内容增1	1	1	08H-0FH
13,ADD A,#data	将立即数与A中内容相加结果存放至A中	2	1	24H,data
14,MOV @Ri,A	寄存器Ri内为片内RAM地址,将累加器A内的内容送到该地址	1	1	F6H-F7H

题2

将地址40H(内部RAM)存放的无符号数乘以10后存放至外部RAM地址为1000H处(设结果不产生溢出)

程序源码:

第一种方式:
;
;将内部RAM:40H存放的数乘10后存放至外部RAM:1000H处(设结果不产生溢出)
;
	ORG 0000H
	MOV 40H,#3;用于测试
	MOV A,40H
	RL A
	MOV R1,A
	RL A
	RL A
	ADD A,R1
	MOV DPTR,#1000H
	MOVX @DPTR,A
	SJMP $	
	END
	
第二种方式:
	ORG 0000H
	MOV 40H,#3
	MOV A,40H
	MOV B,#10
	MUL AB
	MOV DPTR,#1000H
	MOVX @DPTR,A
	SJMP $	
	END

说明:第二种方式虽然简洁,但第一种方式更容易让人理解乘除法是怎样进行的,方便理解其原理。

题3

内部RAM地址为44H中存放一个 BCD 数(0~ 9),请将44H中的数进行平方+10后存放至内部RAM地址为45H中

程序源码:
注:进行平方运算时并没有采用MUL乘法指令,而是采用查表指令。凡是涉及平方运算首先想到能否构建平方表然后使用查表指令进行操作。

;
;设单片机的晶体震荡频率为 12MHz.
;内部RAM地址为44H中存放一个 BCD 数(09),请将44H中的数进行**平方+10**后存放至内部RAM地址为45H中
;
	ORG 0000H
	MOV 44H,#9
	MOV R0,#44H
	MOV A,@R0
	MOV DPTR,#TAB
	MOVC A,@A+DPTR 
	ADD A,#0AH
	INC R0
	MOV @R0,A
	SJMP $
TAB:
	DB 0,1,4,9,16 
	DB 25,36,49,64,81	
	END
发布了26 篇原创文章 · 获赞 23 · 访问量 5744

猜你喜欢

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