1.请任意输入一个字符串,将该串倒序后在屏幕上显示
DATA SEGMENT BUF DB 0FFH DB ?
DB 0FFH DUP (?)
ANS DB 0DH,0AH,0FDH DUP (?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA MOV DS,AX LEA DX,BUF MOV AH,0AH INT 21H
LEA SI,BUF[2] MOV AL,BUF[1] XOR AH,AH ADD SI,AX DEC SI LEA DI,ANS[2] XOR CH,CH MOV CL,BUF[1] AGAIN:
MOV AL,[SI] MOV [DI],AL DEC SI INC DI
LOOP AGAIN
MOV BYTE PTR[DI],'$' LEA DX,ANS MOV AH,09H INT 21H MOV AH,4CH
INT 21H
CODE ENDS END START
2.请任意输入一个字符串,统计其中空格和A的个数,并将结果显示在屏幕上 DATA SEGMENT BUF1 DB 20 DB ?
DB 20 DUP(?) NUM1 DB ? NUM2 DB ? BUF3 DB 13,10
BUF2 DB 'NUM1=',0,0,13,10,'NUM2=',0,0,'$' 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 COUNT
1
CALL FIND CALL OUTPUT MOV AX,4C00H INT 21H MAIN ENDP
INPUT PROC
MOV DX,OFFSET BUF1 MOV AH,0AH INT 21H RET INPUT ENDP
OUTPUT PROC
LEA DX,BUF3
MOV AH,9 INT 21H RET OUTPUT ENDP
COUNT PROC MOV CX,0FFFFH LEA SI,BUF1+2
AGAIN2: CMP BYTE PTR [SI],0DH JZ TO INC SI LOOP AGAIN2 TO: NOT CX RET COUNT ENDP
FIND PROC PUSH CX
LEA SI,BUF1+2
AGAIN: CMP BYTE PTR [SI],' '
JNZ T1
INC NUM1 T1: INC SI LOOP AGAIN POP CX
LEA SI,BUF1+2 AGAIN1: CMP BYTE PTR [SI],'A'
JNZ T
INC NUM2 T: INC SI
LOOP AGAIN1
MOV DL,10 MOV AL,NUM1
MOV AH,0
DIV DL OR AX,3030H
MOV WORD PTR BUF3+7,AX
MOV AL,NUM2 MOV AH,0
DIV DL
OR AX,3030H
2
MOV WORD PTR BUF3+16,AX
RET
FIND ENDP
CODE ENDS END MAIN
3.请任意输入一个字符串,将其中的空格全部删除,并将结果显示在屏幕上
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],' ' JNZ TO5 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
3
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 INC SI LOOP AGAIN5 TO3: NOT CX RET
COUNTLEN ENDP
CODE ENDS END MAIN
4.请任意输入一个字符串,将其中A换成CC,并将结果显示在屏幕上
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
4
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' JNZ TO5 CALL ADDTION
TO5: CMP BYTE PTR [BX],0DH JNZ AGAIN2 RET LOCATE ENDP
OUTPUT PROC
LEA DX,BUF1
MOV AH,9 INT 21H RET OUTPUT ENDP
ADDTION PROC PUSH BX
AGAIN3:INC BX INC COUN
CMP BYTE PTR [BX],0DH JNZ AGAIN3
AGAIN4:MOV AL, BYTE PTR [BX] MOV BYTE PTR [BX+1],AL DEC BX DEC COUN JNZ AGAIN4
POP BX MOV [BX],'CC' RET ADDTION 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
5