-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTic Tac Toe.asm
executable file
·274 lines (219 loc) · 3.19 KB
/
Tic Tac Toe.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
mov R1,#13h
mov r2,#45h
ResetGameBoard:
mov @r1,#00h
INC r1
DJNZ R2,ResetGameBoard
setb p1.0
mov r0,#00h
mov 70h,#11h
mov p2,#0
mov p3,#0
mov p1,#00111111b
Mov 13h,#0FFh
Mov 14h,#0FFh
Mov 15h,#0FFh
Mov 16h,#0FFh
Mov 17h,#0FFh
Mov 23h,#0FFh
Mov 27h,#0FFh
Mov 33h,#0FFh
Mov 37h,#0FFh
Mov 43h,#0FFh
Mov 47h,#0FFh
Mov 53h,#0FFh
Mov 54h,#0FFh
Mov 55h,#0FFh
Mov 56h,#0FFh
Mov 57h,#0FFh
MainLoop:
jnb p2.4,SkipMiddle
jnb p2.0,P1_Diagonal_False
jnb p1.7,P1_Diagonal_False
P1_Wins:
ljmp Player1Victorious
P1_Diagonal_False:
jnb p2.1,P1_MidCol_False
jb p2.7,P1_Wins
P1_MidCol_False:
jnb p2.2,P1_Diagonal2
jb p2.6,P1_Wins
P1_Diagonal2:
jnb p2.3,SkipMiddle
jb p2.5,P1_Wins
SkipMiddle:
jnb p2.0,P1_TopLeft_False
jnb p2.1,P1_JumpHere
jb p2.2,P1_Wins
P1_JumpHere:
jnb p2.3,P1_TopLeft_False
jb p2.6,P1_Wins
P1_TopLeft_False:
jnb p1.7,CheckPlayer2
jnb p2.5,P1_BotCol_False
jb p2.2,P1_Wins
P1_BotCol_False:
jnb p2.7,CheckPlayer2
jb p2.6,P1_Wins
CheckPlayer2:
jnb p3.4,SkipMiddle2
jnb p3.0,P2_Diagonal_False
jnb p1.6,P2_Diagonal_False
P2_Wins:
ljmp Player2Victorious
P2_Diagonal_False:
jnb p3.1,P2_MidCol_False
jb p3.7,P2_Wins
P2_MidCol_False:
jnb p3.2,P2_Diagonal2
jb p3.6,P2_Wins
P2_Diagonal2:
jnb p3.3,SkipMiddle2
jb p3.5,P2_Wins
SkipMiddle2:
jnb p3.0,P2_TopLeft_False
jnb p3.1,P2_JumpHere
jb p3.2,P2_Wins
P2_JumpHere:
jnb p3.3,P2_TopLeft_False
jb p3.6,P2_Wins
P2_TopLeft_False:
jnb p1.6,Continue
jnb p3.5,P2_BotCol_False
jb p3.2,P2_Wins
P2_BotCol_False:
jnb p3.7,Continue
jb p3.6,P2_Wins
Continue:
SETB P0.0
SETB P0.1
SETB P0.2
CLR P0.3
JNB P0.6,One
JNB P0.5,Two
JNB P0.4,Three
SETB P0.3
CLR P0.2
JNB P0.6,Four
JNB P0.5,Five
JNB P0.4,Six
SETB P0.2
CLR P0.1
JNB P0.6,Seven
JNB P0.5,Eight
JNB P0.4,Nine
SETB P0.1
CLR P0.0
SETB P0.0
JMP MainLoop
One:
mov r0,#24h
CJNE @r0, #0, GoBack
jb p0.7,SetPlayer
Two:
mov r0,#25h
CJNE @r0, #0, GoBack
jb p0.7,SetPlayer
Three:
mov r0,#26h
CJNE @r0, #0, GoBack
jb p0.7,SetPlayer
Four:
mov r0,#34h
CJNE @r0, #0, GoBack
jb p0.7,SetPlayer
Five:
mov r0,#35h
CJNE @r0, #0, GoBack
jb p0.7,SetPlayer
GoBack:
ljmp MainLoop
Six:
mov r0,#36h
CJNE @r0, #0, GoBack
jb p0.7,SetPlayer
Seven:
mov r0,#44h
CJNE @r0, #0, GoBack
jb p0.7,SetPlayer
Eight:
mov r0,#45h
CJNE @r0, #0, GoBack
jb p0.7,SetPlayer
Nine:
mov r0,#46h
CJNE @r0, #0, GoBack
jb p0.7,SetPlayer
SetPlayer:
jnb p1.0,PlayerB
mov @r0,#11h
mov 70h,#22h
CJNE r0, #24h,ones24
setb p2.0
ones24:
CJNE r0, #25h,ones25
setb p2.1
ones25:
CJNE r0, #26h,ones26
setb p2.2
ones26:
CJNE r0, #34h,ones34
setb p2.3
ones34:
CJNE r0, #35h,ones35
setb p2.4
ones35:
CJNE r0, #36h,ones36
setb p2.5
ones36:
CJNE r0, #44h,ones44
setb p2.6
ones44:
CJNE r0, #45h,ones45
setb p2.7
ones45:
CJNE r0, #46h,ones46
setb p1.7
ones46:
clr p1.0
JMP MainLoop
PlayerB:
mov @r0,#22h
mov 70h,#11h
CJNE r0, #24h,twos24
setb p3.0
twos24:
CJNE r0, #25h,twos25
setb p3.1
twos25:
CJNE r0, #26h,twos26
setb p3.2
twos26:
CJNE r0, #34h,twos34
setb p3.3
twos34:
CJNE r0, #35h,twos35
setb p3.4
twos35:
CJNE r0, #36h,twos36
setb p3.5
twos36:
CJNE r0, #44h,twos44
setb p3.6
twos44:
CJNE r0, #45h,twos45
setb p3.7
twos45:
CJNE r0, #46h,twos46
setb p1.6
twos46:
clr p1.0
SETB p1.0
JMP MainLoop
Player1Victorious:
mov p1,#11111001b
jmp SkipP2Win
Player2Victorious:
mov p1,#10100100b
SkipP2Win:
END