;//////////////////////////////////////////////////////////////////////////
;// 存放在data中的字符串大写字母转化成小写,并显示出来 //
;/////////////////////////////////////////////////////////////////////////
assume cs:code
data segment
db "Beginner's All-purpose Symbolic Instruction Code.",0
data ends
code segment
start:
mov ax,data
mov ds,ax
mov si,0
call letterc
mov dh,8
mov dl,3
mov cl,2
call show
mov ax,4c00h
int 21h
letterc:
push si
lop:
mov cl,[si]
mov ch,0
jcxz ok
cmp cl,41h ;比较大写字母A,小于则转移
jb s
cmp cl,5ah ;比较大写字母Z,大于则转移
ja s
or cl,00100000b ;大写字母转换小写字母
mov [si],cl
s:
inc si
loop lop
ok:
pop si
ret
show:
push si
mov ax,0b800h
mov es,ax
mov al,0a0h
mul dh
mov bx,ax
mov dh,0
add bx,dx
inc bx ;颜色放在奇数位上,显示的字符应该放在偶数位上,计算显示字符串的起始位置
mov al,cl
mov ch,0
writ:
mov cl,[si]
jcxz over
mov byte ptr es:[bx],cl
mov byte ptr es:[bx+1],al
add bx,2
inc si
jmp short writ
over:
pop si
ret
code ends
end start |