📄 p20.asm
字号:
.model small
.stack 100
TITLE TOTAL
; (THIS PROGRAM GIVES THE TOTAL NUMBERS, ALPHABETS, SPECIAL
; CHARACTERS IN THE GIVEN STRING)
.data
BUF DB 80 ;(MAX LENGTH OF ARRAY)
DB 00 ;(ACTUAL LENGTH OF ARRAY)
DB 80 DUP (0) ;(STARTING OF ARRAY)
STR1 DB 10,13,'ENTER THE STRING:$'
STR2 DB 10,13,'TOTAL NO:$'
STR3 DB 10,13,'TOTAL ALPHABETS:$'
STR4 DB 10,13,'TOTAL SPECIAL CHAR:$'
NUM DB 0
SPC DB 0
ALPHA DB 0
.code
START: MOV AX,@data ; Initialisation
MOV DS,AX
MOV AH,09H
MOV DX,OFFSET STR1 ; Address of STR1
INT 21H
MOV AH,0AH
MOV DX,OFFSET BUF ; Address of max length
INT 21H
MOV BX,OFFSET BUF
INC BX ; Address of actual
MOV DL,[BX] ; Length
INC BX ; Starting of array
NEXT: MOV AL,[BX]
CMP AL,30H
JB INCSPC ; SPC character
CMP AL,3AH ; If < 3AH it is a number
JB INCNUM
CMP AL,41H ; Between 3AH & 41H it
JB INCSPC ; SPC character
CMP AL,5BH ; If < 5BH it is a alphabet
JB INALP
CMP AL,61H ; Between 5BH & 61H it
JB INCSPC ; Is a SPC char
CMP AL,7BH ; If < 7BH it is a alphabet
JB INALP
INCSPC: MOV AL,SPC
ADD AL,01H ; INCR SPC counter
DAA
MOV SPC,AL
INC BX ; Next character
DEC DL ; DECR counter
JNZ NEXT
JMP DISPLY
INCNUM: MOV AL,NUM
ADD AL,01H ; INCR number counter
DAA
MOV NUM,AL
INC BX
DEC DL
JNZ NEXT
JMP DISPLY
INALP: MOV AL,ALPHA
ADD AL,01H ; INCR ALPHABET COUNTER
DAA
MOV ALPHA,AL
INC BX
DEC DL
JNZ NEXT
JMP DISPLY
DISPLY: MOV DX,OFFSET STR2 ; ADDRS of STR2
MOV AH,09H
INT 21H
MOV AL,NUM
AND AL,0F0H ; Get MSB in AL rotate AL
MOV CL,04H ; Four times
ROR AL,CL
ADD Al,30H ; Convert to ASCII
MOV DL,AL
MOV AH,02H ; Output character
INT 21H
MOV AL,NUM
AND AL,0FH ; Get LSB in AL
ADD AL,30H
MOV DL,AL ; Convert to ASCIII
INT 21H
MOV DX,OFFSET STR3 ; Address of STR34
MOV AH,09H ; Output character string
INT 21H
MOV AL,ALPHA
AND AL,0F0H
MOV CL,04H
ROR AL,CL
ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H
MOV AL,ALPHA
AND AL,0FH
ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H
MOV DX,OFFSET STR4 ; ADDRS of STR4
MOV AH,09H
INT 21H
MOV AL,SPC
AND AL,0F0H
MOV CL,04
ROR AL,CL
ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H
MOV AL,SPC
AND AL,0FH
ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H
MOV AH,4CH ; Terminate program
INT 21H
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -