;寄存器传递参数
;从键盘输入一组字符,直到输入“0”为止,编写子程序,完成如下功能:
;若输入的是小写字符,转换成大写,最后将字符串输出。
;主程序
data1 SEGMENT
string DB 100 DUP(?)
data1 ENDS
;
stack1 SEGMENT STACK
DB 256 DUP(?)
stack1 ENDS
;
code1 SEGMENT
ASSUME CS:code1,DS:data1,SS:stack1
start: MOV AX,data1
MOV DS,AX
MOV DI,OFFSET string
again: MOV AH,1
INT 21H ;有回显地输入一个字符
CMP AL,'0'
JE over
CALL NEAR PTR l2upper
MOV [DI],AL
INC DI
JMP again
over: MOV DL,10 ;换行符
MOV AH,2
INT 21H
MOV DL,13 ;回车符
MOV AH,2
INT 21H
MOV [DI],'$(编译时去掉此处括号)' ;字符串结束符
MOV DX,OFFSET string
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
;子程序:同一个代码段
;子程序名:l2upper
;作用:判断一个字符是否为大写,若不为大写,则lower case to upper case
;入口参数:AL存放原字符
;出口参数:AL存放处理完的字符
l2upper PROC NEAR
CMP AL,'a'
JB next
CMP AL,'z'
JA next
SUB AL,20H ;转为大写字母
next: RET ;退出子程序
l2upper ENDP
code1 ENDS
END start