OpenCores
URL https://opencores.org/ocsvn/8051/8051/trunk

Subversion Repositories 8051

[/] [8051/] [tags/] [rel_1/] [asm/] [testall.asm] - Blame information for rev 24

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 24 markom
; Program tests all instructions except:
2
; MOVX(1-4) and RETI
3
 
4
        ; Clear RAM
5
        mov  r0,#128
6
ram_clr:
7
        dec  r0
8
        mov  @r0,#0
9
        mov  a,r0
10
        jnz  ram_clr
11
        mov  PSW,#0
12
 
13
;;;;;;;;;;;;;;;;;   INST 1 ;;;;;;;;;;;;;;;;;;;;;;;
14
 
15
;; acall addr11
16
        mov  a,#85
17
        acall testret
18
        inc  a
19
        jc   fail1
20
        subb a,#87
21
        jz   done1
22
fail1:
23
        mov  P1,1
24
        ljmp failed
25
done1:
26
 
27
;;;;;;;;;;;;;;;;   INST 2 ;;;;;;;;;;;;;;;;;;;;;;;
28
 
29
;; add a,Rn (2) -- test if ALU and flag setting works
30
        mov  a,#10
31
        mov  r0,#117
32
        mov  r1,#10
33
        mov  r2,#127
34
        mov  r3,#128
35
        mov  r5,#245
36
        mov  r7,#250
37
 
38
        add  a,r0
39
        jc   fail2
40
        subb a,#127
41
        jnz  fail2
42
 
43
        add  a,r2
44
        jc   fail2
45
        subb a,#137
46
        jnz  fail2
47
 
48
        add  a,r3
49
        jc   fail2
50
        subb a,#138
51
        jnz  fail2
52
 
53
        add  a,r5
54
        jc   fail2
55
        subb a,#255
56
        jnz  fail2
57
 
58
        add  a,r7
59
        jnc  fail2
60
        clr  c
61
        subb a,#4
62
        jnz  fail2
63
 
64
        mov  a,#117
65
        add  a,r1
66
        jc   fail2
67
        subb a,#127
68
        jnz  fail2
69
 
70
        mov  a,#127
71
        add  a,r1
72
        jc   fail2
73
        subb a,#137
74
        jnz  fail2
75
 
76
        mov  a,#128
77
        add  a,r1
78
        jc   fail2
79
        subb a,#138
80
        jnz  fail2
81
 
82
        mov  a,#245
83
        add  a,r1
84
        jc   fail2
85
        subb a,#255
86
        jnz  fail2
87
 
88
        mov  a,#250
89
        add  a,r1
90
        jnc   fail2
91
        clr  c
92
        subb a,#4
93
        jnz  fail2
94
 
95
        ljmp done2
96
 
97
fail2:
98
        mov  P1,#2
99
        ljmp failed
100
done2:
101
 
102
;;;;;;;;;;;;;;;;   INST 3 ;;;;;;;;;;;;;;;;;;;;;;;
103
 
104
;; add a,direct (3) -- test if ALU and flag setting works
105
 
106
        mov  100,#117
107
        mov  a,#10
108
        add  a,100
109
        jc   fail3
110
        subb a,#127
111
        jnz  fail3
112
 
113
        mov  100,#127
114
        add  a,100
115
        jc   fail3
116
        subb a,#137
117
        jnz  fail3
118
 
119
        mov  100,#128
120
        add  a,100
121
        jc   fail3
122
        subb a,#138
123
        jnz  fail3
124
 
125
        mov  100,#245
126
        add  a,100
127
        jc   fail3
128
        subb a,#255
129
        jnz  fail3
130
 
131
        mov  100,#250
132
        add  a,100
133
        jnc   fail3
134
        clr  c
135
        subb a,#4
136
        jnz  fail3
137
 
138
        mov  a,#117
139
        mov  100,#10
140
        add  a,100
141
        jc   fail3
142
        subb a,#127
143
        jnz  fail3
144
 
145
        mov  a,#127
146
        mov  100,#10
147
        add  a,100
148
        jc   fail3
149
        subb a,#137
150
        jnz  fail3
151
 
152
        mov  a,#128
153
        add  a,100
154
        jc   fail3
155
        subb a,#138
156
        jnz  fail3
157
 
158
        mov  a,#245
159
        add  a,100
160
        jc   fail3
161
        subb a,#255
162
        jnz  fail3
163
 
164
        mov  a,#250
165
        add  a,100
166
        jnc  fail3
167
        clr  c
168
        subb a,#4
169
        jnz  fail3
170
 
171
        ljmp done3
172
 
173
fail3:
174
        jz   done3
175
        mov  P1,#3
176
        ljmp failed
177
done3:
178
 
179
;;;;;;;;;;;;;;;;   INST 4 ;;;;;;;;;;;;;;;;;;;;;;;
180
 
181
;; add a,@Ri (4) -- indexed and simple CY
182
        mov  a,#40
183
        mov  r0,#100
184
        mov  100,#10
185
        mov  r1,#101
186
        mov  101,#100
187
 
188
        add  a,@r0
189
        jc   fail4
190
        subb a,#50
191
        jnz  fail4
192
 
193
        add  a,@r1
194
        jc   fail4
195
        subb a,#140
196
        jnz  fail4
197
 
198
        mov  r1,#102
199
        mov  102,#200
200
        add  a,@r1
201
        jnc  fail4
202
        clr  c
203
        subb a,#240
204
        jnz  fail4
205
        ljmp done4
206
 
207
fail4:
208
        mov  P1,#4
209
        ljmp failed
210
done4:
211
 
212
;;;;;;;;;;;;;;;;   INST 5 ;;;;;;;;;;;;;;;;;;;;;;;
213
 
214
;; add a,#data (5)
215
        mov  a,#10
216
 
217
        add  a,#117
218
        jc   fail5
219
        subb a,#127
220
        jnz  fail5
221
 
222
        add  a,#127
223
        jc   fail5
224
        subb a,#137
225
        jnz  fail5
226
 
227
        add  a,#128
228
        jc   fail5
229
        subb a,#138
230
        jnz  fail5
231
 
232
        add  a,#245
233
        jc   fail5
234
        subb a,#255
235
        jnz  fail5
236
 
237
        add  a,#250
238
        jnc   fail5
239
        clr  c
240
        subb a,#4
241
        jnz  fail5
242
 
243
        mov  a,#117
244
        add  a,#10
245
        jc   fail5
246
        subb a,#127
247
        jnz  fail5
248
 
249
        mov  a,#127
250
        add  a,#10
251
        jc   fail5
252
        subb a,#137
253
        jnz  fail5
254
 
255
        mov  a,#128
256
        add  a,#10
257
        jc   fail5
258
        subb a,#138
259
        jnz  fail5
260
 
261
        mov  a,#245
262
        add  a,#10
263
        jc   fail5
264
        subb a,#255
265
        jnz  fail5
266
 
267
        mov  a,#250
268
        add  a,#10
269
        jnc  fail5
270
        clr  c
271
        subb a,#4
272
        jnz  fail5
273
 
274
        ljmp done5
275
 
276
fail5:
277
        jz   done5
278
        mov  P1,#5
279
        ljmp failed
280
        mov  P1,#5
281
        ljmp failed
282
done5:
283
 
284
;;;;;;;;;;;;;;;;   INST 6 ;;;;;;;;;;;;;;;;;;;;;;;
285
 
286
;; addc a,Rn (6)
287
        mov  a,#10
288
        mov  r0,#10
289
 
290
        clr  c
291
        addc a,r0
292
        jc   fail6
293
        subb a,#20
294
        jnz  fail6
295
 
296
        setb c
297
        addc a,r0
298
        jc   fail6
299
        subb a,#21
300
        jnz  fail6
301
 
302
        mov  a,#100
303
        clr  c
304
        addc a,r0
305
        jc   fail6
306
        subb a,#110
307
        jnz  fail6
308
 
309
        setb c
310
        addc a,r0
311
        jc   fail6
312
        subb a,#111
313
        jnz  fail6
314
 
315
        mov  a,#250
316
        clr  c
317
        addc a,r0
318
        jnc  fail6
319
        clr  c
320
        subb a,#4
321
        jnz  fail6
322
 
323
        setb c
324
        addc a,r0
325
        jnc  fail6
326
        clr  c
327
        subb a,#5
328
        jnz  fail6
329
 
330
        ljmp done6
331
fail6:
332
        mov  P1,#6
333
        ljmp failed
334
done6:
335
 
336
;;;;;;;;;;;;;;;;   INST 7 ;;;;;;;;;;;;;;;;;;;;;;;
337
 
338
;; addc a,direct (7)
339
        mov  a,#10
340
        mov  100,#10
341
 
342
        clr  c
343
        addc a,100
344
        jc   fail7
