Entwicklung und Coding in verschiedenen Programmiersprachen: Assembly, C++, C#, Perl, Delphi, .NET, Visual Basic... |
|||||||
![]() |
|
|
Themen-Optionen | Thema durchsuchen |
Entwicklung und Coding in verschiedenen Programmiersprachen: Assembly, C++, C#, Perl, Delphi, .NET, Visual Basic... |
|||||||
![]() |
|
|
Themen-Optionen | Thema durchsuchen |
[Assembler] - Multiplizieren von 32 Bit Worten |
|
|
# 1 |
|
Bewertung:
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Registriert seit: Nov 2008
Internet: DSL 6000
Beiträge: 843
Power: 15
|
Hallo,
ich habe als Aufgabe ein Assembler Programm zu schreiben, das zwei 32 Bit Wörter mit Vorzeichen multipliziert. Als Befehlssatz habe ich zur Verfügung: ADD, SUB, AND, OR, NOT, SL, SR. Desweiteren stehen mir dafür 10 Register zur Verfügung. Als triviale Methode fällt mir ein einfach für jede 1 im Multiplikator den Multiplikant in ein Register aufzuaddieren. Das ist allerdings sehr langsam. Kennt da jemand einen guten Algorithmus der auch noch einfach zu implementieren ist? Wenns was fertig gibt wäre das auch optimal. Gruß "Keiner ist so verrückt, dass er nicht einen noch Verrückteren findet, der ihn versteht." (Friedrich Nietzsche) |
|
|
|
|
|
# 2 |
|
Bewertung:
![]() ![]() Registriert seit: Jul 2005
Beiträge: 3.341
Power: 36
|
sind deine zahlen denn inder betrag vorzeichen darstellung?
Beispiel für die (schriftliche) Multiplikation von zwei positiven 4Bit Zahlen: Code:
Code:
Es müssen also noch die Ausdrücke 1011 * x auswertet werden. Es muss vergliechen werden: -> x = 0, dann ist der Ausdruck Null, -> x = 1, dann ist der Ausdruck 1011. Ein Algorithmus für A*B könnte also so lauten: 1. Vergleiche die Vorzeichen Bits: wenn sonst - 2. 3. wenn Bit 4. shifte Betrag(A) um i Stellen nach links. 5. Addiere das Teilergebnis zu deinem Gesamtergebnis 6. i++, springe zu 2. 7. fertig Dies enthält jetzt die Multiplikation! Du hast allerdings eine Wortlänge von 32 bit und das Endergebnis hat 64 Bit! Du musst also noch aufteilen, dass die Rechnungen alle in 32 Bit Register passen. viel spaß damit^^ ![]() **edit** für das mit dem high und low register: das was zu zum high hinzuaddieren must ist der Betrag von A um (31-i)Bit nach rechts und das zu low um i Bit nach links geshiftet wenn ich high da rein pinge und high spiele, dann hol ich den high score |
|
|
|
![]() |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| von 32 bit auf 64bit | BiG__1 | PC Hardware | 15 | 27.09.2010 13:16 |
| [XP] - Bootloader von vista 64 bit mit xp 32 bit | thaclone | Windows | 6 | 20.03.2009 23:38 |
| Von Windows XP 32 Bit auf Windows Vista 64 bit? | sentino | Windows | 8 | 20.10.2008 06:20 |
| BS (XPMCE)von 32 auf 64 bit | Benjamin Buford | Windows | 1 | 26.03.2008 13:05 |
| Von 32 auf 64 bit umsteigen | warden | Windows | 6 | 02.02.2007 20:18 |
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:52 Uhr. |