-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrecebex.asm
566 lines (488 loc) · 14.8 KB
/
recebex.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
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
;**********************************************************************
;**********************************************************************
; PROGRAMA PARA RECEBER DADOS DA PLATAFORMA MÓVEL
;**********************************************************************
;**********************************************************************
DADO SEGMENT
CONT1 DB 0
CONT2 DB 0
LINHA_10 DB 3
COLUNA_10 DB 39
LINHA_30 DB 10
COLUNA_30 DB 37
LINHA_50 DB 15
COLUNA_50 DB 32
LINHA_70 DB 18
COLUNA_70 DB 26
LINHA_90 DB 20
COLUNA_90 DB 20
LINHA_110 DB 18
COLUNA_110 DB 14
LINHA_130 DB 15
COLUNA_130 DB 8
LINHA_150 DB 10
COLUNA_150 DB 3
LINHA_170 DB 3
COLUNA_170 DB 1
DIST3 DB 100
DIST4 DB 100
DIST5 DB 100
DIST6 DB 100
DIST7 DB 100
DIST8 DB 100
DIST9 DB 100
DIST10 DB 100
DIST12 DB 100
DADO ENDS
PILHA SEGMENT
DW 100 DUP(?)
TOPO LABEL WORD
PILHA ENDS
CODIGO SEGMENT
ASSUME CS:CODIGO,DS:DADO,SS:PILHA
INICIO: MOV AX, DADO
MOV DS, AX
MOV AX, PILHA
MOV SS, AX
MOV SP, OFFSET TOPO
MOV CONT1, 0
MOV CONT2, 0
MOV AH, 0 ;Video modo 40x25
MOV AL, 1
INT 10H
MOV AH, 2
MOV BH, 0
MOV DH, 21
MOV DL, 20
INT 10H
MOV AL, 2
CALL ESC_CAR
MOV AL, 11000011B ;Programar serial
MOV AH, 0
MOV DX, 0
INT 14H
VOLTA: MOV AH, 1
INT 16H
JZ VER_SER
MOV AH, 0
INT 16H
CMP AH, 1
JNE VER_SER
FIM: MOV AH, 0
MOV AL, 3
INT 10H
MOV AH, 4CH
INT 21H
VER_SER: MOV AH, 3
INT 14H
AND AH, 1
JNZ VER_SER1
JMP MOSTRAR
VER_SER1: MOV AH, 2
INT 14H
CMP AL, 0
JNZ RECEBE0
MOV CONT1, 0
JMP VOLTA
RECEBE0: CMP CONT1, 0
JNZ RECEBE1
MOV DIST3, AL
INC CONT1
JMP VOLTA
RECEBE1: CMP CONT1, 1
JNZ RECEBE2
MOV DIST4, AL
INC CONT1
JMP VOLTA
RECEBE2: CMP CONT1, 2
JNZ RECEBE3
MOV DIST5, AL
INC CONT1
JMP VOLTA
RECEBE3: CMP CONT1, 3
JNZ RECEBE4
MOV DIST6, AL
INC CONT1
JMP VOLTA
RECEBE4: CMP CONT1, 4
JNZ RECEBE5
MOV DIST7, AL
INC CONT1
JMP VOLTA
RECEBE5: CMP CONT1, 5
JNZ RECEBE6
MOV DIST8, AL
INC CONT1
JMP VOLTA
RECEBE6: CMP CONT1, 6
JNZ RECEBE7
MOV DIST9, AL
INC CONT1
JMP VOLTA
RECEBE7: CMP CONT1, 7
JNZ RECEBE8
MOV DIST10, AL
INC CONT1
JMP VOLTA
RECEBE8: CMP CONT1, 8
JNZ RECEBE9
MOV DIST12, AL
RECEBE9: MOV CONT1, 0
JMP VOLTA
MOSTRAR:
CMP CONT2, 0
JNZ MOSTRAR1
CALL CALC_10
INC CONT2
JMP VOLTA
MOSTRAR1: CMP CONT2, 1
JNZ MOSTRAR2
CALL CALC_30
INC CONT2
JMP VOLTA
MOSTRAR2: CMP CONT2, 2
JNZ MOSTRAR3
CALL CALC_50
INC CONT2
JMP VOLTA
MOSTRAR3: CMP CONT2, 3
JNZ MOSTRAR4
CALL CALC_70
INC CONT2
JMP VOLTA
MOSTRAR4: CMP CONT2, 4
JNZ MOSTRAR5
CALL CALC_90
INC CONT2
JMP VOLTA
MOSTRAR5: CMP CONT2, 5
JNZ MOSTRAR6
CALL CALC_110
INC CONT2
JMP VOLTA
MOSTRAR6: CMP CONT2, 6
JNZ MOSTRAR7
CALL CALC_130
INC CONT2
JMP VOLTA
MOSTRAR7: CMP CONT2, 7
JNZ MOSTRAR8
CALL CALC_150
INC CONT2
JMP VOLTA
MOSTRAR8: CMP CONT2, 8
JNZ MOSTRAR9
CALL CALC_170
MOSTRAR9: MOV CONT2, 0
JMP VOLTA
;------------------------------------------------------------
; SUB-ROTINAS
;------------------------------------------------------------
ESC_CAR: MOV AH, 10
MOV BH, 0
MOV CX, 1
INT 10H
RET
POS_CUR_10: MOV AH, 2
MOV BH, 0
MOV DH, LINHA_10
MOV DL, COLUNA_10
INT 10H
RET
POS_CUR_30: MOV AH, 2
MOV BH, 0
MOV DH, LINHA_30
MOV DL, COLUNA_30
INT 10H
RET
POS_CUR_50: MOV AH, 2
MOV BH, 0
MOV DH, LINHA_50
MOV DL, COLUNA_50
INT 10H
RET
POS_CUR_70: MOV AH, 2
MOV BH, 0
MOV DH, LINHA_70
MOV DL, COLUNA_70
INT 10H
RET
POS_CUR_90: MOV AH, 2
MOV BH, 0
MOV DH, LINHA_90
MOV DL, COLUNA_90
INT 10H
RET
POS_CUR_110: MOV AH, 2
MOV BH, 0
MOV DH, LINHA_110
MOV DL, COLUNA_110
INT 10H
RET
POS_CUR_130: MOV AH, 2
MOV BH, 0
MOV DH, LINHA_130
MOV DL, COLUNA_130
INT 10H
RET
POS_CUR_150: MOV AH, 2
MOV BH, 0
MOV DH, LINHA_150
MOV DL, COLUNA_150
INT 10H
RET
POS_CUR_170: MOV AH, 2
MOV BH, 0
MOV DH, LINHA_170
MOV DL, COLUNA_170
INT 10H
RET
CALC_10: CALL POS_CUR_10
MOV AL, 0
CALL ESC_CAR
CMP DIST3, 50
JC CALC_10A
MOV DIST3, 50
CALC_10A: MOV AL, DIST3
MOV BL, 35
MUL BL
MOV DX, 0
MOV BX, 500
DIV BX
MOV BL, 20
SUB BL, AL
MOV LINHA_10, BL
MOV AL, DIST3
MOV BL, 197
MUL BL
MOV DX, 0
MOV BX, 500
DIV BX
ADD AL, 20
MOV COLUNA_10, AL
CALL POS_CUR_10
MOV AL, 1
CALL ESC_CAR
RET
CALC_30: CALL POS_CUR_30
MOV AL, 0
CALL ESC_CAR
CMP DIST4, 50
JC CALC_30A
MOV DIST4, 50
CALC_30A: MOV AL, DIST4
MOV BL, 100
MUL BL
MOV DX, 0
MOV BX, 500
DIV BX
MOV BL, 20
SUB BL, AL
MOV LINHA_30, BL
MOV AL, DIST4
MOV BL, 173
MUL BL
MOV DX, 0
MOV BX, 500
DIV BX
ADD AL, 20
MOV COLUNA_30, AL
CALL POS_CUR_30
MOV AL, 1
CALL ESC_CAR
RET
CALC_50: CALL POS_CUR_50
MOV AL, 0
CALL ESC_CAR
CMP DIST5, 50
JC CALC_50A
MOV DIST5, 50
CALC_50A: MOV AL, DIST5
MOV BL, 153
MUL BL
MOV DX, 0
MOV BX, 500
DIV BX
MOV BL, 20
SUB BL, AL
MOV LINHA_50, BL
MOV AL, DIST5
MOV BL, 128
MUL BL
MOV DX, 0
MOV BX, 500
DIV BX
ADD AL, 20
MOV COLUNA_50, AL
CALL POS_CUR_50
MOV AL, 1
CALL ESC_CAR
RET
CALC_70: CALL POS_CUR_70
MOV AL, 0
CALL ESC_CAR
CMP DIST6, 50
JC CALC_70A
MOV DIST6, 50
CALC_70A: MOV AL, DIST6
MOV BL, 188
MUL BL
MOV DX, 0
MOV BX, 500
DIV BX
MOV BL, 20
SUB BL, AL
MOV LINHA_70, BL
MOV AL, DIST6
MOV BL, 68
MUL BL
MOV DX, 0
MOV BX, 500
DIV BX
ADD AL, 20
MOV COLUNA_70, AL
CALL POS_CUR_70
MOV AL, 1
CALL ESC_CAR
RET
CALC_90: CALL POS_CUR_90
MOV AL, 0
CALL ESC_CAR
CMP DIST7, 50
JC CALC_90A
MOV DIST7, 50
CALC_90A: MOV AL, DIST7
MOV BL, 200
MUL BL
MOV DX, 0
MOV BX, 500
DIV BX
MOV BL, 20
SUB BL, AL
MOV LINHA_90, BL
MOV AL, DIST7
MOV BL, 0
MUL BL
MOV DX, 0
MOV BX, 500
DIV BX
ADD AL, 20
MOV COLUNA_90, AL
CALL POS_CUR_90
MOV AL, 1
CALL ESC_CAR
RET
CALC_110: CALL POS_CUR_110
MOV AL, 0
CALL ESC_CAR
CMP DIST8, 50
JC CALC_110A
MOV DIST8, 50
CALC_110A: MOV AL, DIST8
MOV BL, 188
MUL BL
MOV DX, 0
MOV BX, 500
DIV BX
MOV BL, 20
SUB BL, AL
MOV LINHA_110, BL
MOV AL, DIST8
MOV BL, 68
MUL BL
MOV DX, 0
MOV BX, 500
DIV BX
MOV BL, 20
SUB BL, AL
MOV COLUNA_110, BL
CALL POS_CUR_110
MOV AL, 1
CALL ESC_CAR
RET
CALC_130: CALL POS_CUR_130
MOV AL, 0
CALL ESC_CAR
CMP DIST9, 50
JC CALC_130A
MOV DIST9, 50
CALC_130A: MOV AL, DIST9
MOV BL, 153
MUL BL
MOV DX, 0
MOV BX, 500
DIV BX
MOV BL, 20
SUB BL, AL
MOV LINHA_130, BL
MOV AL, DIST9
MOV BL, 128
MUL BL
MOV DX, 0
MOV BX, 500
DIV BX
MOV BL, 20
SUB BL, AL
MOV COLUNA_130, BL
CALL POS_CUR_130
MOV AL, 1
CALL ESC_CAR
RET
CALC_150: CALL POS_CUR_150
MOV AL, 0
CALL ESC_CAR
CMP DIST10, 50
JC CALC_150A
MOV DIST10, 50
CALC_150A: MOV AL, DIST10
MOV BL, 100
MUL BL
MOV DX, 0
MOV BX, 500
DIV BX
MOV BL, 20
SUB BL, AL
MOV LINHA_150, BL
MOV AL, DIST10
MOV BL, 173
MUL BL
MOV DX, 0
MOV BX, 500
DIV BX
MOV BL, 20
SUB BL, AL
MOV COLUNA_150, BL
CALL POS_CUR_150
MOV AL, 1
CALL ESC_CAR
RET
CALC_170: CALL POS_CUR_170
MOV AL, 0
CALL ESC_CAR
CMP DIST12, 50
JC CALC_170A
MOV DIST12, 50
CALC_170A: MOV AL, DIST12
MOV BL, 35
MUL BL
MOV DX, 0
MOV BX, 500
DIV BX
MOV BL, 20
SUB BL, AL
MOV LINHA_170, BL
MOV AL, DIST12
MOV BL, 197
MUL BL
MOV DX, 0
MOV BX, 500
DIV BX
MOV BL, 20
SUB BL, AL
MOV COLUNA_170, BL
CALL POS_CUR_170
MOV AL, 1
CALL ESC_CAR
RET
CODIGO ENDS
END INICIO