345
        subb a,#20
346
        jnz  fail7
347
 
348
        setb c
349
        addc a,100
350
        jc   fail7
351
        subb a,#21
352
        jnz  fail7
353
 
354
        mov  a,#100
355
        clr  c
356
        addc a,100
357
        jc   fail7
358
        subb a,#110
359
        jnz  fail7
360
 
361
        setb c
362
        addc a,100
363
        jc   fail7
364
        subb a,#111
365
        jnz  fail7
366
 
367
        mov  a,#250
368
        clr  c
369
        addc a,100
370
        jnc  fail7
371
        clr  c
372
        subb a,#4
373
        jnz  fail7
374
 
375
        setb c
376
        addc a,100
377
        jnc  fail7
378
        clr  c
379
        subb a,#5
380
        jnz  fail7
381
 
382
        ljmp done7
383
fail7:
384
        mov  P1,#7
385
        ljmp failed
386
done7:
387
 
388
;;;;;;;;;;;;;;;;   INST 8 ;;;;;;;;;;;;;;;;;;;;;;;
389
 
390
;; addc a,@Ri (8)
391
        mov  a,#10
392
        mov  r0,#100
393
        mov  100,#11
394
 
395
        clr  c
396
        addc a,@r0
397
        jc   fail8
398
        subb a,#21
399
        jnz  fail8
400
 
401
        setb c
402
        addc a,@r0
403
        jc   fail8
404
        subb a,#22
405
        jnz  fail8
406
 
407
        mov  a,#100
408
        clr  c
409
        addc a,@r0
410
        jc   fail8
411
        subb a,#111
412
        jnz  fail8
413
 
414
        setb c
415
        addc a,@r0
416
        jc   fail8
417
        subb a,#112
418
        jnz  fail8
419
 
420
        mov  a,#250
421
        clr  c
422
        addc a,@r0
423
        jnc  fail8
424
        clr  c
425
        subb a,#5
426
        jnz  fail8
427
 
428
        setb c
429
        addc a,@r0
430
        jnc  fail8
431
        clr  c
432
        subb a,#6
433
        jnz  fail8
434
 
435
        ljmp done8
436
fail8:
437
        mov  P1,#8
438
        ljmp failed
439
done8:
440
 
441
 
442
;;;;;;;;;;;;;;;;   INST 9 ;;;;;;;;;;;;;;;;;;;;;;;
443
 
444
;; addc a,#data (9)
445
        mov  a,#14
446
 
447
        clr  c
448
        addc a,#14
449
        jc   fail9
450
        subb a,#28
451
        jnz  fail9
452
 
453
        setb c
454
        addc a,#15
455
        jc   fail9
456
        subb a,#30
457
        jnz  fail9
458
 
459
        mov  a,#110
460
        clr  c
461
        addc a,#20
462
        jc   fail9
463
        subb a,#130
464
        jnz  fail9
465
 
466
        setb c
467
        addc a,#20
468
        jc   fail9
469
        subb a,#131
470
        jnz  fail9
471
 
472
        mov  a,#250
473
        clr  c
474
        addc a,#11
475
        jnc  fail9
476
        clr  c
477
        subb a,#5
478
        jnz  fail9
479
 
480
        setb c
481
        addc a,#11
482
        jnc  fail9
483
        clr  c
484
        subb a,#6
485
        jnz  fail9
486
 
487
        ljmp done9
488
fail9:
489
        mov  P1,#9
490
        ljmp failed
491
done9:
492
 
493
;;;;;;;;;;;;;;;;  INST 10 ;;;;;;;;;;;;;;;;;;;;;;;
494
 
495
;; ajmp (10)
496
        setb c
497
        ajmp done10
498
fail10:
499
        mov  P1,#10
500
        ljmp failed
501
done10:clr  c
502
        jc   fail10
503
 
504
;;;;;;;;;;;;;;;;  INST 11 ;;;;;;;;;;;;;;;;;;;;;;;
505
 
506
;; anl a,Rn (11)
507
        mov  r0,#250
508
        clr  c
509
        clr  a
510
        mov  a,#171
511
        anl  a,r0
512
        jc   fail11
513
        jnz  fail11
514
        subb a,#166
515
        jnz  fail11
516
 
517
        mov  r0,#190
518
        mov  a,#84
519
        inc  a
520
        setb c
521
        anl  a,r0
522
        jz   fail11
523
        jnc  fail11
524
        clr  c
525
        subb a,#0
526
        jnz  fail11
527
        ljmp done11
528
 
529
fail11:
530
        mov  P1,#11
531
        ljmp failed
532
done11:
533
 
534
;;;;;;;;;;;;;;;;  INST 12 ;;;;;;;;;;;;;;;;;;;;;;;
535
 
536
;; anl a,direct (12)
537
        mov  127,#250
538
        clr  c
539
        clr  a
540
        mov  a,#171
541
        anl  a,127
542
        jc   fail12
543
        jnz  fail12
544
        subb a,#166
545
        jnz  fail12
546
 
547
        mov  127,#190
548
        mov  a,#84
549
        inc  a
550
        setb c
551
        anl  a,127
552
        jz   fail12
553
        jnc  fail12
554
        clr  c
555
        subb a,#0
556
        jnz  fail12
557
        ljmp done12
558
 
559
fail12:
560
        mov  P1,#12
561
        ljmp failed
562
done12:
563
 
564
;;;;;;;;;;;;;;;;  INST 13 ;;;;;;;;;;;;;;;;;;;;;;;
565
 
566
;; anl a,@Ri (13)
567
        mov  r0,127
568
        clr  c
569
        clr  a
570
        mov  127,#171
571
        mov  a,#250
572
        anl  a,@r0
573
        jc   fail13
574
        jnz  fail13
575
        subb a,#166
576
        jnz  fail13
577
 
578
        mov  127,#190
579
        mov  a,#84
580
        inc  a
581
        setb c
582
        anl  a,@r0
583
        jz   fail13
584
        jnc  fail13
585
        clr  c
586
        subb a,#0
587
        jnz  fail13
588
        ljmp done13
589
 
590
fail13:
591
        anl  a,@r0
592
        jz   done13
593
        mov  P1,#13
594
        ljmp failed
595
done13:
596
 
597
;;;;;;;;;;;;;;;;  INST 14 ;;;;;;;;;;;;;;;;;;;;;;;
598
 
599
;; anl a,#data (14)
600
        clr  c
601
        clr  a
602
        mov  a,#250
603
        anl  a,#171
604
        jc   fail14
605
        jnz  fail14
606
        subb a,#166
607
        jnz  fail14
608
 
609
        mov  a,#190
610
        mov  a,#84
611
        inc  a
612
        setb c
613
        anl  a,@r0
614
        jz   fail14
615
        jnc  fail14
616
        clr  c
617
        subb a,#0
618
        jnz  fail14
619
        ljmp done14
620
 
621
fail14:
622
        subb a,#255
623
        jz   done14
624
        mov  P1,#14
625
        ljmp failed
626
done14:
627
 
628
;;;;;;;;;;;;;;;;  INST 15 ;;;;;;;;;;;;;;;;;;;;;;;
629
 
630
;; anl direct,a (15)
631
        mov  127,#250
632
        clr  c
633
        clr  a
634
        mov  a,#171
635
        anl  127,a
636
        jc   fail15
637
        mov  a,127
638
        jnz  fail15
639
        subb a,#166
640
        jnz  fail15
641
 
642
        mov  127,#190
643
        mov  a,#84
644
        inc  a
645
        setb c
646
        anl  127,a
647
        mov  a,127
648
        jz   fail15
649
        jnc  fail15
650
        clr  c
651
        subb a,#0
652
        jnz  fail15
653
        ljmp done15
654
 
655
fail15:
656
        mov  P1,#15
657
        ljmp failed
658
done15:
659
 
660
;;;;;;;;;;;;;;;;  INST 16 ;;;;;;;;;;;;;;;;;;;;;;;
661
 
662
;; anl direct,#data (16)
663
        mov  127,#250
664
        clr  c
665
        clr  a
666
        anl  127,#171
667
        jc   fail16
668
        mov  a,127
669
        jnz  fail16
670
        subb a,#166
671
        jnz  fail16
672
 
673
        mov  127,#190
674
        mov  a,#84
675
        inc  a
676
        setb c
677
        anl  127,#85
678
        mov  a,127
679
        jz   fail16
680
        jnc  fail16
681
        clr  c
682
        subb a,#0
683
        jnz  fail16
684
        ljmp done16
685
 
686
fail16:
687
        mov  P1,#16
688
        ljmp failed
689
done16:
690
 
691
;;;;;;;;;;;;;;;;  INST 17 ;;;;;;;;;;;;;;;;;;;;;;;
692
 
693
;; anl c,bit (17)
694
        mov  a,#128
