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

📄 imagesmoothsub.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   ;目标地址寄存器                                  
			

ImageSmoothSub
			  STMFD		sp!, {r4-r12, lr}  ;ATPCS标准
			  MOV			col, #0
			  MOV			row, #0
			  SUB			r8, w, #1			;保存最大的列号                      
			  SUB			r9, h, #1			;保存最大的行号                      
			  MOV			r11, #0x30000 ;保存新图像存储地址                  
			  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]			  		  	  
			  ADD			lum_0, lum_0, lum_1	
			  LDRB		lum_1, [ad, #1]     ;到此为止,lum_1存了 
			  ADD			lum_0, lum_0, lum_1	;左中右三个灰度值之和	
			  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_1保存五个灰度值之和
			  
				;除法,除数为5
			  MOV			lum_1, #0
div			
			  SUBS		lum_0, lum_0, #5
			  BLT			operation
			  ADD			lum_1, lum_1, #1
			  B				div
			  
operation
				;限制灰度值范围0-255
			  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 + -