将以0结尾的字符串中的小写字母转变为大写字母
; Name: letterc
; Function: Converts character c in the string end with 0 to its uppercase equivalent if c is a lowercase letter and has an uppercase equivalent
; Parameter:ds:si is the address of the first byte
assume cs:codesg,ds:datasg,ss:stacksg
datasg segment
db "Beginner's All-purpose Symbolic Instruction Code.",0
datasg ends
stacksg segment
db 32 dup(0)
stacksg ends
codesg segment
begin:
mov ax,stacksg
mov ss,ax
mov sp,32
mov ax,datasg
mov ds,ax
mov si,0
call letterc
mov ax,4c00h
int 21h
letterc:
push cx
push si
s:
push cx
mov cx, ds:[si]
jcxz ok ;if ([si]) == 0 break
pop cx
cmp byte ptr ds:[si], 'a'
jb next ; if ([si]) < 'a' continue
cmp byte ptr ds:[si], 'z'
ja next
and byte ptr ds:[si], 11011111B ; converts to uppercase
next:
inc si
inc cx
loop s
ok:
pop cx
pop si
pop cx
ret
codesg ends
end begin