toupper
.stack 100
.data
STR DB 100 DUP(?) ; char STR[100]
.code
MAIN PROC
mov ax, @data
mov ds, ax
; gets(STR)
mov ah, 10
lea edx, STR
int 21h
; toupper(STR)
lea eax, STR
push eax
CALL TOUPPER
; puts(STR)
mov ah, 9
lea edx, STR
int 21h
; exit to DOS
mov ah, 4Ch
int 21h
MAIN ENDP
TOUPPER PROC
; c?t các thanh ghi vào stack, gán d?a ch? offset c?a tham s? cho ebx
push ebp
mov ebp, esp
push eax
push edi
mov ebx, [ebp + 16]
; duy?t xâu ký t?
xor edi, edi
FOR:
mov al, [ebx][edi] ; al ch?a mã ký t? dang duy?t
; ki?m tra di?u ki?n k?t thúc vòng for
cmp al, 13
je END_FOR
; d?i ký t? thu?ng thành ký t? in hoa
cmp al, 'a'
jb NO_CHANGE
cmp al, 'z'
ja NO_CHANGE
sub al, 20h
mov [ebx][edi], al
NO_CHANGE:
inc edi ; duy?t ký t? ti?p theo
jmp FOR
END_FOR:
; khôi ph?c các thanh ghi
pop edi
pop eax
pop ebp
TOUPPER ENDP
END MAIN
Bạn đang đọc truyện trên: AzTruyen.Top