LOOP AGAIN5 TO3: NOT CX RET COUNTLEN ENDP
CODE ENDS END MAIN
5.请任意输入一个字符串,将其中大写字母换成小写字母,并将结果显示在屏幕上
DATA SEGMENT BUF1 DB 20 DB ?
BUF4 DB 20 DUP(?) BUF3 DB 13,10 BUF2 DB 20 DUP(?) COUN DB 0 DATA ENDS
CODE SEGMENT
ASSUME CS:CODE ,ES:DATA,DS:DATA
MAIN PROC FAR MOV AX,DATA MOV DS,AX MOV ES,AX
CALL INPUT CALL LOCATE CALL PREPARE
CALL OUTPUT MOV AX,4C00H INT 21H MAIN ENDP
INPUT PROC
MOV DX,OFFSET BUF1 MOV AH,0AH INT 21H RET INPUT ENDP
LOCATE PROC LEA BX,BUF1+2 DEC BX AGAIN2:INC BX
CMP BYTE PTR [BX],'A' JB TO5
CMP BYTE PTR [BX],'Z' JAE TO5 CALL CHANGE
TO5: CMP BYTE PTR [BX],0DH JNZ AGAIN2 RET LOCATE ENDP
OUTPUT PROC
LEA DX,BUF1
MOV AH,9
6
INT 21H RET OUTPUT ENDP
CHANGE PROC
ADD BYTE PTR [BX],20H RET CHANGE ENDP
PREPARE PROC CALL COUNTLEN LEA SI,BUF4 ADD SI,CX
MOV BYTE PTR [SI],'$' LEA SI,BUF1 MOV [SI],0D0AH RET PREPARE ENDP
COUNTLEN PROC MOV CX,0FFFFH LEA SI,BUF1+2
AGAIN5: CMP BYTE PTR [SI],0DH JZ TO3 INC SI LOOP AGAIN5 TO3: NOT CX RET COUNTLEN ENDP
CODE ENDS
END MAIN
6.请任意输入一个字符串,将其中的英文字母全部删除,并将结果显示在屏幕上。
DATA SEGMENT BUF1 DB 20 DB ?
BUF4 DB 20 DUP(?) BUF3 DB 13,10 BUF2 DB 20 DUP(?) COUN DB 0 DATA ENDS
CODE SEGMENT
ASSUME CS:CODE ,ES:DATA,DS:DATA
MAIN PROC FAR MOV AX,DATA MOV DS,AX MOV ES,AX
CALL INPUT CALL LOCATE CALL PREPARE CALL OUTPUT MOV AX,4C00H INT 21H MAIN ENDP
7
INPUT PROC
MOV DX,OFFSET BUF1 MOV AH,0AH INT 21H RET INPUT ENDP
LOCATE PROC LEA BX,BUF1+2 DEC BX AGAIN2:INC BX
CMP BYTE PTR [BX],'A' JB TO5
CMP BYTE PTR [BX],'z' JA TO5
CMP BYTE PTR [BX],'a' JAE TO6
CMP BYTE PTR [BX],'Z' JBE TO6 JMP TO5 TO6: CALL DELETE
TO5: CMP BYTE PTR [BX],0DH JNZ AGAIN2 RET LOCATE ENDP
OUTPUT PROC
LEA DX,BUF1
MOV AH,9
INT 21H RET OUTPUT ENDP
DELETE PROC PUSH BX
AGAIN3:CMP BYTE PTR [BX],0DH JZ TO2
MOV AL, BYTE PTR [BX+1] MOV BYTE PTR [BX],AL INC BX JMP AGAIN3 TO2: POP BX DEC BX RET PREPARE PROC CALL COUNTLEN LEA SI,BUF4 ADD SI,CX
MOV BYTE PTR [SI],'$' LEA SI,BUF1 MOV [SI],0D0AH RET PREPARE ENDP
COUNTLEN PROC MOV CX,0FFFFH LEA SI,BUF1+2
AGAIN5: CMP BYTE PTR [SI],0DH JZ TO3
8
INC SI LOOP AGAIN5 TO3: NOT CX RET COUNTLEN ENDP
CODE ENDS END MAIN
7.现有一组字符串为
data,name,time,file,code,path,user,exit,quit,text,请编写程序从键盘输入4个字符的字符串,若存在将其修改为disk, 并将结果在显示器上显示
DATA SEGMENT OUT1 DB 13,10
BUF1 DB 'data name time file code path user exit quit text$' BUF2 DB 5 DB ?
BUF DB 5 DUP(?) BUF0 DB 'disk' DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA
MAIN PROC FAR MOV AX,DATA MOV DS,AX MOV ES,AX
CALL INPUT CALL FIND CALL OUTPUT MOV AX,4C00H INT 21H MAIN ENDP
INPUT PROC
MOV DX,OFFSET BUF2 MOV AH,0AH INT 21H RET INPUT ENDP
OUTPUT PROC
LEA DX,OUT1
MOV AH,9 INT 21H RET OUTPUT ENDP
FIND PROC
LEA BX,BUF1
MOV CX,10 AGAIN: MOV SI,BX LEA DI,BUF PUSH CX
MOV CX,4
REPZ CMPSB
9
JZ TO JMP TP2 TO: CALL CHANGE TP2 : POP CX ADD BX,5 LOOP AGAIN
RET
FIND ENDP
CHANGE PROC MOV AX,WORD PTR buf0 MOV WORD PTR [BX],AX MOV AX,WORD PTR buf0+2 MOV WORD PTR [BX+2],AX
RET
CHANGE ENDP
CODE ENDS END MAIN
8.现有一组字符串为
ram,yes,red,the,get,for,and,key,not,may,请编写程序将他们按ASCII大小排序,并在显示器上显示。
DATA SEGMENT
BUF1 DB 'ram yes red the get for and key not may $' MIN DB 4 DATA ENDS CODE SEGMENT
ASSUME CS:CODE,ES:DATA,DS:DATA
MAIN PROC FAR MOV AX,DATA MOV ES,AX MOV DS,AX
CALL INORDER CALL OUTPUT
MOV AX,4C00H INT 21H MAIN ENDP
OUTPUT PROC LEA DX,BUF1 MOV AH,09H INT 21H
RET
OUTPUT ENDP
INORDER PROC MOV SI,0
MOV CX,10
AGAIN: MOV BX,SI MOV DI,SI ADD DI,4 PUSH CX
MOV CX,10
MOV AX,DI DIV MIN
10