695
        clr  c
696
        anl  c,acc.7
697
        jc   fail17
698
        mov  a,#128
699
        setb c
700
        anl  c,acc.7
701
        jnc  fail17
702
        ljmp done17
703
 
704
fail17:
705
        mov  P1,#17
706
        ljmp failed
707
done17:
708
 
709
;;;;;;;;;;;;;;;;  INST 18 ;;;;;;;;;;;;;;;;;;;;;;;
710
 
711
;; anl c,/bit (18)
712
        mov  a,#128
713
        clr  c
714
        anl  c,/acc.7
715
        jnc  fail18
716
        mov  a,#128
717
        setb c
718
        anl  c,/acc.7
719
        jc   fail18
720
        ljmp done18
721
 
722
fail18:
723
        mov  P1,#17
724
        ljmp failed
725
done18:
726
 
727
;;;;;;;;;;;;;;;;  INST 19 ;;;;;;;;;;;;;;;;;;;;;;;
728
 
729
;; cjne a,direct,rel (19)
730
        mov  a,#228
731
        mov  100,#228
732
        cjne a,100,fail19
733
        jc   fail19
734
 
735
        mov  a,#227
736
        cjne a,100,CHECK_C_19
737
        ljmp fail19
738
CHECK_C_19:     ;Checks that carry was set
739
        jnc  fail19
740
 
741
        mov  a,#229
742
        cjne a,100,CHECK_NC_19
743
        ljmp fail19
744
 
745
CHECK_NC_19:    ;Checks that carry was not set
746
        jc   fail19
747
        ljmp done19
748
 
749
fail19:
750
        mov  P1,#19
751
        ljmp failed
752
done19:
753
 
754
;;;;;;;;;;;;;;;;  INST 20 ;;;;;;;;;;;;;;;;;;;;;;;
755
 
756
;; cjne a,#data,rel (20)
757
        mov  a,#100
758
        cjne a,#100,fail20
759
        jc   fail20
760
 
761
        mov  a,#99
762
        cjne a,#100,CHECK_C_20
763
        ljmp fail20
764
CHECK_C_20:     ;Checks that carry was set
765
        jnc  fail20
766
 
767
        mov  a,#101
768
        cjne a,#100,CHECK_NC_20
769
        ljmp fail20
770
 
771
CHECK_NC_20:    ;Checks that carry was not set
772
        jc   fail20
773
        ljmp done20
774
 
775
fail20:
776
        mov  P1,#20
777
        ljmp failed
778
done20:
779
 
780
;;;;;;;;;;;;;;;;  INST 21 ;;;;;;;;;;;;;;;;;;;;;;;
781
 
782
;; cjne Rn,#data,rel (21)
783
        mov  r1,#100
784
        cjne r1,#100,fail21
785
        jc   fail21
786
 
787
        mov  r1,#99
788
        cjne r1,#100,CHECK_C_21
789
        ljmp fail21
790
CHECK_C_21:     ;Checks that carry was set
791
        jnc  fail21
792
 
793
        mov  r1,#101
794
        cjne r1,#100,CHECK_NC_21
795
        ljmp fail21
796
 
797
CHECK_NC_21:    ;Checks that carry was not set
798
        jc   fail21
799
        ljmp done21
800
 
801
fail21:
802
        mov  P1,#21
803
        ljmp failed
804
done21:
805
 
806
;;;;;;;;;;;;;;;;  INST 22 ;;;;;;;;;;;;;;;;;;;;;;;
807
 
808
;; cjne @Ri,#data,rel (22)
809
        mov  125,#99
810
        mov  126,#100
811
        mov  127,#101
812
        mov  r1,#125
813
        cjne @r1,#100,fail22
814
        jc   fail22
815
 
816
        mov  r1,#126
817
        cjne @r1,#100,CHECK_C_22
818
        ljmp fail22
819
CHECK_C_22:     ;Checks that carry was set
820
        jnc  fail22
821
 
822
        mov  r1,#127
823
        cjne @r1,#100,CHECK_NC_22
824
        ljmp fail22
825
 
826
CHECK_NC_22:    ;Checks that carry was not set
827
        jc   fail22
828
        ljmp done22
829
 
830
fail22:
831
        mov  P1,#22
832
        ljmp failed
833
done22:
834
 
835
;;;;;;;;;;;;;;;;  INST 23 ;;;;;;;;;;;;;;;;;;;;;;;
836
 
837
;; clr a (23)
838
        mov  a,#86
839
        clr  a
840
        jnz  fail23
841
        mov  a,#86
842
        clr  a
843
        mov  r0,a
844
        mov  a,r0
845
        jnz  fail23
846
        ljmp done23
847
 
848
fail23:
849
        mov  P1,#23
850
        ljmp failed
851
done23:
852
 
853
;;;;;;;;;;;;;;;;  INST 24 ;;;;;;;;;;;;;;;;;;;;;;;
854
 
855
;; clr c (24)
856
        setb c
857
        clr  c
858
        jc   fail24
859
        clr  c
860
        jc   fail24
861
        ljmp done24
862
 
863
fail24:
864
        mov  P1,#24
865
        ljmp failed
866
done24:
867
 
868
;;;;;;;;;;;;;;;;  INST 25 ;;;;;;;;;;;;;;;;;;;;;;;
869
 
870
;; clr bit (25)
871
        setb a.7
872
        clr  a.7
873
        jc   fail25
874
        clr  a.7
875
        jc   fail25
876
        ljmp done25
877
 
878
fail25:
879
        mov  P1,#25
880
        ljmp failed
881
done25:
882
 
883
;;;;;;;;;;;;;;;;  INST 26 ;;;;;;;;;;;;;;;;;;;;;;;
884
 
885
;; cpl a (26)
886
        mov  a,#255
887
        cpl  a
888
        jnz  fail26
889
 
890
        mov  a,#85
891
        cpl  a
892
        clr  c
893
        subb a,#190
894
        jnz  fail26
895
        ljmp done26
896
 
897
fail26:
898
        mov  P1,#26
899
        ljmp failed
900
done26:
901
 
902
;;;;;;;;;;;;;;;;  INST 27 ;;;;;;;;;;;;;;;;;;;;;;;
903
 
904
;; cpl c (27)
905
        setb c
906
        cpl  c
907
        jc   fail27
908
        clr  c
909
        cpl  c
910
        jnc  fail27
911
        ljmp done27
912
 
913
fail27:
914
        mov  P1,#27
915
        ljmp failed
916
done27:
917
 
918
;;;;;;;;;;;;;;;;  INST 28 ;;;;;;;;;;;;;;;;;;;;;;;
919
 
920
;; cpl bit (28)
921
        clr  a
922
        setb a.5
923
        cpl  a.5
924
        jnz  fail28
925
        clr  a.5
926
        cpl  a.5
927
        jz   fail28
928
        ljmp done28
929
 
930
fail28:
931
        mov  P1,#28
932
        ljmp failed
933
done28:
934
 
935
;;;;;;;;;;;;;;;;  INST 29 ;;;;;;;;;;;;;;;;;;;;;;;
936
 
937
;; DA a (29)
938
        mov  a,#0x80
939
        add  a,#0x99
940
        da   a
941
        subb a,#0x78    ;Will clr acc if c set
942
        jz   done29
943
        mov  P1,#29
944
        ljmp failed
945
done29:
946
 
947
 
948
;;;;;;;;;;;;;;;;;  INST 30 ;;;;;;;;;;;;;;;;;;;;;;
949
 
950
;; dec a (30)
951
        mov  a,#10
952
        setb c
953
        dec  a
954
        jnc  fail30
955
        clr  c
956
        subb a,#9
957
        jnz  fail30
958
 
959
        mov  a,#0
960
        clr  c
961
        dec  a
962
        jc   fail30
963
        subb a,#255
964
        jnz  fail30
965
        ljmp done30
966
 
967
fail30:
968
        mov  P1,#30
969
        ljmp failed
970
done30:
971
 
972
;;;;;;;;;;;;;;;;;  INST 31 ;;;;;;;;;;;;;;;;;;;;;;
973
 
974
;; dec Rn (31)
975
        mov  r2,#10
976
        setb c
977
        dec  r2
978
        jnc  fail31
979
        clr  c
980
        mov  a,r2
981
        subb a,#9
982
        jnz  fail31
983
 
984
        mov  r2,#0
985
        clr  c
986
        dec  r2
987
        jc   fail31
988
        mov  a,r2
989
        subb a,#255
990
        jnz  fail31
991
        ljmp done31
992
 
993
fail31:
994
        mov  P1,#31
995
        ljmp failed
996
done31:
997
 
998
;;;;;;;;;;;;;;;;;  INST 32 ;;;;;;;;;;;;;;;;;;;;;;
999
 
