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

Tags: #quyển