;实验11 编写子程序
;编写一个子程序,将包含任意字符,以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 si
push cx
dec si
lcs: inc si
mov ch,0
mov cl,ds:[si] ;验证是否为0
jcxz overlc ;是的话跳转,否pass
cmp byte ptr ds:[si],61H ;验证是否小于61H
jb lcs
cmp byte ptr ds:[si],7aH ;验证是否大于7aH
ja lcs
and byte ptr ds:[si],11011111B ;进行转换大写
jmp lcs
overlc:pop cx ;还原相关寄存器数据
pop si
ret
codesg ends
end begin
;我写的有点笨拙了,cx其实可以不用,用cmp ds:[si],0 和 jz 替代但是 写的时候一个2行代码一个3行代码 觉得差不多 就没改了 嘿嘿 |