Forum: Mikrocontroller und Digitale Elektronik Assembler MUL und DIV


von Anja (Gast)


Lesenswert?

Hallo,
da krieg ich noch was nicht hin:
-Wie können Sie eine 8 Bit Zahl mit 2 oder 4 multiplizieren, ohne den
langsamen Befehl MUL AB zu verwenden?
-Wie können sie eine 8 Bit Zahl durch 8 dividieren ohne den Befehl DIV
AB zu verwenden?

Wäre toll, nochmals so super Hilfe zu kriegen wie bei meinen letzten
"Problemen".

Schon mal ein ganz herzliches Dánkeschön!

Anja

von Thomas Burkhardt (Gast)


Lesenswert?

Bei Potenzen von 2 kann man sich mit den Shift-Befehlen zur
Multiplikation bzw. Division behelfen. Wichtig ist dann natürlich zu
bedenken, dass die Zahl aus dem Wertebereich des Registers rauslaufen
kann.

PS: iss nich ein wenig spät für Hausaufgaben g

von ...HanneS... (Gast)


Lesenswert?

Immer diese Hausaufgaben...

Wie machste das denn dezimal, wenn du eine Zahl mit einer Zehnerpotenz
multiplizieren musst oder durch eine Zehnerpotenz dividieren musst? Ich
schiebe da nur am Komma...

Und deine Beispiele sind Zweierpotenzen, Dualzahlen haben die Basis 2.

...

von Andi (Gast)


Lesenswert?

Konkret kann man das bei den 8051´ern mit den Befehlen "RRC A" und
"RLC A" machen (Rotate right/left trough Carry).
Bei den 8051´ern gibt es leider keine Shift-Befehle welche einfach eine
0 an die freie Stelle setzen.
Berichtigt mich wenn ich mich irre!

Multiplikation mit 2:
 CLR C   ;Carry-Flag löschen
 RLC A   ;Akku durch links rotieren verdoppeln (*2)

Für A*4 einfach das ganze 2 mal und A*8 3 mal.
3 mal verdoppeln = * 8 (2, 4, 8, 16, 32...)

Division:
 CLR C   ;Carry-Flag löschen
 RRC A   ;Akku durch rechts rotieren halbieren (/2)

Da auch für A/4 das ganze 2 mal und A/8 3 mal.
3 mal halbieren = / 8

Gruß
Andi

von ...HanneS... (Gast)


Lesenswert?

Ich wollte ja nur einen Denkanstoß geben aber nun sind die Hausaugaben
doch gemacht.

...

von Anja (Gast)


Lesenswert?

Danke schön!!!!
Sind keine "Hausaufgaben", bin dabei, alte Prüfungen durchzumachen.
Mit programmieren steh' ich leider immer noch etwas auf Kriegsfuß.
Gibt's denn nicht für einige Dinge vorgefertigte Puzzleteile, die man
dann einfach wieder zusammensetzt?
Guten Start in den Montag!!
Anja

von Wolle (Gast)


Lesenswert?

ES ist so eine Sache, mit vorgefertigten Dingen.....
Erstens muß man sie verstehen und nachvollziehen können und Zweitens
lernt man dabei nichts.
Codeschnipsel gibt's zu Hauf - z. B. unter "Codesammlung".
Aber da schlägt dann gaaaanz schnell der Fehlerteufel zu - wegen meiner
anfänglichen Bemerkung.......
Das Beste ist, sich aus eigenen oder nachvollzogenen Codes eine eigene
Bibliothek anzulegen und die dann, angepasst auf das Projekt, zu
verwenden.

von peter dannegger (Gast)


Lesenswert?

Soo langsam ist "MUL AB" nun auch wieder nicht (4 Zyklen).

Und *4 ist auch nur dann schneller, wenn man kein 16 Bit Ergebnis
braucht, d.h. die Zahl <64 ist:

ADD A, ACC ;*2
ADD A, ACC ;*2

= 2 Zyklen

/ 4 dauert 3 Zyklen:

RRC A
RRC A
ANL A, #03Fh


Peter

von Thorsten (Gast)


Lesenswert?

>Soo langsam ist "MUL AB" nun auch wieder nicht

Kommt auf den Prozessor an. Der 8086 hat für eine Multiplikation unter
Anwendung von "MUL" mindestens 70 Takte (8-bit Multiplikation)
gebraucht, das Schieben hingegen war nach 2 Takten erledigt.

von Anja (Gast)


Lesenswert?

Ein ganz herzliches DANKE!!
Eine vielleicht etwas blöde Frage noch: Assembler, ist das für jeden µC
gleich, oder gibt es da gravierende Unterschiede? Wir haben nämlcih nur
den 80C535.
Das war in Sachen Theorie vorerst die letzte Frage. Jetzt sind
Programme dran (C und Assembler).
Grüße
Anja

von Thorsten (Gast)


Lesenswert?

Innerhalb einer µC-Familie sind die Befehle i. d. R. gleich, es können
jedoch mit zunehmender Leistungsfähigkeit der µC zusätzliche Befehle
hinzu kommen. Wenn du dann allerdings zu einem anderen Hersteller
wechselst, kriegst du schonmal die Krise. Z. B. der Befehlssatz der
PICs von Microchip ist teilweise schon sehr schräg. Da könnte man
meinen, man hat noch nie in Assembler programmiert. Vom 80535 habe ich
keine Ahnung, aber ich glaube der gehört zu den 8051er und deren
Befehlssatz ist wieder anders.

Gruß
Thorsten

von Anja (Gast)


Lesenswert?

Wieder anders?
Also hilft es mir nichts, ein Buch wie zB "Assembler ge-packt" zu
holen für meinen 8051er?

von Thorsten (Gast)


Lesenswert?

Ich würde dir empfehlen etwas zu kaufen, das den Assembler eures
Mikrocontrollers behandelt. Da dürfte es massenhaft Literatur geben.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.