从键盘输入一个字符串,先把它原样显示一遍;然后将其中的小写字母转换为大写显示,再将其中的大写字母转换为小写显示,最后将其中的大小写字母互换显示.显示字符串的功能调用采用宏,大写转换,小写转换和大小写互换写成子程序.
要求:
(1). 编写一个完整的源程序完成题目的要求.
(2). 把子程序单独写在一个文件中,用源程序包含的方法完成题目要求.
(3). 把子程序单独汇编,用目标文件链接的方法完成题目要求.
(4). 把子程序加入到一个子程序库中,用子程序库调入的方法完成题目要求.
PUBLIC UPPERTOLOWER
DATA SEGMENT COMMON
SOURESTR DB 20
DB 0
DB 20 DUP('$')
;STR1 DB '$'
UPPERSTR DB 20 DUP('$')
LOWERSTR DB 20 DUP('$')
CHANGESTR DB 20 DUP('$')
DATA ENDS
CODE SEGMENT
UPPERTOLOWER PROC FAR
ASSUME CS:CODE,DS:DATA
MOV AX,DATA
MOV DS,AX
PUSH AX
PUSH CX
PUSH SI
PUSH BX
MOV SI,OFFSET SOURESTR +2
MOV BX,OFFSET LOWERSTR
MOV CX,20
NEXT1: MOV AL,[SI]
CMP AL,'A'
JB RESTR2
CMP AL,'Z'
JA RESTR2
OR AL, 00100000B
MOV [BX],AL
JMP EXIT1
RESTR2:
MOV [BX],AL
EXIT1:
INC SI
INC BX
LOOP NEXT1
POP BX
POP SI
POP CX
POP AX
RET
UPPERTOLOWER ENDP
CODE ENDS
END
小写字母转换为大写:
PUBLIC LOWERTOUPPER
DATA SEGMENT COMMON
SOURESTR DB 20
DB 0
DB 20 DUP('$')
; STR1 DB '$'
UPPERSTR DB 20 DUP('$')
LOWERSTR DB 20 DUP('$')
CHANGESTR DB 20 DUP('$')
DATA ENDS
CODE SEGMENT
LOWERTOUPPER PROC FAR
ASSUME CS:CODE,DS:DATA
MOV AX,DATA
MOV DS,AX
PUSH AX
PUSH CX
PUSH SI
PUSH BX
MOV SI,OFFSET SOURESTR+2
MOV BX,OFFSET UPPERSTR
MOV CX,20
NEXT2: MOV AL,[SI]
CMP AL,'a'
JB RESTR1
CMP AL,'z'
JA RESTR1
AND AL, 11011111B
MOV [BX],AL
JMP EXIT2
RESTR1:
MOV [BX],AL
EXIT2:
INC SI
INC BX
LOOP NEXT2
POP BX
POP SI
POP CX
POP AX
RET
LOWERTOUPPER ENDP
CODE ENDS
END
小写转换和大小写互换:
PUBLIC CHANGE
DATA SEGMENT COMMON
SOURESTR DB 20
DB 0
DB 20 DUP('$')
; STR1 DB '$'
UPPERSTR DB 20 DUP('$')
LOWERSTR DB 20 DUP('$')
CHANGESTR DB 20 DUP('$')
DATA ENDS
CODE SEGMENT
CHANGE PROC FAR
ASSUME CS:CODE,DS:DATA
MOV AX,DATA
MOV DS,AX
PUSH AX
PUSH CX
PUSH SI
PUSH BX
MOV SI,OFFSET SOURESTR+2
MOV BX,OFFSET CHANGESTR
MOV CX,20
NEXT3: MOV AL,[SI]
CMP AL ,'A'
JB RESTR
CMP AL,'Z'
JB LOWER2
CMP AL,'a'
JB RESTR
CMP AL,'z'
JA RESTR
AND AL, 11011111B
MOV [BX],AL
JMP EXIT3
LOWER2:
OR AL, 00100000B
MOV [BX] ,AL
JMP EXIT3
RESTR:
MOV [BX],AL
EXIT3:
INC SI
INC BX
LOOP NEXT3
POP BX
POP SI
POP CX
POP AX
RET
CHANGE ENDP
CODE ENDS
END
主程序:
EXTRN CHANGE:FAR
EXTRN UPPERTOLOWER:FAR
EXTRN LOWERTOUPPER:FAR
DISPMSG MACRO MESSAGE ;显示message字符串
MOV DX,OFFSET MESSAGE
MOV AH,9
INT 21H
MOV DL,0AH
MOV AH,02H
INT 21H
MOV DL,0DH
MOV AH,02H
INT 21H
ENDM
DATA SEGMENT COMMON
SOURESTR DB 20
DB 0
DB 20 DUP('$')
; STR1 DB '$'
UPPERSTR DB 20 DUP('$')
LOWERSTR DB 20 DUP('$')
CHANGESTR DB 20 DUP('$')
STR1 DB 'LOWER TO UPPER LETTER:$'
STR2 DB 'UPPER TO LOWER LETTER:$'
STR3 DB 'CHANGE THE LOWER AND THE UPPER LETTER:$'
DATA ENDS
CODE SEGMENT
MAIN PROC FAR
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET SOURESTR
MOV AH,0AH
INT 21H
MOV DL,0AH
MOV AH,02H
INT 21H
MOV DL,0DH
MOV AH,02H
INT 21H
;LEA DX,SOURESTR+2
;MOV AH,09H
; INT 21H
DISPMSG SOURESTR+2
CALL FAR PTR UPPERTOLOWER
DISPMSG STR2
DISPMSG LOWERSTR
CALL FAR PTR LOWERTOUPPER
DISPMSG STR1
DISPMSG UPPERSTR
CALL FAR PTR CHANGE
; MOV DX,OFFSET CHANGESTR
;MOV AH,09H
;INT 21H
DISPMSG STR3
DISPMSG CHANGESTR
MOV AX,4C00H
INT 21H
MAIN ENDP
CODE ENDS
END START
要求:
(1). 编写一个完整的源程序完成题目的要求.
(2). 把子程序单独写在一个文件中,用源程序包含的方法完成题目要求.
(3). 把子程序单独汇编,用目标文件链接的方法完成题目要求.
(4). 把子程序加入到一个子程序库中,用子程序库调入的方法完成题目要求.













































































































































































































