⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imageacutesub.s.bak

📁 arm926EJ- 汇编图像处理
💻 BAK
字号:
       AREA		|.text|, CODE, READONLY
				
			 EXPORT	ImageSmoothSub
			

ad		 RN 0			;ad=BASE++,ad初始值为BASE
w			 RN 1			;图像宽度,此处为210
h			 RN 2			;图像高度,此处为280
row		 RN 3			;定义像素的坐标为(row,col),此处row和col是变量
col		 RN 4			;
lum_0	 RN 5			;两个lum寄存器用来缓存灰度值,空闲时可作他用
lum_1	 RN 6	
dest	 RN 11		;目标地址寄存器
			

ImageAcuteSub
			  STMFD			sp!, {r4-r12, lr} ;ATPCS标准
			  MOV			col, #0				
			  MOV			row, #0
			  SUB			r8, w, #1			;保存最大的列号
			  SUB			r9, h, #1			;保存最大的行号
			  MOV			r11, #0x20000 ;保存新图像存储地址
			  MOV			r12, r0				;保存基地址
			  MUL			r7, w, h			;保存图像的大小
			  ADD			r7, r7, r12		;内存空间中图像末地址
loop
			  CMP			col, w				;更新当前像素的行号,列号
			  SUBGE		col, col, w
			  ADDGE		row, row, #1
			  
			  CMP			row, #0				;比较行号是否为0
			  BEQ			load		
			  CMP			row, r9				;比较行号是否为279(取决于图像尺寸)
			  BEQ			load

			  CMP			col, #0				;比较列号是否为0
			  BEQ			load		
			  CMP			col, r8				;比较列号是否为209
			  BEQ			load					;BEQ均跳转到load处,对灰度值不作处理
			  
			  ;对有效区域内的像素做处理
			  LDRB		lum_0, [ad, #-1] 		
			  LDRB		lum_1, [ad, #1]			 			  	  
			  ADD			lum_0, lum_0, lum_1  ;此处lum_0保存左右两个灰度值之和
			  SUB			r10, ad, w
			  LDRB		lum_1, [r10]
			  ADD			lum_0, lum_0, lum_1  ;继续累加上方像素灰度值
			  ADD			r10, ad, w
			  LDRB		lum_1, [r10] 		
			  ADD			lum_0, lum_0, lum_1  ;到此为止lum_0保存上下左右4个灰度值之和
			  LDRB		lum_1, [ad]					 ;载入当前像素灰度值
			  SUB			lum_0, lum_0, lum_1 LSL #2 ;四周像素灰度之和-当前像素灰度四倍
				SUBS		lum_1, lum_1, lum_0 LRL #2 ;此处锐化的参数取0.25

				;限制灰度值范围0-255			  
			  MOVLT		lum_1, #0			
			  CMP			lum_1, #255
			  MOVGT		lum_1, #255	
			  	
			  B				next

load
		    LDRB		lum_1, [ad, #1]		
				
next	
			  STRB		lum_1, [dest], #1
			  ADD		  col, col, #1
			  CMP			ad, r7		;是否到文件尾	
			  ADD			ad, ad, #1		  
			  BLT			loop			  
			  
			  LDMFD		sp!, {r4-r12, pc}
			  END	
				
			  

⌨️ 快捷键说明

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