/*
Write a program that will prompt the user to enter a hex digit character ("0"..."9" or "A".."B"),display
it on the next line in decimal,and ask the user if he or she wants to do it again. if the user types "Y" or "y", the program repeats; if the user types anything else theprogram terminates. if the user enters an illegal character,prompt the user to try again.
*/
/*
*
* Prosen Ghosh
* American International University - Bangladesh (AIUB)
*
*/
Solution:
.MODEL SMALL
.STACK 100H
.DATA
FPROMPT DB 0AH,0DH,'ENTER A HEX DIGIT: $'
INPUTVAL DB ?
ONE DB 0AH,0DH,'1$'
MSG DB 0AH,0DH,'SO YOU WANT TO DO IT AGAIN? $'
IL DB 0AH,0DH,'ILLEGAL CHARACTER-ENTER 0..9 OR A..F: $'
.CODE
MAIN PROC
MOV AX,@DATA
MOV DS,AX
TOP:
MOV AH,9
LEA DX,FPROMPT
INT 21H
MOV AH,1
INT 21H
MOV INPUTVAL,AL
CMP AL,30H
JNGE CHARACTER
CMP AL,39H
JNLE CHARACTER
MOV AH,2
MOV DL,0AH
INT 21H
MOV DL,0DH
INT 21H
MOV DL,INPUTVAL
INT 21H
MOV AH,9
LEA DX,MSG
INT 21H
MOV AH,1
INT 21H
CMP AL,'Y'
JE TOP
CMP AL,'y'
JE TOP
JMP END_
LOOP TOP
CHARACTER:
MOV BL,INPUTVAL
CMP BL,'A'
JNGE ILLIGAL
CMP BL,'F'
JNLE ILLIGAL
SUB BL,11H
MOV AH,9
LEA DX,ONE
INT 21H
MOV AH,2
MOV DL,BL
INT 21H
MOV AH,9
LEA DX,MSG
INT 21H
MOV AH,1
INT 21H
CMP AL,'Y'
JE TOP
CMP AL,'y'
JE TOP
JMP END_
ILLIGAL:
MOV AH,9
LEA DX,IL
INT 21H
MOV AH,2
MOV DL,0AH
INT 21H
MOV DL,0DH
INT 21H
JMP TOP
END_:
MOV AH,4CH
INT 21H
MAIN ENDP
END MAIN
0 nhận xét:
Đăng nhận xét