1000
;; dec direct (32)
1001
        mov  127,#10
1002
        setb c
1003
        dec  127
1004
        jnc  fail32
1005
        clr  c
1006
        mov  a,127
1007
        subb a,#9
1008
        jnz  fail32
1009
 
1010
        mov  127,#0
1011
        clr  c
1012
        dec  127
1013
        jc   fail32
1014
        mov  a,127
1015
        subb a,#255
1016
        jnz  fail32
1017
        ljmp done32
1018
 
1019
fail32:
1020
        mov  P1,#32
1021
        ljmp failed
1022
done32:
1023
 
1024
;;;;;;;;;;;;;;;;;  INST 33 ;;;;;;;;;;;;;;;;;;;;;;
1025
 
1026
;; dec @Ri (33)
1027
        mov  r0,#127
1028
        mov  @r0,#10
1029
        setb c
1030
        dec  @r0
1031
        jnc  fail33
1032
        clr  c
1033
        mov  a,@r0
1034
        subb a,#9
1035
        jnz  fail33
1036
 
1037
        mov  @r0,#0
1038
        clr  c
1039
        dec  @r0
1040
        jc   fail33
1041
        mov  a,@r0
1042
        subb a,#255
1043
        jnz  fail33
1044
        ljmp done33
1045
 
1046
fail33:
1047
        mov  P1,#33
1048
        ljmp failed
1049
done33:
1050
 
1051
 
1052
;;;;;;;;;;;;;;;;;  INST 34 ;;;;;;;;;;;;;;;;;;;;;;
1053
 
1054
;; div AB (34)
1055
        mov  a,#251
1056
        mov  B,#18
1057
        div  AB
1058
        jc   fail34
1059
        mov  c,OV
1060
        jc   fail34
1061
        subb a,#13
1062
        jnz  fail34
1063
        mov  a,B
1064
        subb a,#17
1065
        ljmp fail34
1066
 
1067
        mov  a,#180
1068
        mov  B,#15
1069
        div  AB
1070
        jc   fail34
1071
        mov  c,OV
1072
        jc   fail34
1073
        subb a,#12
1074
        jnz  fail34
1075
        mov  a,B
1076
        subb a,#0
1077
        ljmp fail34
1078
 
1079
        mov  a,#0
1080
        mov  B,#15
1081
        div  AB
1082
        jc   fail34
1083
        mov  c,OV
1084
        jc   fail34
1085
        subb a,#0
1086
        jnz  fail34
1087
        mov  a,B
1088
        subb a,#0
1089
 
1090
        mov  a,#0
1091
        mov  B,#0
1092
        div  AB
1093
        jc   fail34
1094
        mov  c,OV
1095
        jnc  fail34
1096
 
1097
        mov  a,#170
1098
        mov  B,#0
1099
        div  AB
1100
        jc   fail34
1101
        mov  c,OV
1102
        jnc  fail34
1103
        ljmp fail34
1104
fail34:
1105
        mov  P1,#34
1106
        ljmp failed
1107
done34:
1108
 
1109
 
1110
;;;;;;;;;;;;;;;;;  INST 35 ;;;;;;;;;;;;;;;;;;;;;;
1111
 
1112
;; djnz Rn,rel (35)
1113
        mov  r0,#10
1114
        djnz r0,JUMP_35 ;Should jump
1115
        mov  P1,#35
1116
        ljmp failed
1117
JUMP_35:
1118
        mov  r0,#0
1119
        djnz r0,JUMP_35B        ;Should jump
1120
        mov  P1,#35
1121
        ljmp failed
1122
JUMP_35B:
1123
        mov  r0,#1
1124
        djnz r0,NOT_JUMP_35     ;Should not jump
1125
        ajmp done35
1126
NOT_JUMP_35:
1127
        mov  P1,#35
1128
        ljmp failed
1129
done35:
1130
 
1131
;;;;;;;;;;;;;;;;;  INST 36 ;;;;;;;;;;;;;;;;;;;;;;
1132
 
1133
;; djnz direct,rel (36)
1134
        mov  127,#10
1135
        djnz 127,JUMP_36        ;Should jump
1136
        mov  P1,#36
1137
        ljmp failed
1138
JUMP_36:
1139
        mov  127,#0
1140
        djnz 127,JUMP_36B       ;Should jump
1141
        mov  P1,#36
1142
        ljmp failed
1143
JUMP_36B:
1144
        mov  127,#1
1145
        djnz 127,NOT_JUMP_36    ;Should not jump
1146
        ajmp done36
1147
NOT_JUMP_36:
1148
        mov  P1,#36
1149
        ljmp failed
1150
done36:
1151
 
1152
;;;;;;;;;;;;;;;;;  INST 37 ;;;;;;;;;;;;;;;;;;;;;;
1153
 
1154
;; inc a (37)
1155
        mov  a,#10
1156
        clr  c
1157
        inc  a
1158
        jc   fail37
1159
        subb a,#11
1160
        jnz  fail37
1161
 
1162
        mov  a,#255
1163
        setb c
1164
        inc  a
1165
        jnc  fail37
1166
        subb a,#0
1167
        jnz  fail37
1168
        ljmp done37
1169
 
1170
fail37:
1171
        mov  P1,#37
1172
        ljmp failed
1173
done37:
1174
 
1175
;;;;;;;;;;;;;;;;;  INST 38 ;;;;;;;;;;;;;;;;;;;;;;
1176
 
1177
;; inc Rn (38)
1178
        mov  r3,#10
1179
        clr  c
1180
        inc  r3
1181
        jc   fail38
1182
        mov  a,r3
1183
        subb a,#11
1184
        jnz  fail38
1185
 
1186
        mov  r4,#255
1187
        setb c
1188
        inc  r4
1189
        jnc  fail38
1190
        mov  a,r4
1191
        subb a,#0
1192
        jnz  fail38
1193
        ljmp done38
1194
 
1195
fail38:
1196
        mov  P1,#38
1197
        ljmp failed
1198
done38:
1199
 
1200
;;;;;;;;;;;;;;;;;  INST 39 ;;;;;;;;;;;;;;;;;;;;;;
1201
 
1202
;; inc direct (39)
1203
        mov  127,#10
1204
        clr  c
1205
        inc  127
1206
        jc   fail39
1207
        mov  a,127
1208
        subb a,#11
1209
        jnz  fail39
1210
 
1211
        mov  127,#255
1212
        setb c
1213
        inc  127
1214
        jnc  fail39
1215
        mov  a,127
1216
        subb a,#0
1217
        jnz  fail39
1218
        ljmp done39
1219
 
1220
fail39:
1221
        mov  P1,#39
1222
        ljmp failed
1223
done39:
1224
 
1225
;;;;;;;;;;;;;;;;;  INST 40 ;;;;;;;;;;;;;;;;;;;;;;
1226
 
1227
;; inc @Ri (40)
1228
        mov  r1,#126
1229
        mov  @r1,#10
1230
        clr  c
1231
        inc  @r1
1232
        jc   fail40
1233
        mov  a,@r1
1234
        subb a,#11
1235
        jnz  fail40
1236
 
1237
        mov  @r1,#255
1238
        setb c
1239
        inc  @r1
1240
        jnc  fail40
1241
        mov  a,@r1
1242
        subb a,#0
1243
        jnz  fail40
1244
        ljmp done40
1245
 
1246
fail40:
1247
        mov  P1,#40
1248
        ljmp failed
1249
done40:
1250
 
1251
 
1252
;;;;;;;;;;;;;;;;;  INST 41 ;;;;;;;;;;;;;;;;;;;;;;
1253
 
1254
;; inc dptr (41)
1255
        mov  dptr,#0x12ff
1256
        inc  dptr
1257
        mov  a,DPH
1258
        subb a,#0x13
1259
        jz   DPH_OK_41
1260
        mov  P1,#41
1261
        ljmp failed
1262
DPH_OK_41:
1263
        mov  a,DPL
1264
        jz   done41
1265
        mov  P1,#41
1266
        ljmp failed
1267
done41:
1268
 
1269
 
1270
;;;;;;;;;;;;;;;;;  INST 42 ;;;;;;;;;;;;;;;;;;;;;;
1271
 
1272
;; JB bit,rel (42)
1273
        mov  a,#16
1274
        jb   acc.3,fail42
1275
        jb   acc.4,done42
1276
 
1277
fail42:
1278
        mov  P1,#42
1279
        ljmp failed
1280
done42:
1281
 
1282
 
1283
;;;;;;;;;;;;;;;;;  INST 43 ;;;;;;;;;;;;;;;;;;;;;;
1284
 
1285
;; jbc bit,rel (43)
1286
        mov  a,#8
1287
        jbc  acc.3,CHECK_BIT_43
1288
        mov  P1,#43
1289
        ljmp failed
