rtrim.asm

来自「工欲善其事」· 汇编 代码 · 共 59 行

ASM
59
字号
; #########################################################################

  ;  --------------------------------------------------------
  ;  This module has been optimised by Alexander Yackubtchik
  ;  --------------------------------------------------------

      .386
      .model flat, stdcall  ; 32 bit memory model
      option casemap :none  ; case sensitive

    .code

; ########################################################################

rtrim proc source:DWORD,dest:DWORD

    push esi
    push edi

    mov esi, source
    xor ecx, ecx        ; zero ecx to use as counter

  @@:
    mov al, [esi]
    inc esi
    inc ecx             ; get string length excluding zero
    cmp al, 0           ; exit loop on zero
    jne @B

    lea esi, [esi-2]    ; correct esi count

  @@:
    mov al, [esi]
    dec esi
    dec ecx
    cmp al, 32          ; loop if space
    je  @B
    cmp al, 9           ; loop if tab
    je @B

    cld                 ; read forward

    inc ecx
    mov esi, source
    mov edi, dest
    rep movsb

    mov [edi-1], byte ptr 0

    pop edi
    pop esi

    ret

rtrim endp

; ########################################################################

end

⌨️ 快捷键说明

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