dpj1.asm

来自「自己的平时一些制作 现在整理一下 与大家一起分享」· 汇编 代码 · 共 54 行

ASM
54
字号
	; dpj1
	; 内存初始化
	MOV A,#0
	MOV R0,#0FFH
INI : MOV @R0,A
 	INC A
	DJNZ R0,INI		

;直接寻址
	MOV A,03H	   ;把地址03H中的数移入累加器
	MOV 43H,22H    ;把地址22H中的数移入地址43H
	MOV 02H,C	   ;把C中的数移入位地址02H中
	MOV 42H,#18H   ;把立即数18H移入地址42H中
	MOV 09H,P1	   ;把端口1中的数移入地址09H中

;间接寻址
    ;DATA和IDATA区寻址
	MOV R1,#22H    ;设置R1为指向DATA区内的地址22H的指针
	MOV R0,#0A9H   ;设置R0为指向IDATA区内的地址0A9H的指针
	MOV A,@R1	   ;读入地址22H的数据
	MOV @R0,A	   ;将累加器中的数据写入地址A9H中
	INC R0		   ;R0中的地址变为AAH
	INC R1		   ;R1中的地址变为23H
	MOV 34H,@R0	   ;将地址AAH中的数据写入34H
	MOV @R1,#67H   ;把立即数写入地址23H

	;XDATA区寻址
	MOV DPTR,#3048H; DPTR 指向外部存储区
	MOVX A,@DPTR   ; 读入外部存储区地址3048H中的数
	INC DPTR	   ; 指针加一
	MOV A,#26H	   ;  立即数26H写入A中
	MOVX @DPTR,A   ;  将26H写入外部存储区地址3049H中
	MOV R0,#87H	   ; R0指向外部存储器区地址87H
	MOVX A,@R0	   ; 将外部存储区地址87H中的数读入累加器中

	;CODE区寻址
	MOV DPTR,#TABLE_BASE ;DPTR指向表首地址
	MOV A,#5			 ;把偏移量(数5)装入累加器中
	MOVC A,@A+DPTR		 ;从表中读出数据到累加器中(5的平方)
	SJMP INDEX2			 ;
TABLE_BASE:
	DB 0,1,4,9,16,25,36	 ;平方表
INDEX2: 				 
    MOV A,#5			 ;把偏移量(数5)装入累加器中
	ADD A,#2			 ; 由于SJMP EXIT指令占2个字节,修正偏移量
	MOVC A,@A+PC		 ;从表中读出数据到累加器中(5的平方)
	SJMP EXIT			 
	DB 0,1,4,9,16,25,36	 ;平方表
EXIT: SJMP $			 



	END

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?