1290
CHECK_BIT_43:
1291
        jz   done43
1292
        mov  P1,#43
1293
        ljmp failed
1294
done43:
1295
 
1296
;;;;;;;;;;;;;;;;;  INST 44 ;;;;;;;;;;;;;;;;;;;;;;
1297
 
1298
;; jc rel (44)
1299
        clr  c
1300
        jc   fail44
1301
        cpl  c
1302
        jc   done44
1303
fail44:
1304
        mov  P1,#44
1305
        ljmp failed
1306
done44:
1307
 
1308
;;;;;;;;;;;;;;;;;  INST 45 ;;;;;;;;;;;;;;;;;;;;;;
1309
 
1310
;; jmp @a+dptr (45)
1311
        mov  a,#4
1312
        mov  dptr,#JMP_TBL
1313
        jmp  @a+dptr
1314
JMP_TBL:
1315
        ajmp JUMP_0
1316
        ajmp JUMP_2
1317
        ajmp JUMP_4
1318
        ajmp JUMP_6
1319
JUMP_0:
1320
JUMP_2:
1321
JUMP_6:
1322
        mov  P1,#43
1323
        ljmp failed
1324
JUMP_4:
1325
 
1326
;;;;;;;;;;;;;;;;;  INST 46 ;;;;;;;;;;;;;;;;;;;;;;
1327
 
1328
;; jnb bit,rel (46)
1329
        mov  a,#16
1330
        jnb  acc.4,fail42
1331
        jnb  acc.5,done42
1332
fail46:
1333
        mov  P1,#46
1334
        ljmp failed
1335
done46:
1336
 
1337
;;;;;;;;;;;;;;;;;  INST 47 ;;;;;;;;;;;;;;;;;;;;;;
1338
 
1339
;; jnc rel (47)
1340
        setb c
1341
        jnc  fail47
1342
        cpl  c
1343
        jnc  done47
1344
fail47:
1345
        mov  P1,#47
1346
        ljmp failed
1347
done47:
1348
 
1349
;;;;;;;;;;;;;;;;;  INST 48 ;;;;;;;;;;;;;;;;;;;;;;
1350
 
1351
;; jnz rel (48)
1352
        mov  r1,#0
1353
        mov  a,0
1354
        inc  r1
1355
        jnz  fail48
1356
 
1357
        mov  a,#1
1358
        dec  r1
1359
        jnz  done48
1360
fail48:
1361
        mov  P1,#48
1362
        ljmp failed
1363
done48:
1364
 
1365
;;;;;;;;;;;;;;;;;  INST 49 ;;;;;;;;;;;;;;;;;;;;;;
1366
 
1367
;; jz rel (49)
1368
        mov  r1,1
1369
        mov  a,#2
1370
        dec  r1
1371
        jz   fail49
1372
 
1373
        mov  a,#0
1374
        inc  r1
1375
        jz   done49
1376
fail49:
1377
        mov  P1,#49
1378
        ljmp failed
1379
done49:
1380
 
1381
;;;;;;;;;;;;;;;;   INST 50 ;;;;;;;;;;;;;;;;;;;;;;
1382
 
1383
;; lcall addr11
1384
        mov  a,#85
1385
        lcall testret
1386
        inc  a
1387
        jc   fail50
1388
        subb a,#87
1389
        jz   done50
1390
fail50:
1391
        mov  P1,1
1392
        ljmp failed
1393
done50:
1394
;;;;;;;;;;;;;;;;;  INST 51 ;;;;;;;;;;;;;;;;;;;;;;
1395
 
1396
;; ljmp (51)
1397
        ljmp done51
1398
        mov  P1,#51
1399
        ljmp failed
1400
done51:
1401
 
1402
;;;;;;;;;;;;;;;;;  INST 52 ;;;;;;;;;;;;;;;;;;;;;;
1403
 
1404
;; mov a,Rn (52)
1405
        mov  r0,#10
1406
        clr  a
1407
        setb c
1408
        mov  a,r0
1409
        jnc  fail52
1410
        subb a,#10
1411
        jz   done52
1412
fail52:
1413
        mov  P1,#52
1414
        ljmp failed
1415
done52:
1416
 
1417
 
1418
;;;;;;;;;;;;;;;;;  INST 53 ;;;;;;;;;;;;;;;;;;;;;;
1419
 
1420
;; mov a,direct (53)
1421
        mov  127,#10
1422
        clr  a
1423
        setb c
1424
        mov  a,127
1425
        jnc  fail53
1426
        subb a,#10
1427
        jz   done53
1428
fail53:
1429
        mov  P1,#53
1430
        ljmp failed
1431
done53:
1432
 
1433
;;;;;;;;;;;;;;;;;  INST 54 ;;;;;;;;;;;;;;;;;;;;;;
1434
 
1435
;; mov a,@Ri (54)
1436
        mov  r0,#127
1437
        mov  127,#10
1438
        clr  a
1439
        setb c
1440
        mov  a,@r0
1441
        jnc  fail54
1442
        subb a,#10
1443
        jz   done54
1444
fail54:
1445
        mov  P1,#54
1446
        ljmp failed
1447
done54:
1448
 
1449
 
1450
;;;;;;;;;;;;;;;;;  INST 55 ;;;;;;;;;;;;;;;;;;;;;;
1451
 
1452
;; mov a,#data (55)
1453
        clr  a
1454
        setb c
1455
        mov  a,#10
1456
        jnc  fail55
1457
        subb a,#10
1458
        jz   done55
1459
fail55:
1460
        mov  P1,#55
1461
        ljmp failed
1462
done55:
1463
 
1464
;;;;;;;;;;;;;;;;;  INST 56 ;;;;;;;;;;;;;;;;;;;;;;
1465
 
1466
;; mov Rn,a (56)
1467
        mov  a,#10
1468
        mov  r0,#0
1469
        setb c
1470
        mov  r0,a
1471
        jnc  fail56
1472
        clr  a
1473
        mov  a,r0
1474
        subb a,#10
1475
        jz   done56
1476
fail56:
1477
        mov  P1,#56
1478
        ljmp failed
1479
done56:
1480
 
1481
;;;;;;;;;;;;;;;;;  INST 57 ;;;;;;;;;;;;;;;;;;;;;;
1482
 
1483
;; mov Rn,direct (57)
1484
        mov  127,#10
1485
        mov  r0,#0
1486
        setb c
1487
        mov  r0,127
1488
        jnc  fail57
1489
        mov  a,r0
1490
        subb a,#10
1491
        jz   done57
1492
fail57:
1493
        mov  P1,#57
1494
        ljmp failed
1495
done57:
1496
 
1497
;;;;;;;;;;;;;;;;;  INST 58 ;;;;;;;;;;;;;;;;;;;;;;
1498
 
1499
;; mov Rn,#data (58)
1500
        mov  r0,#0
1501
        clr  a
1502
        setb c
1503
        mov  r0,#10
1504
        jnc  fail58
1505
        mov  a,r0
1506
        subb a,#10
1507
        jz   done58
1508
fail58:
1509
        mov  P1,#58
1510
        ljmp failed
1511
done58:
1512
 
1513
;;;;;;;;;;;;;;;;;  INST 59 ;;;;;;;;;;;;;;;;;;;;;;
1514
 
1515
;; mov direct,a (59)
1516
        mov  a,#10
1517
        clr  127
1518
        setb c
1519
        mov  127,a
1520
        jnc  fail59
1521
        clr  a
1522
        mov  a,127
1523
        subb a,#10
1524
        jz   done59
1525
fail59:
1526
        mov  P1,#59
1527
        ljmp failed
1528
done59:
1529
 
1530
;;;;;;;;;;;;;;;;;  INST 60 ;;;;;;;;;;;;;;;;;;;;;;
1531
 
1532
;; mov direct,Rn (60)
1533
        mov  r0,#10
1534
        clr  127
1535
        setb c
1536
        clr  a
1537
        mov  127,r0
1538
        jnz  fail60
1539
        jnc  fail60
1540
        mov  a,127
1541
        subb a,#10
1542
        jz   done60
1543
fail60:
1544
        mov  P1,#60
1545
        ljmp failed
1546
done60:
1547
 
1548
;;;;;;;;;;;;;;;;;  INST 61 ;;;;;;;;;;;;;;;;;;;;;;
1549
 
1550
;; mov direct,direct (61)
1551
        mov  127,#10
1552
        clr  126
1553
        clr  a
1554
        setb c
1555
        mov  126,127
1556
        jnz  fail61
1557
        jnc  fail61
1558
        mov  a,126
1559
        subb a,#10
1560
        jz   done61
1561
fail61:
1562
        mov  P1,#61
1563
        ljmp failed
1564
done61:
1565
 
1566
;;;;;;;;;;;;;;;;;  INST 62 ;;;;;;;;;;;;;;;;;;;;;;
1567
 
