.MODEL SMALL
.STACK 100H
.DATA
PROMPT_1 DB 'Enter a line of text : $'
PROMPT_2 DB 0DH,0AH,'First Capital Letter : $'
PROMPT_3 DB 0DH,0AH,'Last Capital Letter : $'
PROMPT_4 DB 0DH,0AH,' ***** No Capital Letters *****$'
FLAG DB 0
FIRST_LETTER DB 5BH
LAST_LETTER DB 40H
.CODE
MAIN PROC
MOV AX, @DATA ; initialize DS
MOV DS, AX
LEA DX, PROMPT_1 ; load and display the string PROMPT_1
MOV AH, 9
INT 21H
MOV AH, 1 ; set input function
@INPUT: ; jump label
INT 21H ; read a character
MOV BL, AL ; set BL=AL
CMP BL, 0DH ; compare BL with CR
JE @END_INPUT ; jump to label @END_INPUT if BL=CR
CMP BL, "A" ; compare BL with "A"
JL @INPUT ; jump to label @INPUT if BL<A
MOV FLAG, 1 ; set FLAG=1
CMP BL, "Z" ; compare BL with "Z"
JG @INPUT ; jump to label @INPUT if BL>Z
CMP BL, FIRST_LETTER ; compare BL with variable FIRST_LETTER
JG @NEXT ; jump to label @NEXT if BL>FIRST_LETTER
MOV FIRST_LETTER, BL ; set FIRST_LETTER=BL
@NEXT: ; jump label
CMP BL, LAST_LETTER ; compare BL with variable LAST_LETTER
JL @INPUT ; jump to label @INPUT if BL<LAST_LETTER
MOV LAST_LETTER, BL ; set LAST_LETTER=BL
JMP @INPUT ; jump to label @INPUT
@END_INPUT: ; jump label
CMP FLAG, 1 ; compare FLAG with 1
JE @DISPLAY ; jump to label @DISPLAY if FLAG=1
LEA DX, PROMPT_4 ; load and display the string PROMPT_4
MOV AH, 9
INT 21H
JMP @END ; jump to label @END
@DISPLAY: ; jump label
LEA DX, PROMPT_2 ; load and display the string PROMPT_2
MOV AH, 9
INT 21H
MOV AH, 2 ; set output function
MOV DL, FIRST_LETTER ; set DL=FIRST_LETTER
INT 21H ; print a character
LEA DX, PROMPT_3 ; load and display the string PROMPT_3
MOV AH, 9
INT 21H
MOV AH, 2 ; set output function
MOV DL, LAST_LETTER ; set DL=LAST_LETTER
INT 21H ; print a character
@END: ; jump label
MOV AH, 4CH ; return control to DOS
INT 21H
MAIN ENDP
END MAIN
;**************************************************************************;
;**************************************************************************;
;------------------------------ THE END ---------------------------------;
;**************************************************************************;
;**************************************************************************;