主题:[新手上路,请教,指点]如何求一串字符中的最大单词!
要求:1.从键盘输入一段英文(一个字符串).
2. 统计单词的个数.
3.输出最长的单词.
以下是我自己瞎弄的,见笑了[em8][em8][em8][em8]
STACK SEGMENT STACK
DW 100 DUP(?)
STACK ENDS
DATA SEGMENT
INPUT DB 200
DB ?
DB 200 DUP(?)
MAX DB 200
DB ?
DB 200 DUP(?)
N EQU $-INPUT
DATA ENDS
CODE SEGMENT'CODE'
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV ES,AX ;将ES指向DS
MOV CX,N ;循环常数送CX
;输入字符串
PUSH DI ;保护现场
PUSH AX
MOV DI,0
READLOOP: MOV AH,1 ;键盘输入
INT 21H
MOV INPUT[DI],AL
INC DI
CMP AL,0DH
JNE READLOOP
POP AX ;恢复现场
POP DI
CLD ;设置增量标志
MOV DI OFFSET INPUT ;串的偏移地址->DI
MOV AL,'20H ' ;要查找的字符(空格)->AL
MOV BX,0 ;BX中为空格的个数,先清零
LP1: REPNE SCASB ;当CX不等于0,AL不等于ES:[DI]继续搜索
INC BX ;个数+1
CMP CX,0 ;判断是否扫描完
JNZ LP1 ;未完,继续
MOV DL,BX+1
MOV AH,2 ;显示个数,空格数+1=单词数
INT 21H
MOV AX,4C00H
INT 21H
CODE ENDS
END START
2. 统计单词的个数.
3.输出最长的单词.
以下是我自己瞎弄的,见笑了[em8][em8][em8][em8]
STACK SEGMENT STACK
DW 100 DUP(?)
STACK ENDS
DATA SEGMENT
INPUT DB 200
DB ?
DB 200 DUP(?)
MAX DB 200
DB ?
DB 200 DUP(?)
N EQU $-INPUT
DATA ENDS
CODE SEGMENT'CODE'
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV ES,AX ;将ES指向DS
MOV CX,N ;循环常数送CX
;输入字符串
PUSH DI ;保护现场
PUSH AX
MOV DI,0
READLOOP: MOV AH,1 ;键盘输入
INT 21H
MOV INPUT[DI],AL
INC DI
CMP AL,0DH
JNE READLOOP
POP AX ;恢复现场
POP DI
CLD ;设置增量标志
MOV DI OFFSET INPUT ;串的偏移地址->DI
MOV AL,'20H ' ;要查找的字符(空格)->AL
MOV BX,0 ;BX中为空格的个数,先清零
LP1: REPNE SCASB ;当CX不等于0,AL不等于ES:[DI]继续搜索
INC BX ;个数+1
CMP CX,0 ;判断是否扫描完
JNZ LP1 ;未完,继续
MOV DL,BX+1
MOV AH,2 ;显示个数,空格数+1=单词数
INT 21H
MOV AX,4C00H
INT 21H
CODE ENDS
END START