Wie schreiben wir einen Code, um nur zwei 32-Bit-Integer mit Shift und Add zu multiplizieren. Ich weiß, wie man es mit 16-Bit-Ganzzahlen macht, aber wie können wir das für 32-Bit-Ganzzahlen machen, brauchen wir zwei Register, um die obere Hälfte und die untere Hälfte zu halten?x86 Assembly add and shift
-3
A
Antwort
0
Angenommen, Sie sind auf i386 oder höher, verwenden Sie einfach eax, ebx, ecx, edx anstelle von ax, bx, cx, dx registrieren. Sie können eax auch verwenden, wenn Sie im Real-Modus sind (16 Bit).
Wenn Sie etwas Code wollen, hier ist es. Es verwendet andere Anweisungen wie mov, und rol zu hart. (ich es nicht getestet habe.)
Multiply eax, ebx und 32-Bit-Ergebnis speichern zu edx:
mov ecx, 32
xor edx, edx
next_binary_digit:
shl edx, 1
rol ebx, 1
text ebx, 1
jz add_done
add edx, eax
add_done:
loop next_binary_digit
Wenn Sie Speicher verwenden möchten, würde es komplizierter sein, weil Sie laden können müssen Wert in Register und Verschiebung, Check Übertrag, Speichern zurück in den Speicher.
Oder .. möchten Sie bei der Registergröße X bleiben, wollen aber die ganze Zahl größer als X multiplizieren?
Verwandte Themen
- 1. Assembly x86 Win32
- 2. Assembly Sprache x86 Irvine32
- 3. Zugriffsverletzung MASM x86 Assembly
- 4. Modulus in Assembly x86
- 5. x86 Assembly Referenzblatt
- 6. x86 Assembly-Idiome
- 7. Assembly x86, Begrüßungsprogramm
- 8. LinkedList in Assembly x86 Irvine
- 9. Assembly Language Shift in Carry Flags
- 10. Vergleichen Sie zwei Strings in x86 Assembly
- 11. Laden x86 oder x64 Assembly
- 12. Haltewinkel in x86 Intel Assembly
- 13. Timer-Interrupt in x86 Assembly
- 14. Macht der Funktion x86 Assembly
- 15. x86 Assembly Force Cache Store
- 16. x86 Assembly Langauge Midpoint Circle Algorithmus
- 17. Drucken Integer zu Konsole in x86-Assembly
- 18. Add Assembly-Referenz in .NET
- 19. Verwirrende Befehl add in x86-Assembler
- 20. Quadratwurzelfunktion in Forth mit x86 Assembly?
- 21. Zweck der cmove-Anweisung in x86-Assembly?
- 22. x86 Assembly extreme Anfänger Anfrage: "ungültige Befehlsoperanden"?
- 23. Dynamische Variablenerstellung in der Baugruppe? (X86 Assembly)
- 24. Zeichnen eines Stack-Frame für x86-Assembly
- 25. x86 gcc assembly output hilfe bitte
- 26. Assembly x86: Vergleichen von Zeichenfolgen funktioniert nicht
- 27. Convert x86 Assembly Jump-Tabelle C
- 28. Was macht diese x86 Inline-Assembly?
- 29. Ausführungscode auf anderem Prozessor (x86-Assembly)
- 30. x86-64 Assembly "cmovge" zu C code
Es wäre nett, wenn Sie weitere Details angeben. Ob Sie auf MIPS, x86, i386 oder arm sind. Ob Sie mit der Arbeit in Ordnung sind. – Taeyun