trim.asm
来自「工欲善其事」· 汇编 代码 · 共 67 行
ASM
67 行
; ########################################################################
.486 ; create 32 bit code
.model flat, stdcall ; 32 bit memory model
option casemap :none ; case sensitive
.code
; ########################################################################
trim proc src:DWORD
mov ecx, src
mov edx, src
; ---------------------------
; read leading tabs & spaces
; ---------------------------
@@:
mov al, [ecx]
inc ecx
cmp al, 32 ; space
je @B
cmp al, 9 ; tab
je @B
dec ecx ; correct for following copy
; --------------------------------------
; copy the rest including trailing zero
; --------------------------------------
@@:
mov al, [ecx]
inc ecx
mov [edx], al
inc edx
cmp al, 0
jne @B
; --------------------------------------
; back 2 to compare trailing characters
; --------------------------------------
sub edx, 2
; ----------------------------------------------
; scan backwards to find first non tab or space
; ----------------------------------------------
@@:
mov al, [edx]
dec edx
cmp al, 32
je @B
cmp al, 9
je @B
; --------------------------------------------------
; place terminator at position of last tab or space
; --------------------------------------------------
mov [edx+1], byte ptr 0
ret
trim endp
; #########################################################################
end
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?