-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRandomQuizGenerator.asm
295 lines (210 loc) · 4.91 KB
/
RandomQuizGenerator.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
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
;PROGRAM TO GENERATE RANDOM AIRTHMATIC QUIZ
RANDNUMBER MACRO RANGE
MOV AH, 00h ; Interrupts to get system time
INT 1AH ; CX:DX now hold number of clock ticks since midnight
MOV AX, DX
XOR DX, DX ; Clears value in Data register
MOV CX, RANGE
DIV CX ; Here dx contains the remainder of the division - from 0 to 9
ADD DL, '0'
ENDM
NL MACRO
MOV AH,2
MOV DL, 0AH
INT 21H
MOV DL, 0DH
INT 21H
ENDM
.MODEL SMALL
.STACK 100H
.DATA
MSG1 DB '*************************************************$'
MSG2 DB 10,13,'Project BY Labheshwar Sharma!$'
MSG3 DB 10,13,'*************************************************$'
MSG4 DB 10,13,10,13,'A quiz system that generates random ADDITION queries each time we play$'
MSG5 DB 10,13,'Press any key to start the quiz : $'
MSG6 DB 10,13,'Enter your answer : $'
MSG7 DB 10,13,'Correct.$'
MSG8 DB 10,13,'Wrong.$'
MSG9 DB 10,13,'Quiz successfully completed.$'
MSG10 DB 10,13,'You scored : $'
MSG11 DB 10,13,'Congratulations, You aced the quiz with score : 10/10.$'
MSG12 DB 10,13,' ***Thank you.! ***$'
Q DB ?, '. '
OPRD1 DB ?, '+'
OPRD2 DB ?, '=?$'
OPTS DB ' a) '
OPT1 DB ?,' b) '
OPT2 DB ?,' c) '
OPT3 DB ?,'$'
LP DB 10
NUM1 DB ?
NUM2 DB ?
SUM DB ?
COUNT DB '0'
CRCTOPT DB ?
.CODE
MAIN PROC
MOV AX,@DATA
MOV DS,AX
LEA DX,MSG1
MOV AH,9
INT 21H
NL
LEA DX,MSG2
MOV AH,9
INT 21H
NL
LEA DX,MSG3
MOV AH,9
INT 21H
NL
LEA DX,MSG4
MOV AH,9
INT 21H
NL
LEA DX,MSG5
MOV AH,9
INT 21H
MOV AH, 1
INT 21H
MOV BL, '1'
QUES:
NL
NL
CMP BL, 58
JNE NOT_TEN
MOV SI, OFFSET Q
MOV [SI], '01' ;Sets Q No. 10, since registers store characters in reverse order == 01==>10
JMP RANDOM_OPERANDS
NOT_TEN:
MOV SI, OFFSET Q
MOV [SI], BL
INC BL
RANDOM_OPERANDS:
MOV SI, OFFSET OPRD1
RANDNUMBER 6
MOV [SI], DL
MOV NUM1, DL
MOV SI, OFFSET OPRD2
RANDNUMBER 5
MOV [SI], DL
MOV NUM2, DL
XOR AL, AL
ADD AL, NUM1
ADD AL, NUM2
MOV SUM, AL
SUB SUM, 48
LEA DX,Q
MOV AH,9
INT 21H
NL
RANDNUMBER 3
MOV CRCTOPT, DL
ADD CRCTOPT, 49
CMP CRCTOPT, 'a'
JE OPTION1
CMP CRCTOPT, 'b'
JE OPTION2
JMP OPTION3
OPTION1:
MOV SI, OFFSET OPT1
MOV DL, SUM
MOV [SI], DL
MOV SI, OFFSET OPT2
RANDNUMBER 9
CMP DL, SUM
JE OPTION1
MOV [SI], DL
MOV SI, OFFSET OPT3
RANDNUMBER 8
CMP DL, SUM
JE OPTION1
MOV [SI], DL
JMP OPTIONS
OPTION2:
MOV SI, OFFSET OPT1
RANDNUMBER 9
CMP DL, SUM
JE OPTION2
MOV [SI], DL
MOV SI, OFFSET OPT2
MOV DL, SUM
MOV [SI], DL
MOV SI, OFFSET OPT3
RANDNUMBER 8
CMP DL, SUM
JE OPTION2
MOV [SI], DL
JMP OPTIONS
OPTION3:
MOV SI, OFFSET OPT1
RANDNUMBER 9
CMP DL, SUM
JE OPTION3
MOV [SI], DL
MOV SI, OFFSET OPT2
RANDNUMBER 8
CMP DL, SUM
JE OPTION3
MOV [SI], DL
MOV SI, OFFSET OPT3
MOV DL, SUM
MOV [SI], DL
OPTIONS:
LEA DX,OPTS
MOV AH,9
INT 21H
NL
LEA DX, MSG6
MOV AH, 9
INT 21H
MOV AH, 1
INT 21H
CMP CRCTOPT, AL
JE CORRECT
NL
LEA DX, MSG8
MOV AH, 9
INT 21H
DEC LP
JZ FINISHED
JMP QUES
CORRECT:
NL
INC COUNT
LEA DX, MSG7
MOV AH, 9
INT 21H
DEC LP
JZ FINISHED
JMP QUES
FINISHED:
NL
LEA DX, MSG9
MOV AH, 9
INT 21H
CMP COUNT,58
JE WINNER
NL
LEA DX, MSG10
MOV AH, 9
INT 21H
MOV DL, COUNT
MOV AH, 2
INT 21H
JMP THANKYOU
WINNER:
NL
LEA DX, MSG11
MOV AH, 9
INT 21H
THANKYOU:
NL
LEA DX, MSG12
MOV AH, 9
INT 21H
MOV AH, 4CH
INT 21H
MAIN ENDP
END MAIN