Forum: PC-Programmierung Assembler Code


von tim94 (Gast)


Lesenswert?

Hey,

habe wieder eine Verständnisfrage zum Assembler. Ich kann die Lösung 
nicht verstehen.

START: MOVE.W A,D1
       ADD.W B,D1
       MULS.W C,D1
       ASL D1 , 2
       MOVE.W D1 , ausgabe
A: DC.W 6
B: DC.W −9
C: DC.W 4
D: DC.W 3
ausgabe : DC.W 1
Lösung: -48

--> ((6-9)*4)=-12 und jetzt muss zweimal nach links (arithmetisch 
geshiftet werden. Meine Frage ist nun wie ich die -12 in binär angebe (W 
steht für 16Bit), erst das Komplement bilden dann shiften oder wie?

von (prx) A. K. (prx)


Lesenswert?

tim94 schrieb:
>        ASL D1 , 2

Gibts nicht.

von µC (Gast)


Lesenswert?

tim94 schrieb:
> Ich kann die Lösung
> nicht verstehen.
Ich auch nicht, mein µC kennt all diese befehle nicht, vielleicht hast 
du einen andren...

von Ingo (Gast)


Lesenswert?

[Flame]
In C gäbe es das Problem so nicht ;)
Moby, c-hater fass
[/Flame]


SCNR

von tim94 (Gast)


Lesenswert?

Die Aufgabe ist wirklich so vorgegeben, aber ich verstehe grad nicht 
wieso es das nicht gibt? Was wäre wenn man annimt dass da  ASL D1 , 1 
steht?

von Uwe (Gast)


Lesenswert?


von Arc N. (arc)


Lesenswert?

tim94 schrieb:
> Hey,
>
> habe wieder eine Verständnisfrage zum Assembler. Ich kann die Lösung
> nicht verstehen.
>
> START: MOVE.W A,D1
>        ADD.W B,D1
>        MULS.W C,D1
>        ASL D1 , 2

Siehe oben, den Befehl gibt's im 68k-Assembler nicht
asl #2, d1 müsste das sein

>        MOVE.W D1 , ausgabe
> A: DC.W 6
> B: DC.W −9
> C: DC.W 4
> D: DC.W 3
> ausgabe : DC.W 1
> Lösung: -48
>
> --> ((6-9)*4)=-12 und jetzt muss zweimal nach links (arithmetisch
> geshiftet werden. Meine Frage ist nun wie ich die -12 in binär angebe (W
> steht für 16Bit), erst das Komplement bilden dann shiften oder wie?
1
-12 = 0xfff4 (1111 1111 1111 0010)
2
 12 = 0x000c (0000 0000 0000 1100)
3
Einerkomplement von 12 (not.w) wäre
4
      0xfff3 (1111 1111 1111 0011) oder -13
5
der 68k kennt aber auch neg.w...

von Moby (Gast)


Lesenswert?

Ingo schrieb:
> In C gäbe es das Problem so nicht ;)

Mensch Ingo, wo siehst denn Du hier ein Problem ?
Und 68000er Assembler wär sowieso nicht meine Baustelle ;-)

von Ausgeloggt (Gast)


Lesenswert?

tim94 schrieb:
> Meine Frage ist nun wie ich die -12 in binär angebe (W
> steht für 16Bit), erst das Komplement bilden dann shiften oder wie?

-12 == 0xFFF4 == 0b1111 1111 1111 0100

Jetzt shiften (<<2):

0x1111 1111 1101 0000 == 0xFFD0 == -48

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.