Hallo zusammen ich muss für die Schule einen Code abgeben für einen 8051. Die Aufgabe sieht folgendermassen aus. [R2] x [R0][R1] = [R2][R0][R1] Die Mehrbyteoperationen mussen in Einbyteoperationen zerleget werden und diese wieder zu einer Mehrbyteoperation verknüpft werden. Kann mir jemand helfen? Bin für jede Hilfe sehr dankbar!! LG Julia
:
Verschoben durch User
Hi, was soll das genau heissen: Inhalt von Register R2 multipliziert mit Inhalt von Register R0 multipliziert mit Inhalt von Register R1, oder wie oder was
Julia schrieb: > ich muss für die Schule einen Code abgeben für einen 8051. ... > Die Aufgabe sieht folgendermassen aus. Und nun willst du die Hausaufgaben von uns gelöst haben? Nö! Wie weit bist du mit DEINEM Lösungsansatz schon fortgeschritten? Gruß, Magnetus
Julia schrieb: > Die Aufgabe sieht folgendermassen aus. > > [R2] x [R0][R1] = [R2][R0][R1] > > Die Mehrbyteoperationen mussen in Einbyteoperationen zerleget werden und > diese wieder zu einer Mehrbyteoperation verknüpft werden. Als kleiner Denkanstoss: Überleg mal, wie du damals in der Grundschule schriftlich multiplizieren gelernt hast. Und dann überleg mal, wie das ganze aussieht, wenn du mit Zahlen zur Basis 256 anstatt zur Basis 10 arbeitest. Andreas
Andreas Ferber schrieb: > Als kleiner Denkanstoss: Überleg mal, wie du damals in der Grundschule > schriftlich multiplizieren gelernt hast. Und dann überleg mal, wie das > ganze aussieht, wenn du mit Zahlen zur Basis 256 anstatt zur Basis 10 > arbeitest. Ich bin mir sicher du meinst Zahlen zur Basis 2 und nicht 256 :-)
1 | mov a, r1 |
2 | mov b, r2 |
3 | mul ab |
4 | mov r1, a |
5 | |
6 | mov a, r0 |
7 | mov r0, b |
8 | mov b, r2 |
9 | mul ab |
10 | mov r2, b |
11 | |
12 | add a, r0 |
13 | mov r0, a |
14 | jnc _m24_1 |
15 | inc r2 |
16 | _m24_1: |
Peter
12 x 1314 = 15768 R2 = 12 R0 = 13 R1 = 14 [R2] x [R0][R1] = [R2][R0][R1] R2 x R1 = 12 x 14 = 168...die 68 kommt ins R1 R2 x R0 = 12 x 13 = 156...die 56 (+1 von oben) kommt ins R0 die 1 von 156 kommt ins R2 R2 = 1 R0 = 57 R1 = 68 [R2][R0][R1] = 15768 mathematisch ist ja so weit alles klar...aber weiter? keine Ahnung :( julia
Julia schrieb: > 12 x 1314 = 15768 Der 8051 kann nur binär multiplizieren, d.h.: 1314 = 0x0522: R0 = 0x05, R1 = 0x22 Und das Ergebnis: 15768 = 0x003D98: R2 = 0x00, R0 = 0x3D, R1 = 0x98 Peter
Andreas Ferber schrieb: > Simon K. schrieb: >> Ich bin mir sicher du meinst Zahlen zur Basis 2 und nicht 256 :-) Wie soll man denn eine Ziffer, die 256 Zahlensymbole braucht aufs Papier schreiben? Wenn dann macht es Sinn, wie PeDa es gemacht hat. Mit einer Basis von 16. Als Hexadezimal.
Simon K. schrieb: > Wie soll man denn eine Ziffer, die 256 Zahlensymbole braucht aufs Papier > schreiben? 0xFF oder 0377 oder 0b11111111 oder 255 256 stimmt, denn der Multiplikationsbefehl verarbeitet 2 Bytes. Peter