1568
;; mov direct,@Ri (62)
1569
        mov  127,#10
1570
        mov  r0,#127
1571
        clr  126
1572
        clr  a
1573
        setb c
1574
        mov  126,@r0
1575
        jnz  fail62
1576
        jnc  fail62
1577
        mov  a,126
1578
        subb a,#10
1579
        jz   done62
1580
fail62:
1581
        mov  P1,#62
1582
        ljmp failed
1583
done62:
1584
 
1585
;;;;;;;;;;;;;;;;;  INST 63 ;;;;;;;;;;;;;;;;;;;;;;
1586
 
1587
;; mov direct,#data (63)
1588
        clr  127
1589
        clr  a
1590
        setb c
1591
        mov  127,#10
1592
        jnz  fail63
1593
        jnc  fail63
1594
        mov  a,127
1595
        subb a,#10
1596
        jz   done63
1597
fail63:
1598
        mov  P1,#63
1599
        ljmp failed
1600
done63:
1601
 
1602
;;;;;;;;;;;;;;;;;  INST 64 ;;;;;;;;;;;;;;;;;;;;;;
1603
 
1604
;; mov @Ri,a (64)
1605
        mov  a,#10
1606
        mov  r0,#127
1607
        mov  @r0,#0
1608
        setb c
1609
        mov  @r0,a
1610
        jnc  fail64
1611
        clr  a
1612
        mov  a,127
1613
        subb a,#10
1614
        jz   done64
1615
fail64:
1616
        mov  P1,#64
1617
        ljmp failed
1618
done64:
1619
 
1620
;;;;;;;;;;;;;;;;;  INST 65 ;;;;;;;;;;;;;;;;;;;;;;
1621
 
1622
;; mov @Ri,direct (65)
1623
        mov  127,#10
1624
        mov  r0,#126
1625
        mov  @r0,#0
1626
        clr  a
1627
        setb c
1628
        mov  @r0,127
1629
        jnc  fail65
1630
        jnz  fail65
1631
        mov  a,126
1632
        subb a,#10
1633
        jz   done65
1634
fail65:
1635
        mov  P1,#65
1636
        ljmp failed
1637
done65:
1638
 
1639
;;;;;;;;;;;;;;;;;  INST 66 ;;;;;;;;;;;;;;;;;;;;;;
1640
 
1641
;; mov @Ri,#data (66)
1642
        mov  r0,#127
1643
        mov  @r0,#0
1644
        clr  a
1645
        setb c
1646
        mov  @r0,#10
1647
        jnz  fail66
1648
        jnc  fail66
1649
        mov  a,127
1650
        subb a,#10
1651
        jz   done66
1652
fail66:
1653
        mov  P1,#66
1654
        ljmp failed
1655
done66:
1656
 
1657
;;;;;;;;;;;;;;;;;  INST 67 ;;;;;;;;;;;;;;;;;;;;;;
1658
 
1659
;; mov c,bit (67)
1660
        mov  a,#1
1661
        clr  c
1662
        mov  c,acc.0
1663
        jnc  fail67
1664
        setb c
1665
        mov  c,acc.1
1666
        jc   done67
1667
fail67:
1668
        mov  P1,#67
1669
        ljmp failed
1670
done67:
1671
 
1672
;;;;;;;;;;;;;;;;;  INST 68 ;;;;;;;;;;;;;;;;;;;;;;
1673
 
1674
;; mov bit,c (68)
1675
        setb c
1676
        mov  acc.0,c
1677
        cpl  c
1678
        subb a,#1
1679
        jz   done68
1680
        mov  P1,#68
1681
        ljmp failed
1682
done68:
1683
 
1684
;;;;;;;;;;;;;;;;;  INST 69 ;;;;;;;;;;;;;;;;;;;;;;
1685
 
1686
;; mov dptr,#data (69)
1687
        mov  dptr,#0x1234
1688
        mov  a,DPH
1689
        subb a,#0x12
1690
        jnz  fail69
1691
        mov  a,DPL
1692
        subb a,#0x34
1693
        jz   done69
1694
fail69:
1695
        mov  P1,#69
1696
        ljmp failed
1697
done69:
1698
 
1699
 
1700
;;;;;;;;;;;;;;;;;  INST 70 ;;;;;;;;;;;;;;;;;;;;;;
1701
 
1702
;; movc a,@a+dptr (70)
1703
        clr  a
1704
        mov  dptr,#DB_TBL
1705
        movc a,@a+dptr
1706
        subb a,#0x66
1707
        jnz  fail70
1708
        mov  a,#1
1709
        movc a,@a+dptr
1710
        subb a,#0x77
1711
        jz   done70
1712
        jnz  fail70
1713
DB_TBL:
1714
        .db   0x66
1715
        .db   0x77
1716
fail70:
1717
        mov  P1,#70
1718
        ljmp failed
1719
done70:
1720
 
1721
 
1722
;;;;;;;;;;;;;;;;;  INST 71 ;;;;;;;;;;;;;;;;;;;;;;
1723
 
1724
;; movc a,@a+PC (71)
1725
        mov  a,#13
1726
        movc a,@a+pc
1727
        subb a,#0x66
1728
        jnz  fail71
1729
        mov  a,#7
1730
        movc a,@a+pc
1731
        subb a,#0x77
1732
        jz   done71
1733
        jnz  fail71
1734
        .db   0x66
1735
        .db   0x77
1736
fail71:
1737
        mov  P1,#71
1738
        ljmp failed
1739
done71:
1740
 
1741
 
1742
;;;;;;;;;;;;;;;;  INST 76 ;;;;;;;;;;;;;;;;;;;;;;;
1743
 
1744
;; mul AB (76)
1745
        mov  a,#80
1746
        mov  B,#160
1747
        mul  AB ; = 0x3200
1748
        jnc  fail76
1749
        jnz  fail76
1750
        mov  a,B
1751
        subb a,#0x32
1752
        jnz  fail76
1753
 
1754
        mov  a,#111
1755
        mov  B,#87
1756
        mul  AB ; = 0x25b9
1757
        jnc  fail76
1758
        clr  c
1759
        subb a,#0xb9
1760
        jnz  fail76
1761
        mov  a,B
1762
        subb a,#0x25
1763
        jnz  fail76
1764
 
1765
        mov  a,#11
1766
        mov  B,#17
1767
        mul  AB ; = 0x00B9
1768
        jc   fail76
1769
        clr  c
1770
        subb a,#0xbb
1771
        jnz  fail76
1772
        mov  a,B
1773
        jnz  fail76
1774
        ljmp done76
1775
 
1776
fail76:
1777
        mov  P1,#76
1778
        ljmp failed
1779
done76:
1780
 
1781
;;;;;;;;;;;;;;;;  INST 77 ;;;;;;;;;;;;;;;;;;;;;;;
1782
 
1783
;; nop
1784
        mov  a,#85
1785
        setb c
1786
        nop
1787
        jnc  fail77
1788
        subb a,#84
1789
        jnz  fail77
1790
 
1791
        mov  a,#123
1792
        clr  c
1793
        nop
1794
        jc   fail77
1795
        subb a,#123
1796
        jz   done77
1797
fail77:
1798
        mov  P1,#77
1799
        ljmp failed
1800
done77:
1801
 
1802
 
1803
;;;;;;;;;;;;;;;;  INST 78 ;;;;;;;;;;;;;;;;;;;;;;;
1804
 
1805
;; orl a,Rn (78)
1806
        mov  a,#0x90
1807
        mov  r0,#0x09
1808
        setb c
1809
        orl  a,r0
1810
        jnc  fail78
1811
        clr  c
1812
        subb a,#0x99
1813
        jnz  fail78
1814
 
1815
        mov  a,#0x48
1816
        mov  r0,#0x19
1817
        clr  c
1818
        orl  a,r0
1819
        jc   fail78
1820
        subb a,#0x59
1821
        jz   done78
1822
fail78:
1823
        mov  P1,#78
1824
        ljmp failed
1825
done78:
1826
 
1827
;;;;;;;;;;;;;;;;  INST 79 ;;;;;;;;;;;;;;;;;;;;;;;
1828
 
1829
;; orl a,direct (79)
1830
        mov  a,#0x90
1831
        mov  127,#0x09
1832
        setb c
1833
        orl  a,127
1834
        jnc  fail79
1835
        clr  c
1836
        subb a,#0x99
1837
        jnz  fail79
1838
 
1839
        mov  a,#0x48
1840
        mov  127,#0x19
1841
        clr  c
1842
        orl  a,127
1843
        jc   fail79
1844
        subb a,#0x59
1845
        jz   done79
1846
fail79:
1847
        mov  P1,#79
1848
        ljmp failed
1849
done79:
1850
 
