Question No 1: a. Write an Assembly program that display “?” at eh start.
Read two characters from
the user and display them at next line in alphabetic order.
.MODEL SMALL
.STACK 100H
.DATA
st DB " first letter : $\"
stt DB " second letter : $\"
sttt DB "The given letters in alphabetical order are : $\"
n DB 13D,10D, "$\"
.CODE
MAIN PROC
MOV AX, @DATA
MOV DS, AX
MOV AH, 2
MOV DL, "?"
INT 21H
MOV AH, 9
LEA DX, n
INT 21H
LEA DX, st
INT 21H
MOV AH, 1
INT 21H
MOV BL, AL
MOV AH, 9
LEA DX, n
INT 21H
LEA DX, stt
INT 21H
MOV AH, 1
INT 21H
MOV BH, AL
MOV AH, 9
LEA DX, n
INT 21H
LEA DX, sttt
INT 21H
MOV AH, 2
CMP BL, BH
JAE @GREATER
MOV DL, BL
INT 21H
MOV DL, BH
INT 21H
JMP @END
@GREATER:
MOV DL, BH
INT 21H
MOV DL, BL
INT 21H
@END:
MOV AH, 4CH
INT 21H
MAIN ENDP
END MAIN
b. Write an Assembly program that takes hex decimal from (0 … to … 9) and (A…. to,,,,,, F) from the
user, and at next line in decimal. Program prompt the user for Continue??(Y/y) if user enter Y/y then
it repeats if other then Y/y then program got end.
.MODEL SMALL
.STACK 100H
.DATA
MSG DB 'TRY AGAIN.$'
aa DB 'ENTER A HEX DIGIT "0"..."9" OR "A".."F": $'
bb DB 10D,13D,'OUTPUT: $'
input DB 10D,13D,'DO YOU WANT ANOTHER INPUT: $'
.CODE
MAIN PROC
MOV AX,@DATA
MOV DS,AX
TOP:
MOV AH,9
LEA DX,aa
INT 21H
MOV AH,1
INT 21H
MOV BL,AL
CMP BL,30H
JL TRY_MSG
CMP BL,46H
JG TRY_MSG
CMP BL,39H
JLE DIGIT
MOV AH,9
LEA DX,bb
INT 21H
SUB BL,11H
MOV AH,2
MOV DL,31H
INT 21H
MOV DL,BL
INT 21H
AGAIN:
MOV AH,9
LEA DX,input
INT 21H
MOV AH,1
INT 21H
MOV BH,AL
MOV AH,2
MOV DL,10D
INT 21H
MOV DL,13D
INT 21H
CMP BH,'Y'
JE TOP
CMP BH,'y'
JE TOP
JMP END_
DIGIT:
MOV AH,9
LEA DX,bb
INT 21H
MOV AH,2
MOV DL,BL
INT 21H
JMP AGAIN
TRY_MSG:
MOV AH,9
LEA DX,MSG
INT 21H
JMP TOP
END_:
MOV AH,4CH
INT 21H
MAIN ENDP
END MAIN