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

Subversion Repositories 8051

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

Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

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