从键盘输入一个字符串,先把它原样显示一遍;然后将其中的小写字母转换为大写显示,再将其中的大写字母转换为小写显示,最后将其中的大小写字母互换显示.显示字符串的功能调用采用宏,大写转换,小写转换和大小写互换写成子程序.
要求:
(1). 编写一个完整的源程序完成题目的要求.
(2). 把子程序单独写在一个文件中,用源程序包含的方法完成题目要求.
(3). 把子程序单独汇编,用目标文件链接的方法完成题目要求.
(4). 把子程序加入到一个子程序库中,用子程序库调入的方法完成题目要求.
要求:
(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
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