王爽汇编语言 实验11 个人学习笔记
编写一个子程序
名称:letter
功能:将以0结尾的字符串中的小写字母转变为大写字母
参数:ds:si指向字符串首地址
思路:
题目要求只将小写字母变为大写,剩余其他不变,而26个小写字母在ASCII码中对应的是97-122的十进制数,所以每次判断一个字节前先比较这个字节的数是否在这一范围内,然后通过小写字母二进制第五位上是1,大写字母第五位上是0的区别,通过与运算将字母变大写
代码:
assume cs:codesg
datasg segment
db "Beginner's All-purpose Symbolic Instruction Code.",0
datasg ends
codesg segment
begin:mov ax,datasgt
mov ds,ax
mov si,0
call letterc
mov ax,4c00h
int 21h
letterc:push si
mov ch,0
a: mov cl,[si]
jcxz ok
cmp cl,97
jb s
cmp cl,122
ja s
and cl,11011111b
mov [si],cl
s: inc si
jmp short a
ok: pop si
ret
codesg ends
end begin