TITLE PROGRAM 5-4:MOUSE BOX PROGRAM CURSOR MACRO ROW,COLUMN MOV AH,02H MOV BH,00 MOV DH,ROW MOV DL,COLUMN INT 10H ENDM DISPLAY MACRO STRING MOV AH,09H MOV DX,OFFSET STRING INT 21H ENDM FILL MACRO ROW_START,COL_START,ROW_END,COL_END,COLOR LOCAL START,AGAIN MOV DX,ROW_START START: MOV CX,COL_START AGAIN: MOV AH,0CH MOV AL,COLOR INT 10H INC CX CMP CX,COL_END JNE AGAIN INC DX CMP DX,ROW_END JNE START ENDM .MODEL SMALL .STACK .DATA MESSAGE_1 DB 'AN EXAMPLE OF HOW TO USE INTERRUPT 33H FOR MOUSE.','$' MESSAGE_2 DB 'IT WORKS!','$' MESSAGE_3 DB 'CLICK IN THE BOX TO SEE WHAT HAPPENS!','$' MESSAGE_4 DB 'No, NO, NO I SAID IN THE BOX!','$' MESSAGE_5 DB 'NOW PRESS ANY KEY TO GET BACK TO DOS. $' OLDVIDEO DB ? NEWVIDEO DB 12H .CODE MAIN PROC MOV AX,@DATA MOV DS,AX MOV AH,0FH INT 10H MOV OLDVIDEO,AL MOV AX,0600H MOV BH,07 MOV CX,0 MOV DX,184FH INT 10H MOV AH,00H MOV AL,NEWVIDEO INT 10H CURSOR 0,0 FILL 150,250,250,350,4 CURSOR 1,1 DISPLAY MESSAGE_1 CURSOR 5,22 DISPLAY MESSAGE_3 MOV AX,0000H INT 33H MOV AX,01H INT 33H BACK: MOV AX,03H INT 33H CMP BX,0001H JNE BACK CMP CX,250 JB NOT_INSIDE CMP CX,350 JA NOT_INSIDE CMP DX,150 JB NOT_INSIDE CMP DX,250 JA NOT_INSIDE CURSOR 18,18 DISPLAY MESSAGE_2 JMP EXIT NOT_INSIDE: CURSOR 20,18 DISPLAY MESSAGE_4 EXIT: MOV AH,02H INT 33H CURSOR 22,18 DISPLAY MESSAGE_5 MOV AH,07 INT 21H MOV AH,0 MOV AL,OLDVIDEO INT 10H MOV AH,4CH INT 21H MAIN ENDP END