实验11 编写子程序
- 题目要求:将包含任意字符,以0结尾的字符串中的小写字母转变成大写字母
实际运行
全部的小写字母转换成大写字母.png
完整源码
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 si
push ds
s: mov cl,ds:[si]
mov ch,0
jcxz ok
cmp cl,61H
jb s0
cmp cl,7AH
ja s0
add cl,11011111B
mov ds:[si],cl
s0: inc si
loop s
ok: pop ds
pop si
pop cx
ret
codesg ends
end begin
代码说明
- 字符串中不仅有字母还有符号、空格等等, 所以不能对全部的数据都进行and运算
- 必须用ASCII码中小写字母的范围,闭区间的 [61H,7AH] 来判断小写字母
- 闭区间 的子程序结构
s: ... 控制循环...
cmp cl,61H
jb s0
cmp cl,7AH
ja s0
... 小写字母的操作...
s0: inc si
loop s
代码参考
- 大小写转换 https://www.jianshu.com/p/7c55d6debcb0
- 子程序条件指令结构 闭区间 检测点11.3 第(1)问
https://www.jianshu.com/p/d0dbfe6a98e2