Wie würden Sie eine NASM-Verschiebung in einem Register machen? Ich lese das Handbuch und es scheint nur diese Operatoren zu erwähnen >>, < <. Wenn ich versuche, sie zu benutzen, beschwert sich NASM über den Schichtoperator, der an Skalarwerten arbeitet. Können Sie erklären, was ein Skalarwert ist und ein Beispiel für die Verwendung von >> und < < geben. Außerdem dachte ich, es gäbe eine shr oder shl Betreiber. Wenn es sie gibt, können Sie ein Beispiel geben, wie man sie benutzt? Vielen Dank für Ihre Zeit.NASM shift operators
Antwort
<<
und >>
sind nur für die Verwendung mit ganzzahligen Konstanten. Dies ist, was es mit "Skalarwert" meint. Sie können den Wert in einem Register mit den Anweisungen shl
oder shr
verschieben. Sie werden verwendet, um den Wert in einem Register nach links oder rechts um eine gegebene Anzahl von Bits zu verschieben.
Die erste Zeile in diesem Beispiel verschiebt den Wert in ax
links 4 Bits, was der Multiplikation mit 16 entspricht. Die zweite Zeile verschiebt den Wert in bx
um 2 Bits, was der Ganzzahldivision entspricht 4.
shl ax, 4
shr bx, 2
Sie können auch cl
verwenden, um die Anzahl von Bits, um anzuzeigen, anstelle eines konstant zu verschieben. Weitere Informationen zu diesen und zugehörigen Anweisungen finden Sie unter this page.
huckepack auf ughoavgfhw Antwort ... <<
und >>
zu verwenden, so dass sie direkt auf Konstanten verwenden:
MOV EAX, 1 << 2 ; Puts 4 into EAX
MOV EAX, 2 << 2 ; Puts 8 into EAX
MOV EAX, 8 >> 1 ; Puts 4 into EAX
- 1. Verwendung des bitweisen Shift-Operators in ConcurrentHashMap
- 2. Nasm Rücklaufstruktur
- 3. MASM/NASM-Unterschiede
- 4. XOR Swap Assembly NASM
- 5. Nasm 64, Segmentierungsfehler
- 6. ASM: MASM, NASM, FASM?
- 7. Schaltjahr NASM Assembly Programm
- 8. Nasm, C++, passendes Klassenobjekt
- 9. Overnight Shift
- 10. nasm Makro funktioniert nicht richtig
- 11. Isolation Rest in Nasm-Programm
- 12. NASM zur nächsten Zeile drucken
- 13. NASM & GDB: erste Anweisung verloren
- 14. Fehler: Betriebsgröße nicht angegeben - NASm
- 15. Ein gutes NASM/FASM-Tutorial?
- 16. Basic Nasm Shellcode stürzt ab
- 17. Verwenden des All-Operators
- 18. Aufruf eines Array-Operators
- 19. Teil Spezialisierung des Operators()
- 20. Javascript String Assignment Operators
- 21. Rückgabewert des Operators ++
- 22. Bedeutung des XOR-Operators
- 23. Unterschrift des generierten Operators =()?
- 24. Verwendung des Ptr-Operators?
- 25. Implementieren des Linksverschiebungs-Operators von JavaScript in Clojure
- 26. Shift Links Register mit VHDL Shift-Operator: Sll Problem
- 27. emacs äquivalent zu vim shift-h und shift-l
- 28. Warum kann ein Compiler keinen "Shift/Shift" -Konflikt haben?
- 29. BitArray - Shift-Bits
- 30. Javascript shift() unshift() mnemonics?