题目:设计一个子程序,功能:将一个全是字母,以0为结尾的字符串,转化为大写
定义类似于: db 'cnversation',0
代码如下:
(由于在代码块中排版会有问题,所以就不放在里面惹)
assume cs:code
;定义要转换的字符
data segment
db 'word',0
db 'unix',0
db 'wind',0
db 'good',0
data ends
code segment
strart:mov ax,data
mov ds,ax
mov bx,0
mov cx,4 ;四个部分,循环4次
s:mov si,bx
call capital ;call capital模块
add bx,5 ;一个部分为5个字节
loop s
mov ax,4c00h
int 21H
capital:push cx ;压栈,之所以将cx,si压栈,是因为change模块中用到了cx和si,为了
push si ;为了避免冲突
change:mov cl,[si] ;当[si]为0时,整体ch,cl都为0,cx为0
mov ch,0
jcxz ok ;cx为0则跳转到ok
and byte ptr [si],11011111b ;将字符转换为大写,若用[cl]是无法转换为大写的
inc si
jmp short change
ok:pop si
pop cx
ret
code ends
end start