1851
;;;;;;;;;;;;;;;;  INST 80 ;;;;;;;;;;;;;;;;;;;;;;;
1852
;; orl a,@Ri (80)
1853
        mov  a,#0x90
1854
        mov  r1,#127
1855
        mov  @r1,#0x9
1856
        setb c
1857
        orl  a,@r1
1858
        jnc  fail80
1859
        clr  c
1860
        subb a,#0x99
1861
        jnz  fail80
1862
 
1863
        mov  a,#0x48
1864
        mov  @r1,#0x19
1865
        clr  c
1866
        orl  a,@r1
1867
        jc   fail80
1868
        subb a,#0x59
1869
        jz   done80
1870
fail80:
1871
        mov  P1,#80
1872
        ljmp failed
1873
done80:
1874
 
1875
;;;;;;;;;;;;;;;;  INST 81 ;;;;;;;;;;;;;;;;;;;;;;;
1876
 
1877
;; orl a,#data (81)
1878
        mov  a,#0x90
1879
        setb c
1880
        orl  a,#0x9
1881
        jnc  fail81
1882
        clr  c
1883
        subb a,#0x99
1884
        jnz  fail81
1885
 
1886
        mov  a,#0x48
1887
        clr  c
1888
        orl  a,#0x19
1889
        jc   fail81
1890
        subb a,#0x59
1891
        jz   done81
1892
fail81:
1893
        mov  P1,#81
1894
        ljmp failed
1895
done81:
1896
 
1897
;;;;;;;;;;;;;;;;  INST 82 ;;;;;;;;;;;;;;;;;;;;;;;
1898
 
1899
;; orl direct,a (82)
1900
        mov  a,#0x90
1901
        mov  127,#0x9
1902
        setb c
1903
        orl  127,a
1904
        jnc  fail82
1905
        clr  c
1906
        subb a,#0x90
1907
        jnz  fail82
1908
        mov  a,127
1909
        clr  c
1910
        subb a,#0x99
1911
        jnz  fail82
1912
 
1913
        mov  a,#0x48
1914
        mov  127,#0x19
1915
        clr  c
1916
        orl  127,a
1917
        jc   fail82
1918
        subb a,#0x48
1919
        jnz  fail82
1920
        mov  a,127
1921
        clr  c
1922
        subb a,#0x59
1923
        jz   done82
1924
fail82:
1925
        mov  P1,#82
1926
        ljmp failed
1927
done82:
1928
 
1929
;;;;;;;;;;;;;;;;  INST 83 ;;;;;;;;;;;;;;;;;;;;;;;
1930
;; orl direct,#data (83)
1931
        mov  a,#0x91
1932
        mov  127,#0x9
1933
        setb c
1934
        orl  127,#0x90
1935
        jnc  fail83
1936
        clr  c
1937
        subb a,#0x91
1938
        jnz  fail83
1939
        mov  a,127
1940
        clr  c
1941
        subb a,#0x99
1942
        jnz  fail83
1943
 
1944
        mov  a,#0x49
1945
        mov  127,#0x19
1946
        clr  c
1947
        orl  127,#0x48
1948
        jc   fail83
1949
        subb a,#0x49
1950
        jnz  fail83
1951
        mov  a,127
1952
        clr  c
1953
        subb a,#0x59
1954
        jz   done83
1955
fail83:
1956
        mov  P1,#83
1957
        ljmp failed
1958
done83:
1959
 
1960
;;;;;;;;;;;;;;;;  INST 84 ;;;;;;;;;;;;;;;;;;;;;;;
1961
 
1962
;; orl c,bit (84)
1963
        mov  a,#1
1964
        orl  c,acc.1
1965
        jc   fail84
1966
        orl  c,acc.0
1967
        jnc  fail84
1968
        orl  c,acc.1
1969
        jc   done84
1970
fail84:
1971
        mov  P1,#84
1972
        ljmp failed
1973
done84:
1974
 
1975
;;;;;;;;;;;;;;;;  INST 85 ;;;;;;;;;;;;;;;;;;;;;;;
1976
 
1977
;; orl c,;bit (85)
1978
        mov  a,#1
1979
        orl  c,/acc.0
1980
        jc   fail85
1981
        orl  c,/acc.1
1982
        jnc  fail85
1983
        orl  c,/acc.0
1984
        jc   done85
1985
fail85:
1986
        mov  P1,#85
1987
        ljmp failed
1988
done85:
1989
 
1990
;;;;;;;;;;;;;;;;  INST 86,87 ;;;;;;;;;;;;;;;;;;;;;;;
1991
 
1992
;; push direct (87)
1993
        mov  dptr,#0x0123
1994
        mov  127,#8
1995
        push DPL
1996
        push DPH
1997
        push 127
1998
        mov  a,8
1999
        subb a,#0x23
2000
        jnz  fail87
2001
        mov  a,9
2002
        subb a,#1
2003
        jnz fail87
2004
        mov  a,10
2005
        subb a,#8
2006
        jz   done87
2007
fail87:
2008
        mov  P1,#87
2009
        ljmp failed
2010
done87:
2011
 
2012
;; pop direct (86)
2013
        pop  SP
2014
        pop  100
2015
        mov  a,100
2016
        subb a,#0x23
2017
        jz   done86
2018
        mov  P1,#86
2019
        ljmp failed
2020
done86:
2021
 
2022
;;;;;;;;;;;;;;;;  INST 88 ;;;;;;;;;;;;;;;;;;;;;;;
2023
 
2024
        ljmp done88
2025
        clr  a
2026
testret:             ;; subroutine called from acall and lcall
2027
        inc  a
2028
        ret
2029
        clr  a
2030
done88:
2031
 
2032
;;;;;;;;;;;;;;;;  INST 90 ;;;;;;;;;;;;;;;;;;;;;;;
2033
 
2034
;; rl a (90)
2035
        mov  a,#129
2036
        rl   a
2037
        subb a,#3
2038
        jz   done90
2039
        mov  P1,#90
2040
        ljmp failed
2041
done90:
2042
 
2043
;;;;;;;;;;;;;;;;  INST 91 ;;;;;;;;;;;;;;;;;;;;;;;
2044
 
2045
;; rlc a (91)
2046
        setb c
2047
        mov  a,#129
2048
        rlc  a
2049
        subb a,#2       ;a(3)-c(1)-1
2050
        jnz  fail91
2051
        clr  c
2052
        mov  a,#129
2053
        rlc  a
2054
        subb a,#1       ;a(2)-c(1)-1
2055
        jz   done91
2056
fail91:
2057
        mov  P1,#91
2058
        ljmp failed
2059
done91:
2060
 
2061
;;;;;;;;;;;;;;;;  INST 92 ;;;;;;;;;;;;;;;;;;;;;;;
2062
 
2063
;; rr a (92)
2064
        mov  a,#129
2065
        rr   a
2066
        subb a,#192
2067
        jz   done92
2068
        mov  P1,#92
2069
        ljmp failed
2070
done92:
2071
 
2072
 
2073
;;;;;;;;;;;;;;;;  INST 93 ;;;;;;;;;;;;;;;;;;;;;;;
2074
 
2075
;; rrc a (93)
2076
        setb c
2077
        mov  a,#3
2078
        rrc  a
2079
        subb a,#128     ;a(129)-c(1)-0
2080
        jnz  fail93
2081
        clr  c
2082
        mov  a,#3
2083
        rrc  a
2084
        subb a,#0       ;a(1)-c(1)-0
2085
        jz   done93
2086
fail93:
2087
        mov  P1,#93
2088
        ljmp failed
2089
done93:
2090
 
2091
;;;;;;;;;;;;;;;;  INST 94 ;;;;;;;;;;;;;;;;;;;;;;;
2092
 
2093
;; setb c (94)
2094
        clr  c
2095
        setb c
2096
        mov  a,#1
2097
        subb a,#0       ;a(1)-c(1)-0
2098
        jz   done94
2099
        mov  P1,#94
2100
        ljmp failed
2101
done94:
2102
 
2103
;;;;;;;;;;;;;;;;  INST 95 ;;;;;;;;;;;;;;;;;;;;;;;
2104
 
2105
;; setb bit (95)
2106
        clr  a
2107
        setb acc.7
2108
        subb a,#128
2109
        jz   done95
2110
        mov  P1,#95
2111
        ljmp failed
2112
done95:
2113
 
2114
;;;;;;;;;;;;;;;;  INST 96 ;;;;;;;;;;;;;;;;;;;;;;;
2115
 
2116
;; sjmp (96)
2117
        sjmp done96
2118
        mov  P1,#96
2119
        ljmp failed
2120
done96:
2121
 
2122
;;;;;;;;;;;;;;;;  INST 97 ;;;;;;;;;;;;;;;;;;;;;;;
2123
 
