Hi, ich bin neu hier und hoffe in irgend eine Weise Hilfe zu finden. Ich benutze den Sim8008 also geht es um Assembler auf dem I8008 von Intel. Folgende Aufgabe ist gestellt: -die ersten 8 Byte eines Registers werden als 8x8 Bitmatrix behandelt -speichern Sie in den darauffolgenden 8 Byte die transponierte Matrix ab soweit so gut, ich habe den Code fertig und er dürfte auch funktionieren aber aus irgend einem Grund geht der Prozessor mitten im Code in den Halt-Status. Genau dann wenn er die erste Zeile der Matrix als erste Vertikale im in der T-Matrix abgespeichert hat. hier der Code:
1 | ; Matrix Transponieren |
2 | ; E = 8 , B = ZwischenSpeicher für Zeile, C = innere Schleife, D = äußere Schleife |
3 | |
4 | mvi e,8 |
5 | mvi d,0 |
6 | |
7 | aussenLoop: |
8 | inr d |
9 | call verteileAufZeilen |
10 | mvi a,8 |
11 | sub d |
12 | jnz aussenLoop |
13 | jmp ende |
14 | |
15 | verteileAufZeilen: |
16 | mov l,d |
17 | mov b,m(hl) |
18 | mov c,e |
19 | start: |
20 | call hilfe |
21 | dcr c |
22 | jnz start |
23 | ret |
24 | |
25 | hilfe: |
26 | mov a,b |
27 | rar |
28 | mov b,a |
29 | cnc rotieren0 |
30 | cc rotieren1 |
31 | ret |
32 | |
33 | berechneZielposition: |
34 | dcr e |
35 | mov a,e |
36 | inr e |
37 | add c |
38 | mov l,a |
39 | ret |
40 | |
41 | rotieren1: |
42 | call berechneZielposition |
43 | mov a,m(hl) |
44 | rlc |
45 | mov m(hl),a |
46 | mvi a,1 |
47 | ora m(hl) |
48 | mov m(hl),a |
49 | ret |
50 | |
51 | rotieren0: |
52 | call berechneZielposition |
53 | mov a,m(hl) |
54 | rlc |
55 | mov m(hl),a |
56 | mvi a,1 |
57 | ora m(hl) |
58 | mov m(hl),a |
59 | mvi a,1 |
60 | xra m(hl) |
61 | mov m(hl),a |
62 | ret |
63 | |
64 | ende: |
65 | end |
Vielen Dank, vllt hat jmd. ne Idee.