三、实验内容、程序清单及运行结果
1.编写一个子程序,将包含任意字符,以0结尾的字符串中的小写字母转变成大写字母,描述如下。
名称:letterc
功能:将以0结尾的字符串中的小写字母转变成大写字母
参数:ds:si指向字符串首地址
代码:
DATAS SEGMENT
db "Beginner's All-purpose Symbolic Instruction Code.",0
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
mov ax,DATAS
mov ds,ax
mov si,0
call letterc
ok:
mov ah,4Ch
int 21H
letterc:
mov ch,0
mov cl,ds:[si]
jcxz ok;判断是否为零
cmp byte ptr [si],97;大写
jb no
cmp byte ptr [si],122;小写
ja no
sub byte ptr [si],20h
no:
inc si
jmp letterc
CODES ENDS
END START
思路:
通过cmp改变标志寄存器,结合ja,jb指令判断标志寄存器来实现判断大小的功能,通过jcxz进行循环判断是否为字符串结束
截图:
原来的样子: