Write an ALP to count the no. of words and display the count and the words in separate lines on a defined window (5,10 and 20,70) with white on blue attribute.
SOLUTION:
SOLUTION:
- Code:
TITLE COUNT AND DISPLAY THE WORDS
DOSSEG
.STACK 64H
.DATA
REQ DB 'ENTER THE LINE OF TEXT:',0AH,0DH,'$'
WDN DB 'The Total No. Of Words are: ','$'
WDS DB 0AH,0DH,' The Words are:',0DH,0AH,' $'
NXLN DB 0AH,0DH,' $'
DOT DB '- $'
MAXM DB 50H
ACT DB ?
CHAR DB 50H DUP (?)
TEMP DB 02 DUP (?)
DIVS DB 0AH
.CODE
MAIN PROC
MOV AX,@DATA
MOV DS,AX
MOV ES,AX
LEA DX,REQ
MOV AH,09H
INT 21H
MOV AH,0AH
LEA DX,MAXM
INT 21H
MOV AH,06H
MOV AL,00
MOV BH,17H ;White on Blue
MOV CX,050AH
MOV DH,20
MOV DL,70
INT 10H
MOV AH,02
MOV BH,00H
MOV DX,050AH
INT 10H
MOV BX,01
MOV CH,00
MOV CL,ACT
MOV DI,OFFSET CHAR
ADD DI,CX
MOV [DI],'$'
Agn: CMP [DI],' '
JNE Skip
INC BL
MOV [DI],'$'
PUSH DI
Skip: DEC DI
LOOP Agn
LEA DX,WDN
MOV AH,09H
INT 21H
MOV CL,BL
CALL DISPBX
MOV BX,01H
MOV AH,09H
MOV DX,OFFSET WDS
INT 21H
PUSH OFFSET ACT
Redisp:
LEA DX,NXLN
INT 21H
MOV DX,OFFSET DOT
INT 21H
POP DX
INC DX
INT 21H
INC BX
LOOP Redisp
MOV AX,4C00H
INT 21H
MAIN ENDP
DISPBX PROC
MOV AX,BX
MOV SI,00
Rediv: DIV DIVS
MOV TEMP[SI],AH
MOV AH,00
INC SI
TEST AL,0FFH
JNZ Rediv
MOV AH,02
Nextdgt: DEC SI
MOV DL,TEMP[SI]
ADD DL,30H
INT 21H
TEST SI,0FFFH
JNE Nextdgt
RET
DISPBX ENDP
END MAIN