ucase.asm

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

ASM
44
字号
; #########################################################################

;    ---------------------------------------------------------------
;    Part of this module has been optimised by Alexander Yackubtchik
;    ---------------------------------------------------------------

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

    .code

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

ucase proc text:DWORD

  ; -----------------------------
  ; converts string to upper case
  ; invoke ucase,ADDR szString
  ; -----------------------------

    mov edx, text

  ucSt:
    mov al, [edx]       ; load byte into al
    cmp al, "a"
    jb @F               ; jump if less than ascii "a"
    cmp al, "z"
    ja @F               ; jump if greater than ascii "z"
    sub al, 32          ; else if lowercase, sub 32 to make uppercase
  @@:
    mov [edx], al       ; write byte to address in edx
    lea edx, [edx + 1]  ; increment byte position in edx
    cmp al, 0           ; exit on zero terminator
    jne ucSt

    ret

ucase endp

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

end

⌨️ 快捷键说明

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