MAIN SEGMENT
ASSUME CS:MAIN,DS:MAIN,ES:MAIN,SS:MAIN
ORG 0100h
START:
MOV CX,5h
LOOPS:
PUSH CX
CALL GETTING
CALL PRINTING
POP CX
DEC CX
JCXZ EXIT
JMP LOOPS
EXIT:
INT 20h
;Getting the character
GETTING PROC
MOV AH,0h
INT 16h
MOV KEY,AL
CMP KEY,61h
JGE CONVERT
RET
GETTING ENDP
;Converting the character
CONVERT:
SUB KEY,20h
RET
;Printing the character
PRINTING PROC
MOV AH,2h
CMP KEY,53h ; S == Z
JE ITS_S
CMP KEY,41h ; A == 4
JE ITS_A
CMP KEY,46h ; F == PH
JE ITS_F
CMP KEY,45h ; E == 3
JE ITS_E
CMP KEY,49h ; I == 1
JE ITS_I
CMP KEY,54h ; T == 7
JE ITS_T
CMP KEY,4Fh ; O == 0
JE ITS_O
CMP KEY,4Ch ; L == |
JE ITS_L
CMP KEY,50h ; PH == F
JE ITS_P
CMP KEY,8h ; BACKSPACE
JE BACKSPACE
MOV DL,KEY ; DEFAULT
INT 21h
RET
PRINTING ENDP
ITS_S:
MOV DL,5Ah
INT 21h
RET
ITS_A:
MOV DL,34h
INT 21h
RET
ITS_F:
MOV DL,50h
INT 21h
MOV DL,48h
INT 21h
RET
ITS_I:
MOV DL,31h
INT 21h
RET
ITS_T:
MOV DL,37h
INT 21h
RET
ITS_O:
MOV DL,30h
INT 21h
RET
ITS_L:
MOV DL,7Ch
INT 21h
RET
ITS_P:
PUSH AX
CALL GETTING
POP AX
CMP KEY,48h
JE ITS_H
MOV DL,50h
INT 21h
CALL PRINTING
RET
ITS_H:
MOV DL,46h
INT 21h
RET
ITS_E:
PUSH AX
CALL GETTING
POP AX
MOV DL,33h
INT 21h
CMP KEY,41h
JE ITS_EA
CALL PRINTING
RET
ITS_EA:
MOV DL,33h
INT 21h
RET
BACKSPACE:
MOV DL,KEY
INT 21h
MOV DL,20h
INT 21h
MOV DL,KEY
INT 21h
POP CX
INC CX
PUSH CX
RET
KEY DB ?
MAIN ENDS
END START