-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathProyecto2.LST
More file actions
2151 lines (1930 loc) · 74.9 KB
/
Copy pathProyecto2.LST
File metadata and controls
2151 lines (1930 loc) · 74.9 KB
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
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
ADDR B1 B2 B3 B4 C:\Users\spiqu\Documents\Escuela\Estructura_ PAGE 1
*PROYECTO TRADUCCION DE NUMERO ROMANO A DECIMAL Y VICEVERSA
*PARADA PREZ JESS BRYAN
*VAN DER WERFF VARGAS PIETER ALEXANDER
*MAYA ORTEGA MARIA FERNANDA
*DECLARACION CONSTANTES
SCDR EQU $102F
SCCR2 EQU $102D
SCSR EQU $102E
SCCR1 EQU $102C
BAUD EQU $102B
HPRIO EQU $103C
SPCR EQU $1028
CSCTL EQU $105D
OPT2 EQU $1038
DDRD EQU $1009
*DECLARACION DE VARIABLES PARA NUMEROS ROMANOS
DIRECCION_RESULTADO EQU $0050
DIRECCION_INPUT EQU $0030
DIRECCION_TEXTUAL EQU $0070
BANDERA_TIPO_TRADUCCION EQU $0024
NUMCARAC EQU $0010
BANDERA_ERROR EQU $0011
. * BANDERA DE ERROR PARA NUMEROS DECIMALES
BANDERA_TRADUCCION EQU $0012
. * BANDERA PARA IDENTIFICAR LA TRADUCCION
CONTADOR EQU $0028
CONTADOR_EXT EQU $0010
ORDEN EQU $0000
BANDERAM EQU $0016
. * BANDERA DE LETRAS M (MIL)
BANDERAD EQU $0017
. * BANDERA DE LETRAS D (QUININETOS)
BANDERAC EQU $0018
. * BANDERA DE LETRAS C (CIEN)
BANDERAL EQU $0019
. * BANDERA DE LETRAS L (CINCUENTA)
BANDERAX EQU $0020
. * BANDERA DE LETRAS X (DIEZ)
BANDERAV EQU $0021
. * BANDERA DE LETRAS V (CINCO)
BANDERAI EQU $0022
. * BANDERA DE LETRAS I (UNO)
BANDERAOK EQU $0023
. * BANDERA DEL OK
BANDERAERROR EQU $0002
. * BANDERA DE ERROR
UNIDAD EQU $0053
. * DIRECCION PARA ESCRIBIR UNIDADES
DECENA EQU $0052
. * DIRECCION PARA ESCRIBIR DECENAS
CENTENA EQU $0051
. * DIRECCION PARA ESCRIBIR CENTENAS
MIL EQU $0050
. * DIRECCION PARA ESCRIBIR UNIDADES DE MIL
ORG $3000
3000 45 52 52 4F MENSAJE_E_ROMANO FCC "ERROR, NUMERO ROMANO INVALIDO."
. 3004 52 2C 20 4E
. 3008 55 35 45 52
ADDR B1 B2 B3 B4 C:\Users\spiqu\Documents\Escuela\Estructura_ PAGE 2
. 300C 4F 20 52 4F
. 3010 4D 41 4E 32
. 3014 20 49 4E 56
. 3018 41 4C 49 44
. 301C 4F 2E
301E 45 52 52 4F MENSAJE_E_DECIMAL FCC "ERROR, NUMERO DECIMAL INVALIDO."
. 3022 52 2C 20 4E
. 3026 55 4D 45 52
. 302A 4F 20 44 45
. 302E 43 49 4D 41
. 3032 4C 20 49 4E
. 3036 56 41 4C 49
. 303A 44 20 2E
303D 45 52 52 4F MENSAJE_E_RANGO FCC "ERROR, NUMERO FUERA DE RANGO."
. 3041 52 2C 20 4E
. 3045 55 4D 45 52
. 3049 4F 20 46 55
. 304D 45 52 41 20
. 3051 44 45 20 52
. 3055 41 4E 47 4F
. 3059 2E
* NUMEROS DECIMALES
305A 75 6E 6F 20 UNO_D FCC "uno "
. 305E 20
305F 64 6F 73 20 DOS_D FCC "dos "
3063 74 72 65 73 TRES_D FCC "tres "
. 3067 20
3068 63 75 61 74 CUATRO_D FCC "cuatro "
. 306C 72 6F 20
306F 63 69 6E 63 CINCO_D FCC "cinco "
. 3073 6F 20
3075 73 65 69 73 SEIS_D FCC "seis "
. 3079 20
307A 73 69 65 74 SIETE_D FCC "siete "
. 307E 65 20
3080 6F 63 68 6F OCHO_D FCC "ocho "
. 3084 20
3085 6E 75 65 76 NUEVE_D FCC "nueve "
. 3089 65 20
308B 64 69 65 63 DIECI_D FCC "dieci "
. 308F 69 20
3091 64 69 65 7A DIEZ_D FCC "diez "
. 3095 20
3096 6F 6E 63 65 ONCE_D FCC "once "
. 309A 20
309B 64 6F 63 65 DOCE_D FCC "doce "
. 309F 20
30A0 74 72 65 63 TRECE_D FCC "trece "
. 30A4 65 20
30A6 63 61 74 6F CATORCE_D FCC "catorce "
. 30AA 72 63 65 20
30AE 64 69 65 63 DIECISEIS_D FCC "diecisEis "
. 30B2 69 73 45 69
. 30B6 73 20
30B8 71 75 69 6E QUINCE_D FCC "quince "
. 30BC 63 65 20
30BF 76 65 69 6E VEINTE_D FCC "veinte "
. 30C3 74 65 20
30C6 76 65 69 6E VEINTIUNO_D FCC "veintiuno "
. 30CA 74 69 75 6E
. 30CE 6F 20
30D0 76 65 69 6E VEINTIDOS_D FCC "veintidOs "
. 30D4 74 69 64 4F
ADDR B1 B2 B3 B4 C:\Users\spiqu\Documents\Escuela\Estructura_ PAGE 3
. 30D8 73 20
30DA 76 65 69 6E VEINTITRES_D FCC "veintitrEs "
. 30DE 74 69 74 72
. 30E2 45 73 20
30E5 76 65 69 6E VEINTICUATRO_D FCC "veinticuatro "
. 30E9 74 69 63 75
. 30ED 61 74 72 6F
. 30F1 20
30F2 76 65 69 6E VEINTICINCO_D FCC "veinticinco "
. 30F6 74 69 63 69
. 30FA 6E 63 6F 20
30FE 76 65 69 6E VEINTISEIS_D FCC "veintisEis "
. 3102 74 69 73 45
. 3106 69 73 20
3109 76 65 69 6E VEINTISIETE_D FCC "veintisiete "
. 310D 74 69 73 69
. 3111 65 74 65 20
3115 76 65 69 6E VEINTIOCHO_D FCC "veintiocho "
. 3119 74 69 6F 63
. 311D 68 6F 20
3120 76 65 69 6E VEINTINUEVE_D FCC "veintinueve "
. 3124 74 69 6E 75
. 3128 65 76 65 20
312C 79 20 Y_D FCC "y "
312E 74 72 65 69 TREINTA_D FCC "treinta "
. 3132 6E 74 61 20
3136 63 75 61 72 CUARENTA_D FCC "cuarenta "
. 313A 65 6E 74 61
. 313E 20
313F 63 69 6E 63 CINCUENTA_D FCC "cincuenta "
. 3143 75 65 6E 74
. 3147 61 20
3149 73 65 73 65 SESENTA_D FCC "sesenta "
. 314D 6E 74 61 20
3151 73 65 74 65 SETENTA_D FCC "setenta "
. 3155 6E 74 61 20
3159 6F 63 68 65 OCHENTA_D FCC "ochenta "
. 315D 6E 74 61 20
3161 6E 6F 76 65 NOVENTA_D FCC "noventa "
. 3165 6E 74 61 20
3169 63 69 65 6E CIEN_D FCC "cien "
. 316D 20
316E 63 69 65 6E CIENTO_D FCC "ciento "
. 3172 74 6F 20
3175 63 69 65 6E CIENTOS_D FCC "cientos "
. 3179 74 6F 73 20
317D 71 75 69 6E QUINIENTOS_D FCC "quinientos "
. 3181 69 65 6E 74
. 3185 6F 73 20
3188 73 65 74 65 SETECIENTOS_D FCC "setecientos "
. 318C 63 69 65 6E
. 3190 74 6F 73 20
3194 6E 6F 76 65 NOVECIENTOS_D FCC "novecientos "
. 3198 63 69 65 6E
. 319C 74 6F 73 20
31A0 6D 69 6C 20 MIL_D FCC "mil "
* NUMEROS ROMANOS
31A4 43 20 CIEN_R FCC "C "
31A6 43 43 20 DOSCIENTOS_R FCC "CC "
31A9 43 43 43 20 TRESCIENTOS_R FCC "CCC "
31AD 43 44 20 CUATROCIENTOS_R FCC "CD "
31B0 44 20 QUINIENTOS_R FCC "D "
31B2 44 43 20 SEISCIENTOS_R FCC "DC "
ADDR B1 B2 B3 B4 C:\Users\spiqu\Documents\Escuela\Estructura_ PAGE 4
31B5 44 43 43 20 SETECIENTOS_R FCC "DCC "
31B9 44 43 43 43 OCHOCIENTOS_R FCC "DCCC "
. 31BD 20
31BE 43 4D 20 NOVECIENTOS_R FCC "CM "
31C1 58 20 DIEZ_R FCC "X "
31C3 58 58 20 VEINTE_R FCC "XX "
31C6 58 58 58 20 TREINTA_R FCC "XXX "
31CA 58 4C 20 CUARENTA_R FCC "XL "
31CD 4C 20 CINCUENTA_R FCC "L "
31CF 4C 58 20 SESENTA_R FCC "LX "
31D2 4C 58 58 20 SETENTA_R FCC "LXX "
31D6 4C 58 58 58 OCHENTA_R FCC "LXXX "
. 31DA 20
31DB 58 43 20 NOVENTA_R FCC "XC "
31DE 49 20 UNO_R FCC "I "
31E0 49 49 20 DOS_R FCC "II "
31E3 49 49 49 20 TRES_R FCC "III "
31E7 49 56 20 CUATRO_R FCC "IV "
31EA 56 20 CINCO_R FCC "V "
31EC 56 49 20 SEIS_R FCC "VI "
31EF 56 49 49 20 SIETE_R FCC "VII "
31F3 56 49 49 49 OCHO_R FCC "VIII "
. 31F7 20
31F8 49 58 20 NUEVE_R FCC "IX "
ORG $8000
INICIO
8000 8E 00 FF LDS #$00FF
. * Configuracion del puerto serial
8003 BD 84 66 JSR SERIAL
. * SUBRUTINA PARA CONFIG EL PUERTO SERIAL
8006 BD 84 D2 JSR LIMPIEZA
8009 BD 82 8D JSR INICIALIZAR
800C 7E 81 EF JMP CICLATE1
CICLATE
800F 86 3F LDAA #'?
8011 97 00 STAA ORDEN
CUENTA
8013 96 00 LDAA ORDEN
8015 81 3F CMPA #'?
8017 27 FA BEQ CUENTA
ENTRADA_ROMANO
8019 D6 10 LDAB NUMCARAC
801B C1 00 CMPB #0
801D 26 0B BNE ERROR1
801F 81 4D CMPA #'M
8021 27 0D BEQ CASOM
8023 81 44 CMPA #'D
8025 27 3A BEQ CASOD
8027 7E 80 8F JMP SALTOINTERMEDIO1
ERROR1
802A BD 84 82 JSR ERROR_ESCRITURA
802D 7E 81 DA JMP FIN
CASOM
8030 D6 18 LDAB BANDERAC
. * PARA EL CASO CM REVISA QUE LLEGUE C ANTES
8032 C1 00 CMPB #0
8034 26 19 BNE CASOCM
ADDR B1 B2 B3 B4 C:\Users\spiqu\Documents\Escuela\Estructura_ PAGE 5
8036 D6 16 LDAB BANDERAM
8038 C1 08 CMPB #8
. * REVISA QUE NO SEAN MAS DE 9 M's
803A 22 EE BHI ERROR1
803C BD 84 A1 JSR D_ERROR
803F A7 00 STAA $00,X
. * LO QUE MANDA EL USUARIO SE ESCRIBE A PARTIR DE LA DIRECCION
. $70
8041 08 INX
8042 D6 16 LDAB BANDERAM
8044 5C INCB
8045 D7 16 STAB BANDERAM
8047 D6 50 LDAB MIL
8049 5C INCB
804A D7 50 STAB MIL
804C 7E 80 0F JMP CICLATE
*CASO DONDE LLEGUE CM
CASOCM
804F C1 01 CMPB #1
. * REVISA SI HAY UNA SEGUNDA C
8051 22 D7 BHI ERROR1
8053 CB 05 ADDB #5
8055 D7 18 STAB BANDERAC
. * CARGA 5 EN C
8057 C6 09 LDAB #9
8059 D7 51 STAB CENTENA
. * CARGA 9 EN CENTENA
805B A7 00 STAA $00,X
. * LO QUE MANDA EL USUARIO SE ESCRIBE A PARTIR DE LA DIRECCION
. $70
805D 08 INX
. * AUMENTA EN 1 X
805E 7E 80 0F JMP CICLATE
CASOD
8061 BD 84 B1 JSR L_ERROR
8064 D6 17 LDAB BANDERAD
8066 5C INCB
8067 D7 17 STAB BANDERAD
8069 C1 02 CMPB #2
806B 27 BD BEQ ERROR1
. * VALIDA QUE NO LLEGUE MAS DE UNA D
806D A7 00 STAA $00,X
. * LO QUE MANDA EL USUARIO SE ESCRIBE A PARTIR DE LA DIRECCION
. $70
806F 08 INX
8070 D6 18 LDAB BANDERAC
8072 C1 00 CMPB #0
8074 26 07 BNE CASOCD
8076 C6 05 LDAB #5
8078 D7 51 STAB CENTENA
807A 7E 80 0F JMP CICLATE
CASOCD
. * CASO CUATROCIENTOS (CD)
807D C1 01 CMPB #1
807F 22 4E BHI ERROR_1
8081 CB 05 ADDB #5
8083 D7 18 STAB BANDERAC
ADDR B1 B2 B3 B4 C:\Users\spiqu\Documents\Escuela\Estructura_ PAGE 6
. * CARGA 5 EN C
8085 C6 04 LDAB #4
8087 D7 51 STAB CENTENA
. * CARGA 4 EN CENTENA
8089 A7 00 STAA $00,X
. * LO QUE MANDA EL USUARIO SE ESCRIBE A PARTIR DE LA DIRECCION
. $70
808B 08 INX
. * AUMENTA EN 1 X
808C 7E 80 0F JMP CICLATE
SALTOINTERMEDIO1
808F 81 43 CMPA #'C
8091 27 07 BEQ CASOC
8093 81 4C CMPA #'L
8095 27 3E BEQ CASOL
8097 7E 81 03 JMP SALTOINTERMEDIO
CASOC
. * BANDERA A FUTURO PARA IDENTIFICAR LOS ERRORES
809A D6 20 LDAB BANDERAX
. * IDENTIFICA SI LLEGA UN NOVENTA (XC)
809C C1 00 CMPB #0
809E 26 1D BNE CASOXC
80A0 D6 18 LDAB BANDERAC
80A2 C1 04 CMPB #4
80A4 22 29 BHI ERROR_1
80A6 BD 84 B1 JSR L_ERROR
80A9 D6 18 LDAB BANDERAC
80AB 5C INCB
80AC D7 18 STAB BANDERAC
80AE C1 04 CMPB #4
80B0 27 1D BEQ ERROR_1
. * VALIDA QUE NO LLEGUEN MAS DE 4 C'S
80B2 A7 00 STAA $00,X
. * LO QUE MANDA EL USUARIO SE ESCRIBE A PARTIR DE LA DIRECCION
. $70
80B4 08 INX
80B5 D6 51 LDAB CENTENA
80B7 5C INCB
80B8 D7 51 STAB CENTENA
80BA 7E 80 0F JMP CICLATE
*CASO POR SI LLEGA UN XC
CASOXC
80BD C1 01 CMPB #1
80BF 22 0E BHI ERROR_1
. * ERROR CUANDO HAY MS DE UNA C
80C1 CB 05 ADDB #5
. * SE USA CON EL ERROR XCX
80C3 D7 20 STAB BANDERAX
80C5 C6 09 LDAB #9
80C7 D7 52 STAB DECENA
80C9 A7 00 STAA $00,X
. * LO QUE MANDA EL USUARIO SE ESCRIBE A PARTIR DE LA DIRECCION
. $70
80CB 08 INX
80CC 7E 80 0F JMP CICLATE
ERROR_1
ADDR B1 B2 B3 B4 C:\Users\spiqu\Documents\Escuela\Estructura_ PAGE 7
80CF BD 84 82 JSR ERROR_ESCRITURA
80D2 7E 81 DA JMP FIN
CASOL
80D5 D6 20 LDAB BANDERAX
80D7 C1 00 CMPB #0
80D9 26 16 BNE CASOXL
80DB BD 84 C1 JSR V_ERROR
80DE D6 19 LDAB BANDERAL
80E0 5C INCB
80E1 D7 19 STAB BANDERAL
80E3 C1 02 CMPB #2
80E5 27 E8 BEQ ERROR_1
. * VERIFICA QUE NO LLEGUE MAS DE UNA L
80E7 A7 00 STAA $00,X
. * LO QUE MANDA EL USUARIO SE ESCRIBE A PARTIR DE LA DIRECCION
. $70
80E9 08 INX
80EA C6 05 LDAB #5
80EC D7 52 STAB DECENA
80EE 7E 80 0F JMP CICLATE
*PARA CUANDO LLEGA XL
CASOXL
80F1 C1 01 CMPB #1
80F3 22 DA BHI ERROR_1
. * IDENTIFICA SI HAY MAS DE UNA X
80F5 CB 05 ADDB #5
80F7 D7 20 STAB BANDERAX
. * SUMA 5 A X
80F9 C6 04 LDAB #4
80FB D7 52 STAB DECENA
. * CARGA 4 A LAS CENTENAS
80FD A7 00 STAA $00,X
. * LO QUE MANDA EL USUARIO SE ESCRIBE A PARTIR DE LA DIRECCION
. $70
80FF 08 INX
8100 7E 80 0F JMP CICLATE
SALTOINTERMEDIO
8103 81 58 CMPA #'X
8105 27 0B BEQ CASOX
8107 81 56 CMPA #'V
8109 27 42 BEQ CASOV
810B 81 49 CMPA #'I
810D 27 78 BEQ CASOI
810F 7E 81 78 JMP SALTOINTERMEDIO2
CASOX
8112 BD 84 C1 JSR V_ERROR
8115 D6 22 LDAB BANDERAI
8117 C1 00 CMPB #0
. * VALIDA EL CASO DE NUEVE (IX)
8119 26 20 BNE CASOIX
811B D6 20 LDAB BANDERAX
811D 5C INCB
811E D7 20 STAB BANDERAX
8120 C1 03 CMPB #3
8122 22 AB BHI ERROR_1
8124 D6 21 LDAB BANDERAV
8126 C1 00 CMPB #0
ADDR B1 B2 B3 B4 C:\Users\spiqu\Documents\Escuela\Estructura_ PAGE 8
. * VALIDA QUE NO EXISTAN V's ANTES DE X
8128 26 A5 BNE ERROR_1
812A A7 00 STAA $00,X
. * LO QUE MANDA EL USUARIO SE ESCRIBE A PARTIR DE LA DIRECCION
. $70
812C 08 INX
812D D6 52 LDAB DECENA
812F 5C INCB
8130 D7 52 STAB DECENA
8132 7E 80 0F JMP CICLATE
ERROR_2
8135 BD 84 82 JSR ERROR_ESCRITURA
8138 7E 81 DA JMP FIN
*CUANDO LLEGUE UN IX
CASOIX
813B C1 01 CMPB #1
813D 22 90 BHI ERROR_1
813F CB 06 ADDB #6
8141 D7 22 STAB BANDERAI
8143 C6 09 LDAB #9
8145 D7 53 STAB UNIDAD
8147 A7 00 STAA $00,X
. * LO QUE MANDA EL USUARIO SE ESCRIBE A PARTIR DE LA DIRECCION
. $70
8149 08 INX
814A 7E 80 0F JMP CICLATE
CASOV
814D D6 22 LDAB BANDERAI
814F C1 00 CMPB #0
8151 26 13 BNE CASOIV
8153 D6 21 LDAB BANDERAV
8155 5C INCB
8156 D7 21 STAB BANDERAV
8158 C1 02 CMPB #2
815A 27 D9 BEQ ERROR_2
. * VERIFICA QUE NO HAYA MAS DE DE UNA V
815C A7 00 STAA $00,X
. * LO QUE MANDA EL USUARIO SE ESCRIBE A PARTIR DE LA DIRECCION
. $70
815E 08 INX
815F C6 05 LDAB #5
8161 D7 53 STAB UNIDAD
8163 7E 80 0F JMP CICLATE
*CUANDO LLEGUE UN IV
CASOIV
8166 C1 01 CMPB #1
8168 22 CB BHI ERROR_2
816A CB 06 ADDB #6
816C D7 22 STAB BANDERAI
816E C6 04 LDAB #4
8170 D7 53 STAB UNIDAD
8172 A7 00 STAA $00,X
. * LO QUE MANDA EL USUARIO SE ESCRIBE A PARTIR DE LA DIRECCION
. $70
8174 08 INX
8175 7E 80 0F JMP CICLATE
SALTOINTERMEDIO2
8178 81 4F CMPA #'O
. * SI RECIBE UN OK
ADDR B1 B2 B3 B4 C:\Users\spiqu\Documents\Escuela\Estructura_ PAGE 9
817A 27 1F BEQ CASOO
817C 81 4B CMPA #'K
817E 27 23 BEQ CASOOK
8180 81 3D CMPA #61
. * IDENTIFICA EL FINAL DE LA CADENA UNA VEZ RECIBIDO EL =
8182 27 34 BEQ ESCRIBECHAR
8184 7E 81 B5 JMP SALTOINTERMEDIO1_ERROR
CASOI
8187 D6 22 LDAB BANDERAI
8189 5C INCB
818A D7 22 STAB BANDERAI
818C C1 03 CMPB #3
818E 22 A5 BHI ERROR_2
8190 A7 00 STAA $00,X
. * LO QUE MANDA EL USUARIO SE ESCRIBE A PARTIR DE LA DIRECCION
. $70
8192 08 INX
8193 D6 53 LDAB UNIDAD
8195 5C INCB
8196 D7 53 STAB UNIDAD
8198 7E 80 0F JMP CICLATE
CASOO
819B D6 23 LDAB BANDERAOK
819D 5C INCB
819E D7 23 STAB BANDERAOK
81A0 7E 81 DA JMP FIN
CASOOK
81A3 D6 23 LDAB BANDERAOK
81A5 C1 00 CMPB #0
81A7 26 03 BNE LIMPIEZA_SALTO
81A9 7E 81 EF JMP CICLATE1
LIMPIEZA_SALTO
81AC BD 84 D2 JSR LIMPIEZA
81AF BD 82 8D JSR INICIALIZAR
81B2 7E 81 EF JMP CICLATE1
SALTOINTERMEDIO1_ERROR
81B5 7E 80 2A JMP ERROR1
ESCRIBECHAR
81B8 D6 02 LDAB BANDERAERROR
81BA C1 01 CMPB #1
81BC 27 F7 BEQ SALTOINTERMEDIO1_ERROR
81BE C6 30 LDAB #48
. * CDIGO ASCII DE 0
81C0 96 50 LDAA MIL
81C2 1B ABA
81C3 97 50 STAA MIL
81C5 96 51 LDAA CENTENA
81C7 1B ABA
81C8 97 51 STAA CENTENA
81CA 96 52 LDAA DECENA
81CC 1B ABA
81CD 97 52 STAA DECENA
81CF 96 53 LDAA UNIDAD
81D1 1B ABA
81D2 97 53 STAA UNIDAD
81D4 7E 85 3F JMP INSERTAR_TEXTO
81D7 7E 81 DA JMP FIN
FIN
81DA 86 3F LDAA #'?
ADDR B1 B2 B3 B4 C:\Users\spiqu\Documents\Escuela\Estructura_ PAGE 10
81DC 97 00 STAA ORDEN
CICLO1
81DE 96 00 LDAA ORDEN
81E0 81 3F CMPA #'?
81E2 27 FA BEQ CICLO1
81E4 81 4F CMPA #'O
81E6 27 B3 BEQ CASOO
81E8 81 4B CMPA #'K
81EA 27 B7 BEQ CASOOK
81EC 7E 81 DA JMP FIN
*************************************************************
. ****************************
*TRADUCCION DE NUMEROS ROMANOS A DECIMAL*
*************************************************************
. ****************************
CICLATE1
81EF 86 3F LDAA #'?
81F1 97 00 STAA ORDEN
CICLO
81F3 96 00 LDAA ORDEN
81F5 81 3F CMPA #'?
81F7 27 FA BEQ CICLO
ENTRADA
81F9 81 3D CMPA #61
. * IDENTIFICA EL FINAL DE LA CADENA CON EL =
81FB 27 39 BEQ TRADUCCION_A_ROMANO
81FD 81 4F CMPA #'O *CASO EN QUE RECIBA OK
81FF 27 21 BEQ CASOO_DECIMAL
8201 81 4B CMPA #'K
8203 27 25 BEQ CASOOK_DECIMAL
. * RECIBE UNA K
8205 BD 82 C2 JSR VALIDACION_DECIMAL
. * SI ES UN NUMERO DECIMAL REGRESA UN 1
8208 C1 01 CMPB #1
820A 26 0F BNE ENTRADA_INTERMEDIO_ROMANO
820C D6 10 LDAB NUMCARAC
820E C1 03 CMPB #3
8210 22 6E BHI ERROR_CANTIDAD
. * HAY ERROR SI LLEGAN MAS DE 4 CARACTERES
8212 5C INCB
8213 D7 10 STAB NUMCARAC
. * SE INCREMENTA EL NUMERO DE CARACTERES
8215 A7 00 STAA $00,X
8217 08 INX
8218 7E 81 EF JMP CICLATE1
ENTRADA_INTERMEDIO_ROMANO
821B C6 02 LDAB #2
821D D7 24 STAB BANDERA_TIPO_TRADUCCION
821F 7E 80 19 JMP ENTRADA_ROMANO
CASOO_DECIMAL
8222 D6 23 LDAB BANDERAOK
ADDR B1 B2 B3 B4 C:\Users\spiqu\Documents\Escuela\Estructura_ PAGE 11
8224 5C INCB
8225 D7 23 STAB BANDERAOK
8227 7E 81 EF JMP CICLATE1
CASOOK_DECIMAL
822A D6 23 LDAB BANDERAOK
822C C1 00 CMPB #0
822E 27 50 BEQ ERROR_CANTIDAD
8230 BD 82 8D JSR INICIALIZAR
8233 7E 81 EF JMP CICLATE1
TRADUCCION_A_ROMANO
8236 C6 01 LDAB #1
8238 D7 24 STAB BANDERA_TIPO_TRADUCCION
823A 96 11 LDAA BANDERA_ERROR
823C 81 01 CMPA #1
823E 27 AF BEQ CICLATE1
8240 18 CE 00 50 LDY #DIRECCION_RESULTADO
. * DIRECCION EN MEMORIA PARA ESCRIBIR
8244 CE 00 30 LDX #DIRECCION_INPUT
. * DIRECCION EN MEMORIA DE LOS NUMEROS
8247 96 10 LDAA NUMCARAC
. * COMPARACION DE NUMERO DE CARACTERES
8249 81 01 CMPA #1
824B 27 2A BEQ CASO_UNIDAD
824D 81 02 CMPA #2
824F 27 22 BEQ CASO_DECENA
8251 81 03 CMPA #3
8253 27 1A BEQ CASO_CENTENA
8255 81 04 CMPA #4
8257 27 03 BEQ CASO_MILLAR
8259 7E 81 EF JMP CICLATE1
. * EN EL CASO DE QUE NO SE HAGA NIEN LA VALIDACION
CASO_MILLAR
825C E6 00 LDAB $00,X
. * EL PRIMER CHAR SE PONE EN B
825E C1 31 CMPB #$31
8260 25 0D BLO CASO_CENTENA
. * IDENTIFICA SI EL VALOR ES MAYOR A 0
CASO_ESCRIBE_MILLAR
8262 86 4D LDAA #'M
. * CARGA EN EL ACUMULADOR A UNA M
8264 18 A7 00 STAA $00,Y
. * ESCRIBE EN LA DIR DE Y
8267 18 08 INY
. * INCREMENTAMOS Y PARA CONTINUAR ESCRIBIENDO
8269 5A DECB
. * SE DECREMENTAN B
826A C1 30 CMPB #$30
. * ASCII DE 0
826C 26 F4 BNE CASO_ESCRIBE_MILLAR
. * EN CASO DE RECIBIR UN PUNTO(.) SE REPITE
826E 08 INX
. * SE PASA AL SIGUIENTE DIGITO
CASO_CENTENA
826F BD 82 E3 JSR ESCRIBE_CENTENA
8272 08 INX
CASO_DECENA
ADDR B1 B2 B3 B4 C:\Users\spiqu\Documents\Escuela\Estructura_ PAGE 12
* GUARDA EN A, EL VALOR DE X
8273 BD 83 6E JSR ESCRIBE_DECENA
8276 08 INX
CASO_UNIDAD
8277 BD 83 EA JSR ESCRIBE_UNIDAD
827A 7E 85 3F JMP INSERTAR_TEXTO
827D 7E 81 EF JMP CICLATE1
ERROR_CANTIDAD
8280 CE 00 50 LDX #DIRECCION_RESULTADO
. * DIRECCION EN MEMORIA DEL MENSAJE
8283 18 CE 30 3D LDY #MENSAJE_E_RANGO
. * ORG FCC
8287 BD 82 D2 JSR ERROR
828A 7E 81 EF JMP CICLATE1
INICIALIZAR
828D CE 00 30 LDX #DIRECCION_INPUT
8290 18 CE 00 50 LDY #DIRECCION_RESULTADO
. * ES LA DIRECCION $50
8294 7F 00 24 CLR BANDERA_TIPO_TRADUCCION
8297 7F 00 23 CLR BANDERAOK
829A 7F 31 DE CLR UNO_R
829D 7F 00 10 CLR NUMCARAC
82A0 7F 00 11 CLR BANDERA_ERROR
LIM3
82A3 C6 00 LDAB #00
82A5 18 E7 00 STAB $00,Y
82A8 18 08 INY
82AA 18 8C 00 C0 CPY #$00C0
82AE 26 F3 BNE LIM3
82B0 18 CE 00 30 LDY #DIRECCION_INPUT
. * ES LA DIRECCION $30
LIM4
82B4 C6 00 LDAB #00
82B6 18 E7 00 STAB $00,Y
82B9 18 08 INY
82BB 18 8C 00 40 CPY #$0040
82BF 26 F3 BNE LIM4
82C1 39 RTS
VALIDACION_DECIMAL
82C2 81 30 CMPA #$30
. * VALOR EN ASCCI DE 0
82C4 25 07 BLO ERROR_DECIMAL
82C6 81 3A CMPA #$3A
. * VALOR EN ASCII DE 9
82C8 22 03 BHI ERROR_DECIMAL
82CA C6 01 LDAB #1
FIN_VALIDACION_DECIMAL
82CC 39 RTS
ERROR_DECIMAL
82CD C6 04 LDAB #4
82CF 7E 82 CC JMP FIN_VALIDACION_DECIMAL
ERROR
82D2 C6 01 LDAB #1
82D4 D7 11 STAB BANDERA_ERROR
ERROR_CICLO1
82D6 18 E6 00 LDAB $00,Y
. * CARACTER DEL FCC
82D9 E7 00 STAB $00,X * EN
ADDR B1 B2 B3 B4 C:\Users\spiqu\Documents\Escuela\Estructura_ PAGE 13
. LA DIRECCION DE X ESCRIBE EL CHAR
82DB 08 INX *
. INCREMENTA X
82DC 18 08 INY
. * INCREMENTA Y
82DE C1 2E CMPB #46 *
. VALOR EN ASCII DE PUNTO
82E0 26 F4 BNE ERROR_CICLO1 * SE
. CICLA HASTA ENCONTAR UN PUNTO(.)
82E2 39 RTS
ESCRIBE_CENTENA
82E3 3C PSHX *
. COPIA EL VALOR DE X
82E4 A6 00 LDAA $00,X *
. GUARDA X EN A
82E6 80 30 SUBA #$30
. * RESTA 30
82E8 81 01 CMPA #1
82EA 27 22 BEQ NUM_1_CENTENA
82EC 81 02 CMPA #2
82EE 27 27 BEQ NUM_2_CENTENA
82F0 81 03 CMPA #3
82F2 27 2C BEQ NUM_3_CENTENA
82F4 81 04 CMPA #4
82F6 27 31 BEQ NUM_4_CENTENA
82F8 81 05 CMPA #5
82FA 27 36 BEQ NUM_5_CENTENA
82FC 81 06 CMPA #6
82FE 27 3B BEQ NUM_6_CENTENA
8300 81 07 CMPA #7
8302 27 40 BEQ NUM_7_CENTENA
8304 81 08 CMPA #8
8306 27 45 BEQ NUM_8_CENTENA
8308 81 09 CMPA #9
830A 27 4A BEQ NUM_9_CENTENA
FIN_CENTENA
830C 38 PULX
830D 39 RTS
NUM_1_CENTENA
830E CE 31 A4 LDX #CIEN_R *
. DIRECCION DE CIEN
8311 BD 83 5F JSR CICLO_ESCRITURA
8314 7E 83 0C JMP FIN_CENTENA
NUM_2_CENTENA
8317 CE 31 A6 LDX #DOSCIENTOS_R
. * DIRECCION DE DOSCIENTOS
831A BD 83 5F JSR CICLO_ESCRITURA
831D 7E 83 0C JMP FIN_CENTENA
NUM_3_CENTENA
8320 CE 31 A9 LDX #TRESCIENTOS_R *
. DIRECCION DE TRESCIENTOS
8323 BD 83 5F JSR CICLO_ESCRITURA
8326 7E 83 0C JMP FIN_CENTENA
NUM_4_CENTENA
8329 CE 31 AD LDX #CUATROCIENTOS_R
. * DIRECCION DE CUATROCIENTOS
832C BD 83 5F JSR CICLO_ESCRITURA
832F 7E 83 0C JMP FIN_CENTENA
NUM_5_CENTENA
8332 CE 31 B0 LDX #QUINIENTOS_R *
. DIRECCION DE QUINIENTOS
8335 BD 83 5F JSR CICLO_ESCRITURA
8338 7E 83 0C JMP FIN_CENTENA
NUM_6_CENTENA
833B CE 31 B2 LDX #SEISCIENTOS_R *
ADDR B1 B2 B3 B4 C:\Users\spiqu\Documents\Escuela\Estructura_ PAGE 14
. DIRECCION DE SEISCIENTOS
833E BD 83 5F JSR CICLO_ESCRITURA
8341 7E 83 0C JMP FIN_CENTENA
NUM_7_CENTENA
8344 CE 31 B5 LDX #SETECIENTOS_R
. * DIRECCION DE SETECIENTOS
8347 BD 83 5F JSR CICLO_ESCRITURA
834A 7E 83 0C JMP FIN_CENTENA
NUM_8_CENTENA
834D CE 31 B9 LDX #OCHOCIENTOS_R
. * DIRECCION DE OCHOCIENTOS
8350 BD 83 5F JSR CICLO_ESCRITURA
8353 7E 83 0C JMP FIN_CENTENA
NUM_9_CENTENA
8356 CE 31 BE LDX #NOVECIENTOS_R
. * DIRECCION DE NOVSECIENTOS
8359 BD 83 5F JSR CICLO_ESCRITURA
835C 7E 83 0C JMP FIN_CENTENA
CICLO_ESCRITURA
835F E6 00 LDAB $00,X *
. TOMA CARACTER DEL FCC
8361 18 E7 00 STAB $00,Y *
. ESCRIBE EN LA DIRECCION DE Y EL CHAR
8364 08 INX
8365 18 08 INY
8367 C1 20 CMPB #$20 *
. VALOR EN ASCII DEL ESPACIO
8369 26 F4 BNE CICLO_ESCRITURA
. * SE REPITE HASTA QUE NO SE ENCUENTRE UN PUNTO(.)
836B 18 09 DEY
836D 39 RTS
ESCRIBE_DECENA
836E 3C PSHX
836F A6 00 LDAA $00,X
8371 80 30 SUBA #$30
8373 81 01 CMPA #1
8375 27 22 BEQ NUM_1_DECENA
8377 81 02 CMPA #2
8379 27 27 BEQ NUM_2_DECENA
837B 81 03 CMPA #3
837D 27 2C BEQ NUM_3_DECENA
837F 81 04 CMPA #4
8381 27 31 BEQ NUM_4_DECENA
8383 81 05 CMPA #5
8385 27 36 BEQ NUM_5_DECENA
8387 81 06 CMPA #6
8389 27 3B BEQ NUM_6_DECENA
838B 81 07 CMPA #7
838D 27 40 BEQ NUM_7_DECENA
838F 81 08 CMPA #8
8391 27 45 BEQ NUM_8_DECENA
8393 81 09 CMPA #9
8395 27 4A BEQ NUM_9_DECENA
FIN_DECENA
8397 38 PULX
8398 39 RTS
NUM_1_DECENA
8399 CE 31 C1 LDX #DIEZ_R
. * DIRECCION DE DIEZ
839C BD 83 5F JSR CICLO_ESCRITURA
839F 7E 83 97 JMP FIN_DECENA
NUM_2_DECENA
ADDR B1 B2 B3 B4 C:\Users\spiqu\Documents\Escuela\Estructura_ PAGE 15
83A2 CE 31 C3 LDX #VEINTE_R
. * DIRECCION DE VEINTE
83A5 BD 83 5F JSR CICLO_ESCRITURA
83A8 7E 83 97 JMP FIN_DECENA
NUM_3_DECENA
83AB CE 31 C6 LDX #TREINTA_R
. * DIRECCION DE TREINTA
83AE BD 83 5F JSR CICLO_ESCRITURA
83B1 7E 83 97 JMP FIN_DECENA
NUM_4_DECENA
83B4 CE 31 CA LDX #CUARENTA_R
. * DIRECCION DE CUARENTA
83B7 BD 83 5F JSR CICLO_ESCRITURA
83BA 7E 83 97 JMP FIN_DECENA
NUM_5_DECENA
83BD CE 31 CD LDX #CINCUENTA_R
. * DIRECCION DE CINCUENTA
83C0 BD 83 5F JSR CICLO_ESCRITURA
83C3 7E 83 97 JMP FIN_DECENA
NUM_6_DECENA
83C6 CE 31 CF LDX #SESENTA_R
. * DIRECCION DE SESENTA
83C9 BD 83 5F JSR CICLO_ESCRITURA
83CC 7E 83 97 JMP FIN_DECENA
NUM_7_DECENA
83CF CE 31 D2 LDX #SETENTA_R
. * DIRECCION DE SETENTA
83D2 BD 83 5F JSR CICLO_ESCRITURA
83D5 7E 83 97 JMP FIN_DECENA
NUM_8_DECENA
83D8 CE 31 D6 LDX #OCHENTA_R
. * DIRECCION DE OCHENTA
83DB BD 83 5F JSR CICLO_ESCRITURA
83DE 7E 83 97 JMP FIN_DECENA
NUM_9_DECENA
83E1 CE 31 DB LDX #NOVENTA_R
. * DIRECCION DE NOVENTA
83E4 BD 83 5F JSR CICLO_ESCRITURA
83E7 7E 83 97 JMP FIN_DECENA
ESCRIBE_UNIDAD
83EA 3C PSHX
83EB A6 00 LDAA $00,X
83ED 80 30 SUBA #$30
83EF 81 01 CMPA #1
83F1 27 22 BEQ NUM_1_UNIDAD
83F3 81 02 CMPA #2
83F5 27 27 BEQ NUM_2_UNIDAD
83F7 81 03 CMPA #3
83F9 27 2C BEQ NUM_3_UNIDAD
83FB 81 04 CMPA #4
83FD 27 31 BEQ NUM_4_UNIDAD
83FF 81 05 CMPA #5
8401 27 36 BEQ NUM_5_UNIDAD
8403 81 06 CMPA #6
8405 27 3B BEQ NUM_6_UNIDAD
8407 81 07 CMPA #7
8409 27 40 BEQ NUM_7_UNIDAD
840B 81 08 CMPA #8
840D 27 45 BEQ NUM_8_UNIDAD