| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
;编写一个子程序,将包含任意字符,以0结尾的字符串中的小写字母转变成大写字母。 
;名称:letter 
;功能:将以0结尾的字符串中的小写字母转变成大写字母 
;参数:ds:si指向字符串首地址 
 
assume cs:codesg 
datasg segment 
db "Beginner's All-purpose Symbolic 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:push ds                 ;开始子程序前,将子程序用到一寄存器的内容入栈保存 
push cx 
push si 
 
 
s1:mov cl,ds:[si] 
mov ch,0 
jcxz ok                          ;见到0,就跳转到ok处,准备结束子程序 
cmp byte ptr ds:[si],'a'        ;内存字节单元与a比较 
jb s0                           ;低于a,则跳转到s0,继续循环 
cmp byte ptr  ds:[si],'z'       ;内存字节单元与z比较 
ja s0                           ;高于z,则跳转到s0,继续循环 
and byte ptr ds:[si],11011111b   ;小写字母转为大写字母 
s0:inc si 
jmp short s1 
 
 
 
 
 
ok:pop si   ;在子程序返回前,将入栈的寄存器内容出栈恢复。 
pop cx 
pop ds 
ret 
 
codesg ends 
end begin 
 
 |   
 
 
 
 |