0% found this document useful (0 votes)
356 views

8086 Game Project

This document contains the data and code segments for a two-player guessing game written in assembly language. The game involves one player entering a movie name for the other to guess character by character. If a guessed character is incorrect, it deducts from the "BOLLYWOOD" word. The goal is for Player 2 to guess the full movie name before BOLLYWOOD is depleted, while Player 1 aims to prevent this. The code initializes variables, gets player input, compares guesses, tracks wins/losses, and displays the game status.

Uploaded by

patel_savan28
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
356 views

8086 Game Project

This document contains the data and code segments for a two-player guessing game written in assembly language. The game involves one player entering a movie name for the other to guess character by character. If a guessed character is incorrect, it deducts from the "BOLLYWOOD" word. The goal is for Player 2 to guess the full movie name before BOLLYWOOD is depleted, while Player 1 aims to prevent this. The code initializes variables, gets player input, compares guesses, tracks wins/losses, and displays the game status.

Uploaded by

patel_savan28
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 8

DATA SEGMENT

;---- initialising necessary messages ----

INSTRUCTIONS DB 'HOLLYWOOD'
DB 'HOW TO PLAY: '
DB 0AH, 0DH, 0AH, 0DH, 'ITS A TWO PLAYER GAME. '

DB 0AH, 0DH,0AH,0DH, 'FIRST PLAYER 1 ENTERS MOVIE NAME ABOUT WHICH


PLAYER 2 SHOULD BE UNKNOWN. '
DB 0AH, 0DH, '(OF COURSE ONLY UNTILL PLAYER 2 PEEKS!!!) '
DB 0AH, 0DH, 0AH,0DH, 'NOW AS PLAYER 1 HAS ENTERED THE MOVIE, PLAYER 2
TRIES TO GUESS THE MOVIE NAME BY GUESSING IT CHARACTER BY CHARACTER. '
DB 0AH, 0DH,0AH,0DH, 'IF CHARACTER IS THERE IN THE MOVIE NAME ITS
DISPLAYED, ELSE CHANCE IS DEDUCTED FROM WORD BOLLYWOOD. '
DB 0AH, 0DH, 0AH,0DH,'THUS, PLAYER 2 CAN STAND ONLY UNTILL HOLLYWOOD IS
STANDING!!! IT SOUNDS COOL, RIGHT? LETS PLAY THEN...$'

PLAYER1 DB 'PLAYER1 $'


PLAYER2 DB 'PLAYER2 $'
INPUTMSG DB 'ENTER MOVIE NAME- $'
REMAININGTRIESMSG DB 0AH, 0DH, 'YOUR REMAINING TRIES : $'
WINMSG DB 'WINS THE GAME!!!$'
GUESSMSG DB 'GUESS YOUR CHARACTER: $'
STATUSMSG DB 'YOUR MOVIE STATUS : $'
WRONGGUESSESMSG DB 0AH, 0DH, 'YOUR WRONG GUESSES ARE: $'
CONTINUEMSG DB 'DO YOU LIKE TO CONINUE? (Y/N): $'
INVALIDCHOICEMS DB 'YOU ENTERED INVALID CHOICE!!!$'
CONGRATULATIONS DB ' CONGRATULATIONS... $'
CORRECTMOVIEMSG DB 'THE CORRECT MOVIE WAS: $'
BOLLY DB ' HOLLYWOOD$'

;-------------------------------------------

;---- initialising necessary variables -----

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

NEWLINE DB 0AH,0DH, '$'


NEWLINECOUNT DW 2

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

ASSUME CS:CODE, DS:DATA, ES:DATA

START:

MOV AX,DATA ;initialising data segment


MOV DS,AX ;and extra segment
MOV ES,AX ;registers

;***** instructions and palyer 1 enter the movie name********

CALL NEWLINEPROC

MOV AL, 3
MOV AH, 0
INT 10H

MOV DX, OFFSET INSTRUCTIONS


MOV AH, 09H
INT 21H

CALL NEWLINEPROC
CALL NEWLINEPROC

MOV DX,OFFSET PLAYER1


MOV AH,09H
INT 21H

MOV DX,OFFSET INPUTMSG


MOV AH,09H
INT 21H

MOV DX,OFFSET MOVIENAME


