8086 Game Project
8086 Game Project
INSTRUCTIONS DB 'HOLLYWOOD'
DB 'HOW TO PLAY: '
DB 0AH, 0DH, 0AH, 0DH, 'ITS A TWO PLAYER GAME. '
;-------------------------------------------
BOLLYTRIES DW 0
MOVIENAME db 100,?, 100 dup(' ')
MOVIENAMELEN DB ?
HIDINGCHAR DB 06H
SEPARATOR DB 20H
TEMP db 100,?, 100 dup(' ')
WRONGGUESSES DB 09 DUP(0)
TERMINATOR DB 24H
HIDECHARFLAG DB 0
PLAYER2FLAG DB 0
PLAYER1FLAG DB 0
COMPARECOUNTER DB ?
VALIDGUESSCOUNTER DB 0
GUESSCOUNTER DB 36
CHARCOUNTER DB 0
INVALIDGUESSCOUNTER DB 0
r ;-------------------------------------------
DATA ENDS
CODE SEGMENT
START:
CALL NEWLINEPROC
MOV AL, 3
MOV AH, 0
INT 10H
CALL NEWLINEPROC
CALL NEWLINEPROC
;************************************************************
XOR BX, BX
LEA SI, MOVIENAME
INC SI
MOV BL, [SI]
MOV MOVIENAMELEN, BL
;************************************************************
;*******************clear screen*****************************
MOV AL, 3
MOV AH, 0
INT 10H
;************************************************************
NEXTCHAR:
MOV AL, [SI]
CMP AL, 20H
JNE HIDECHAR
DEC CH
MOV DL, SEPARATOR
MOV TEMP[BX], DL
CMP HIDECHARFLAG, 0
JE SKIPHIDECHAR
HIDECHAR:
MOV DL, HIDINGCHAR
MOV TEMP[BX], DL
SKIPHIDECHAR:
INC SI
DEC CL
INC BX
CMP CL, 00H
JNE NEXTCHAR
;************************************************************
;*******display mvoie name in symbols(temp) for player 2*****
CALL NEWLINEPROC
MOV DX, OFFSET TEMP
MOV AH, 09H
INT 21H
;************************************************************
MOV BX, 0
GUESSLOOP:
MOV CL, VALIDGUESSCOUNTER
CMP CL, CHARCOUNTER
JE PLAYER2WINS_01
CALL NEWLINEPROC
MOV DX, OFFSET PLAYER2
MOV AH, 09H
INT 21H
COMPARELOOP:
CMP CL, CH
JE PLAYER2WINS_01
COMPARECHAR:
CMP AL, [SI]
JE VALIDGUESS
INC SI
INC DI
INC INVALIDGUESSCOUNTER
DEC COMPARECOUNTER
CMP COMPARECOUNTER, 0
JNE COMPARELOOP
JMP SKIPVALIDGUESS
PLAYER2WINS_01:
JMP PLAYER2WINS
GUESSLOOP_01:
JMP GUESSLOOP
VALIDGUESS:
MOV [DI], AL
INC SI
INC DI
INC VALIDGUESSCOUNTER
DEC COMPARECOUNTER
CMP COMPARECOUNTER, 0
JNE COMPARELOOP
SKIPVALIDGUESS:
CMP INVALIDGUESSCOUNTER, CH
JE BOLLYTRIESMSG
JMP SKIPBOLLYTRIESMSG
BOLLYTRIESMSG:
INC BOLLYTRIES
MOV WRONGGUESSES[BX], AL
INC BX
CMP BOLLYTRIES, 9
JE PLAYER1WINS
SKIPBOLLYTRIESMSG:
CALL GAMESTATUSPROC
DEC GUESSCOUNTER
CMP GUESSCOUNTER, 0
JNE GUESSLOOP_01
;************************************************************
CMP PLAYER2FLAG, 1
JE ENDGAME_01
PLAYER2WINS:
CALL NEWLINEPROC
CALL NEWLINEPROC
MOV PLAYER2FLAG, 1
MOV DX,OFFSET PLAYER2
MOV AH, 09H
INT 21H
JMP ENDGAME
;************************************************************
CMP PLAYER1FLAG, 1
JE ENDGAME_01
PLAYER1WINS:
CALL GAMESTATUSPROC
CALL NEWLINEPROC
CALL NEWLINEPROC
NEXTMOVIELETTER:
MOV DL, [SI]
MOV AH, 02H
INT 21H
INC SI
DEC CL
CMP CL, 0
JNE NEXTMOVIELETTER
CALL NEWLINEPROC
MOV PLAYER1FLAG, 1
MOV DX,OFFSET PLAYER1
MOV AH, 09H
INT 21H
;************************************************************
;*************procedure for newline**************************
ENDGAME_01:
JMP ENDGAME
PUSHF
PUSH AX
PUSH BX
PUSH CX
PUSH DX
NEXTLINE1:
MOV DX, OFFSET NEWLINE
MOV AH, 09H
INT 21H
LOOP NEXTLINE1
POP DX
POP CX
POP BX
POP AX
POPF
RET
NEWLINEPROC ENDP
;************************************************************
JMP ENDGAME
PUSHF
PUSH AX
PUSH BX
PUSH CX
PUSH DX
CALL NEWLINEPROC
POP DX
POP CX
POP BX
POP AX
POPF
RET
GAMESTATUSPROC ENDP
;************************************************************
;***************program termination***************************
ENDGAME:
CALL NEWLINEPROC
MOV AH, 4CH
INT 21H
;************************************************************
INT 03H
CODE ENDS
END START