2124
;; subb a,Rn (97)
2125
        setb c
2126
        mov  a,#100
2127
        mov  r0,#10
2128
        subb a,r0     ; 100 - 10 - 1 = 89
2129
        jc   fail97
2130
        add  a,167    ; 167 + 89 = 0
2131
        jnz  fail97
2132
        clr  c
2133
        mov  a,#10
2134
        mov  r0,#100
2135
        subb a,r0     ; 10 - 100 - 0 = 166
2136
        jnc  fail97
2137
        add  a,90     ; 166 + 90 = 0
2138
        jz   done97
2139
fail97:
2140
        mov  P1,#97
2141
        ljmp failed
2142
done97:
2143
 
2144
;;;;;;;;;;;;;;;;  INST 98 ;;;;;;;;;;;;;;;;;;;;;;;
2145
 
2146
;; subb a,direct (98)
2147
        setb c
2148
        mov  a,#100
2149
        mov  127,#10
2150
        subb a,127    ; 100 - 10 - 1 = 89
2151
        jc   fail98
2152
        add  a,167    ; 167 + 89 = 0
2153
        jnz  fail98
2154
        clr  c
2155
        mov  a,#10
2156
        mov  127,#100
2157
        subb a,127    ; 10 - 100 - 0 = 166
2158
        jnc  fail98
2159
        add  a,90     ; 166 + 90 = 0
2160
        jz   done98
2161
fail98:
2162
        mov  P1,#98
2163
        ljmp failed
2164
done98:
2165
 
2166
;;;;;;;;;;;;;;;;  INST 99 ;;;;;;;;;;;;;;;;;;;;;;;
2167
 
2168
;; subb a,@Ri (99)
2169
        setb c
2170
        mov  r0,#126
2171
        mov  a,#100
2172
        mov  @r0,#10
2173
        subb a,@r0    ; 100 - 10 - 1 = 89
2174
        jc   fail99
2175
        add  a,167    ; 167 + 89 = 0
2176
        jnz  fail99
2177
        clr  c
2178
        mov  a,#10
2179
        mov  @r0,#100
2180
        subb a,@r0    ; 10 - 100 - 0 = 166
2181
        jnc  fail99
2182
        add  a,90     ; 166 + 90 = 0
2183
        jz   done99
2184
fail99:
2185
        mov  P1,#99
2186
        ljmp failed
2187
done99:
2188
 
2189
 
2190
;;;;;;;;;;;;;;;; INST 100 ;;;;;;;;;;;;;;;;;;;;;;;
2191
 
2192
;; subb a,#data (100)
2193
        setb c
2194
        mov  a,#100
2195
        subb a,#10    ; 100 - 10 - 1 = 89
2196
        jc   fail100
2197
        add  a,167    ; 167 + 89 = 0
2198
        jnz  fail100
2199
        clr  c
2200
        mov  a,#10
2201
        subb a,#100   ; 10 - 100 - 0 = 166
2202
        jnc  fail100
2203
        add  a,90     ; 166 + 90 = 0
2204
        jz   done100
2205
fail100:
2206
        mov  P1,#100
2207
        ljmp failed
2208
done100:
2209
 
2210
;;;;;;;;;;;;;;;; INST 101 ;;;;;;;;;;;;;;;;;;;;;;;
2211
 
2212
;; swap a (101)
2213
        clr  c
2214
        mov  a,#0x23
2215
        swap a
2216
        jc   fail101
2217
        subb a,#0x32
2218
        jnz  fail101
2219
        mov  a,#0xC3
2220
        setb c
2221
        swap a
2222
        jnc  fail101
2223
        subb a,#0x3C
2224
        jz   done101
2225
fail101:
2226
        mov  P1,#101
2227
        ljmp failed
2228
done101:
2229
 
2230
;;;;;;;;;;;;;;;; INST 102 ;;;;;;;;;;;;;;;;;;;;;;;
2231
 
2232
;; xch a,Rn (102)
2233
        mov  a,#10
2234
        mov  r0,#97
2235
        xch  a,r0
2236
        subb a,#97
2237
        jnz  fail102
2238
        mov  a,r0
2239
        subb a,#10
2240
        jz   done102
2241
fail102:
2242
        mov  P1,#102
2243
        ljmp failed
2244
done102:
2245
 
2246
;;;;;;;;;;;;;;;; INST 103 ;;;;;;;;;;;;;;;;;;;;;;;
2247
 
2248
;; xch a,direct (103)
2249
        mov  a,#10
2250
        mov  127,#99
2251
        xch  a,127
2252
        subb a,#99
2253
        jnz  fail103
2254
        mov  a,127
2255
        subb a,#10
2256
        jz   done103
2257
fail103:
2258
        mov  P1,#103
2259
        ljmp failed
2260
done103:
2261
 
2262
;;;;;;;;;;;;;;;; INST 104 ;;;;;;;;;;;;;;;;;;;;;;;
2263
 
2264
;; xch a,@Ri (104)
2265
        mov  a,#10
2266
        mov  r0,#127
2267
        mov  127,#99
2268
        xch  a,@r0
2269
        subb a,#99
2270
        jnz  fail104
2271
        mov  a,127
2272
        subb a,#10
2273
        jz   done104
2274
fail104:
2275
        mov  P1,#104
2276
        ljmp failed
2277
done104:
2278
 
2279
;;;;;;;;;;;;;;;; INST 105 ;;;;;;;;;;;;;;;;;;;;;;;
2280
 
2281
;; xchd a,@Ri (105)
2282
        mov  a,#0x44
2283
        mov  r0,#127
2284
        mov  127,#0x55
2285
        xchd a,@r0
2286
        subb a,#0x45
2287
        jnz  fail105
2288
        mov  a,127
2289
        subb a,#0x54
2290
        jz   done105
2291
fail105:
2292
        mov  P1,#105
2293
        ljmp failed
2294
done105:
2295
 
2296
 
2297
;;;;;;;;;;;;;;;; INST 106 ;;;;;;;;;;;;;;;;;;;;;;;
2298
 
2299
;; xrl a,Rn (106)
2300
        mov  a,#0x35
2301
        mov  r0,#0xC3
2302
        xrl  a,r0
2303
        subb a,#0xF6
2304
        jz   done106
2305
        mov  P1,#106
2306
        ljmp failed
2307
done106:
2308
 
2309
;;;;;;;;;;;;;;;; INST 107 ;;;;;;;;;;;;;;;;;;;;;;;
2310
 
2311
;; xrl a,direct (107)
2312
        mov  a,#0xC3
2313
        mov  127,#0x35
2314
        xrl  a,127
2315
        subb a,#0xF6
2316
        jz   done107
2317
        mov  P1,#107
2318
        ljmp failed
2319
done107:
2320
 
2321
 
2322
;;;;;;;;;;;;;;;; INST 108 ;;;;;;;;;;;;;;;;;;;;;;;
2323
 
2324
;; xrl a,@Ri (108)
2325
        mov  a,#0x35
2326
        mov  r0,#127
2327
        mov  127,#0xC3
2328
        xrl  a,@r0
2329
        subb a,#0xF6
2330
        jz   done108
2331
        mov  P1,#108
2332
        ljmp failed
2333
done108:
2334
 
2335
 
2336
;;;;;;;;;;;;;;;; INST 109 ;;;;;;;;;;;;;;;;;;;;;;;
2337
 
2338
;; xrl a,#data (109)
2339
        mov  a,#0x35
2340
        xrl  a,#0xC3
2341
        subb a,#0xF6
2342
        jz   done109
2343
        mov  P1,#109
2344
        ljmp failed
2345
done109:
2346
 
2347
 
2348
;;;;;;;;;;;;;;;; INST 110 ;;;;;;;;;;;;;;;;;;;;;;;
2349
 
2350
;; xrl direct,a (110)
2351
        mov  a,#0x35
2352
        mov  127,#0xC3
2353
        xrl  127,a
2354
        clr  a
2355
        mov  a,127
2356
        subb a,#0xF6
2357
        jz   done110
2358
        mov  P1,#110
2359
        ljmp failed
2360
done110:
2361
 
2362
 
2363
;;;;;;;;;;;;;;;; INST 111 ;;;;;;;;;;;;;;;;;;;;;;;
2364
 
2365
;; xrl direct,#data (111)
2366
        mov  127,#0x35
2367
        xrl  127,#0xC3
2368
        mov  a,127
2369
        subb a,#0xF6
2370
        jz   done111
2371
        mov  P1,#111
2372
        ljmp failed
2373
done111:
2374
 
2375
 
2376
;;;;;;;;;;;;;;;;;  DONE    ;;;;;;;;;;;;;;;;;;;;;;
2377
 
2378
        mov  P1,#127    ; All instructions passed
2379
 
2380
 
2381
failed:
2382
 
2383
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.