MOV AH,0AH
INT 21H

;************************************************************

;*********calculate length of movie name*********************

XOR BX, BX
LEA SI, MOVIENAME
INC SI
MOV BL, [SI]
MOV MOVIENAMELEN, BL

;************************************************************

;*******************clear screen*****************************

MOV AL, 3
MOV AH, 0
INT 10H

;************************************************************

;************ make temp as array of symbols******************

MOV CL, MOVIENAMELEN


MOV CH, CL

LEA SI, MOVIENAME+2


MOV BX, 0

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

MOV TEMP[BX], '$'


MOV CHARCOUNTER, CH

;************************************************************
;*******display mvoie name in symbols(temp) for player 2*****

CALL NEWLINEPROC
MOV DX, OFFSET TEMP
MOV AH, 09H
INT 21H

;************************************************************

;************* player2 enters guesses ************************

MOV BX, 0

GUESSLOOP:
MOV CL, VALIDGUESSCOUNTER
CMP CL, CHARCOUNTER
JE PLAYER2WINS_01

MOV AH, MOVIENAMELEN


MOV COMPARECOUNTER, AH
MOV INVALIDGUESSCOUNTER, 0

CALL NEWLINEPROC
MOV DX, OFFSET PLAYER2
MOV AH, 09H
INT 21H

MOV DX, OFFSET GUESSMSG


MOV AH, 09H
INT 21H

MOV AH, 01H


INT 21H
LEA SI, MOVIENAME+2
LEA DI, TEMP

COMPARELOOP:
CMP CL, CH
JE PLAYER2WINS_01

MOV DH, [SI]


CMP DH, 20H
JNE COMPARECHAR
INC SI
INC DI
DEC COMPARECOUNTER

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

;************************************************************

;*********** message: player2 wins **************************

CMP PLAYER2FLAG, 1
JE ENDGAME_01
PLAYER2WINS:

CALL NEWLINEPROC
CALL NEWLINEPROC
MOV PLAYER2FLAG, 1
MOV DX,OFFSET PLAYER2
MOV AH, 09H
INT 21H

MOV DX, OFFSET WINMSG


INT 21H

MOV DX, OFFSET CONGRATULATIONS


INT 21H

JMP ENDGAME

;************************************************************

;*********** message: player1 wins **************************

CMP PLAYER1FLAG, 1
JE ENDGAME_01
PLAYER1WINS:

CALL GAMESTATUSPROC
CALL NEWLINEPROC
CALL NEWLINEPROC

MOV DX, OFFSET CORRECTMOVIEMSG


MOV AH, 09H
INT 21H

LEA SI, MOVIENAME+2


MOV CL, MOVIENAMELEN

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

MOV DX, OFFSET WINMSG


INT 21H

MOV DX, OFFSET CONGRATULATIONS


INT 21H

;************************************************************
;*************procedure for newline**************************

ENDGAME_01:
JMP ENDGAME

NEWLINEPROC PROC NEAR

PUSHF
PUSH AX
PUSH BX
PUSH CX
PUSH DX

MOV CX, NEWLINECOUNT

NEXTLINE1:
MOV DX, OFFSET NEWLINE
MOV AH, 09H
INT 21H
LOOP NEXTLINE1

POP DX
POP CX
POP BX
POP AX
POPF
RET

NEWLINEPROC ENDP

;************************************************************

;********** procedure to display game status *****************

JMP ENDGAME

GAMESTATUSPROC PROC NEAR

PUSHF
PUSH AX
PUSH BX
PUSH CX
PUSH DX

CALL NEWLINEPROC

MOV DX, OFFSET STATUSMSG


MOV AH, 09H
INT 21H

MOV DX, OFFSET TEMP


MOV AH, 09H
INT 21H

MOV DX, OFFSET WRONGGUESSESMSG


MOV AH, 09H
INT 21H

MOV DX, OFFSET WRONGGUESSES


MOV AH, 09H
INT 21H

MOV DX, OFFSET REMAININGTRIESMSG


MOV AH, 09H
INT 21H

MOV BX, BOLLYTRIES


MOV AH, 23H
MOV BOLLY[BX], AH
MOV DX, OFFSET BOLLY
MOV AH, 09H
INT 21H

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

You might also like