;王爽《汇编语言》实验11(带详细注释和图片)
;实验11:编写子程序
;将包含任意字符,以0结尾的字符串中的小写字母转变为大写字母
;名称:letterc
;功能:将以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 cx ;子程序用到的寄存器入栈
push ds ;子程序用到的寄存器入栈
push si ;子程序用到的寄存器入栈
s: mov cl,ds:[si] ;用cx来判断是否到字符串结尾
mov ch,0
jcxz fanhui ;到字符串结尾,返回
cmp cx,'a'
jb next ;不是小写字母,判断下一字节
cmp cx,'z'
ja next ;超过小写字母最大的ascii码,判断下一字节
and cl,11011111B ;小写字母变大写字母
mov ds:[si],cl ;将大写字母写回原处
next: inc si ;下一字节
jmp short s ;继续判断
fanhui:
pop si ;子程序用到的寄存器出栈,注意顺序
pop ds ;同上
pop cx ;同上
ret
codesg ends
end begin
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;向大家学习。
;链接地址:http://www.asmedu.net/blog/user/postcontent.jsp?neighborId=37247&kindId=52075&postId=50852&readSg=1 |