将包含任意字符,以0结尾的字符串中的小写字母转化为大写字母。
代码如下:
;将以0结尾的字符串中的小写字母转化为大写字母
assume cs:codesg,ds:datasg
datasg segment
db "Beijinner's All-purpose Symobolic Instruction Code.",0
datasg ends
codesg segment
begin:mov ax,datasg
mov ds,ax
mov si,0
call letterc
mov ax,4c00h
int 21h
letterc:
s:mov cx,0
mov cl,[si]
inc si
jcxz ok
cmp cl,61h;a的ascii码,低于则转移
jb s
cmp cl,7ah;z的ascii码,高于则转移
ja s
sub si,1
sub byte ptr [si],20h
add si,1
jmp s
ok:ret
codesg ends
end begin
首先判断是否是结尾的0,不是则si+1。再判断是否为小写字母,不是就不用对数据段中的此处进行操作,直接跳转至下一循环,如果是,先si-1,将[si]处的ascii码-20h就变成大写,然后再循环,直到[si]=0为止,
执行结果: