![]() |
ASM Mnemonics auflösen
Hallo!
Wenn man in ASM zb JMP schreibt, so wandelt der Assembler das dann in einen (2-Bit langen?) Hex-Code um. Beispielsweise EB. Dieser Code ist ja nicht immer EB. Meine Fragen wäre jetzt, 1. wieso ist das nicht immer EB (ich denke mal, dass das mit Aufwärts/Abwäerts-Sprung zu tun hat) und 2. wo kann ich diese Codes nachlesen? Also wenn ich jetzt MOV AH... habe, woher weiß ich, dass der Code dafür B4 lautet? Grüße Faux |
Re: ASM Mnemonics auflösen
Geh doch einfach zu Intel und AMD und lad dir deren Dokumentationen runter. Dort ist die komplette Kodierung der Befehle aufgelistet und beschrieben. Ansonsten kannst du dir auch die Kurzform mit allen Befehlen aus der opcodes.lst/.txt in der Ralf Brown's Interrupt List rausholen.
|
Re: ASM Mnemonics auflösen
Intel:
![]() AMD: ![]() Zu deinen Fragen: $EB ist ein short jump und wird benutzt wenn der Zielbereich zwischen -128 und +127 Bytes entfernt liegt. $E9 ist ein near jump und benutzt ein volles 32-Bit Displacement. Für mov gibt es ziemlich viele Opcodes, allerdings gibt's für fast jede Instruktion mehr als einen. Die meisten nutzen eine Mod-Reg-R/M-Adressierung. $B4 ist eine Ausnahme: die Codes $B0 bis $B7 bedeuten "mov reg8,imm8", wobei reg8 aus [AL,CL,DL,BL,AH,CH,DH,BH] kommt (daher +0 bis +7). Allerdings wäre es müßig, dies alles auswendig zu wissen - dafür gibt's inline-Assembler und Disassembler. |
Re: ASM Mnemonics auflösen
Hier ist auch entsprechender Delphicode um die das umwandeln zu lassen.
![]() |
Re: ASM Mnemonics auflösen
Danke für die Antworten, werd mir mal alles durchsehen. ;)
Grüße Faux |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz