;------------------------------------------------------------------------------------------
; ASSIGNMENT NO : 7
; TITLE : WRITE ALP FOR MOUSE INTERFACE
;------------------------------------------------------------------------------------------
PRINT MACRO MSG
LEA DX,MSG
MOV AH,09H
INT 21H
ENDM
DATA SEGMENT
MSGMENU DB 10,13," --------------- : MENU : --------------- "
DB 10,13," TO SHOW THE MOUSE POINTER -> PRESS \'S\' : "
DB 10,13," TO HIDW THE MOUSE POINTER -> PRESS \'H\' : "
DB 10,13," TO SHOW X & Y CO-ORDINATE -> PRESS \'R\' : "
DB 10,13," TO DRAW A RECLANGLE -> PRESS \'D\' : "
DB 10,13," TO EXIT FROM THE MENU -> PRESS \'Q\' : "
DB 10,13," TO PRODUCE BEEP -> PRESS \'B\' : "
DB 10,13," ---------------------------------------- $ "
MSGCH DB 10,13," ENTER YOUR CHOICE : $ "
AXIS DB 10,13," CO-ORDINATES : $ "
XAXIS DB 10,13," X-AXIS : $ "
YAXIS DB 10,13," Y-AXIS : $ "
RECT DB 10,13," RECTANGLE : $ "
BEEP DB 10,13," BEEP WILL BE PRODUCED WHEN MOUSE POINTER IS AT POSITION (0,0) ..! $ "
TEMP DB ?
X DW ?
Y DW ?
DATA ENDS
ASSUME CS:CODE, DS:DATA
CODE SEGMENT
START :
MOV AX,DATA
MOV DS,AX
MOV AX,12H ;INITIALISE GRAPHICS MODE
INT 10H
BEGIN :
PRINT MSGMENU
PRINT MSGCH
NO :
MOV AH,11H ;INTERRUPT TO CHECK STATUS OF KEYBOARD
INT 16H
JNZ S1 ;CLEARED IF PREESED
JZ NO
S1:
MOV AH,08H
INT 21H
CMP AL,54H
JE CH1
CMP AL,"s"
JE CH1
CMP AL,48H
JE CH2
CMP AL,"h"
JE CH2
CMP AL,"Q"
JE CH3
CMP AL,"q"
JE CH3
CMP AL,"R"
JE CH4
CMP AL,"r"
JE CH4
CMP AL,"D"
JE CH5
CMP AL,"d"
JE CH5
CMP AL,"b"
JE CH6
CMP AL,"B"
JE CH6
CH1 :
CALL C1
JMP BEGIN
CH2 :
CALL C2
JMP BEGIN
CH3 :
CALL C3
MOV AH,4CH
INT 21H
CH4 :
CALL C4
JMP BEGIN
CH5 : CALL C5
JMP BEGIN
CH6 : CALL C6
JMP BEGIN
C1 PROC NEAR
MOV AX,01H
INT 33H
RET
C1 ENDP
C2 PROC NEAR
MOV AX,02H
INT 33H
RET
C2 ENDP
C3 PROC NEAR
MOV AX,03H
INT 10H
RET
C3 ENDP
C4 PROC NEAR
MOV AX,03H
INT 33H
PRINT AXIS
MOV X,CX
MOV Y,DX
PRINT XAXIS
MOV CX,X
MOV TEMP,CH
CALL DISPLAY
MOV CX,X
MOV TEMP,CL
CALL DISPLAY
MOV AX,03H
INT 33H
MOV X,CX
MOV Y,DX
PRINT YAXIS
MOV DX,Y
MOV TEMP,DH
CALL DISPLAY
MOV DX,Y
MOV TEMP,DL
CALL DISPLAY
RET
C4 ENDP
C5 PROC NEAR
PRINT RECT
MOV CX,500
MOV DX,250
LINE1:
MOV AL,0BH
MOV AH,0CH
INT 10H
INC CX
CMP CX,590
JNE LINE1
LINE2:
MOV AL,0AH
MOV AH,0CH
INT 10H
DEC DX
CMP DX,190
JNE LINE2
LINE3:
MOV AL,0EH
MOV AH,0CH
INT 10H
DEC CX
CMP CX,500
JNE LINE3
LINE4:
MOV AL,0DH
MOV AH,0CH
INT 10H
INC DX
CMP DX,250
JNE LINE4
RET
C5 ENDP
C6 PROC NEAR
PRINT BEEP
A1: MOV AH,11H
INT 16H
JNZ A4
MOV AX,03H ;GET MOUSE CO-ORDINATES
INT 33H
CMP CX,0
JE A2
JMP A1
A2: CMP DX,0
JE A3
JMP A1
A3: CALL C4
MOV DL,7
MOV AH,2
INT 21H
JMP A1
A4: RET
C6 ENDP
DISPLAY PROC NEAR
MOV AL,TEMP
AND AL,0F0H
MOV CL,04H
SHR AL,CL
CMP AL,09H
JBE L1
ADD AL,07H
L1:
ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H
MOV AL,TEMP
AND AL,0FH
CMP AL,09H
JBE L2
ADD AL,07H
L2:
ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H
RET
DISPLAY ENDP
CODE ENDS
END START
;------------------------------------------------------------------------------------------
; END OF THE PROGRAM
;------------------------------------------------------------------------------------------