Comprendre le codage des instructions 8086


0

J'essaie de comprendre le codage des instructions 8086. Même si j'ai trouvé une instruction générale et une référence volumineuse, je ne la comprends toujours pas.

Pourriez-vous m'expliquer comment les "traductions" suivantes à partir de données d'octet sont effectuées?

Merci d'avance!

48 -> dec ax

EB0D -> jmp short 0xf

642120 -> and [fs:bx+si],sp

Pourquoi ne vérifiez-vous pas à la place les manuels officiels d'Intel ? Le codage des instructions y est parfaitement expliqué.
m0skit0

Réponses:


0

Votre désassembleur indique le décalage JMP SHORT à partir du début de l’instruction lorsque le nombre réel JMP SHORT compte à partir de l’octet après l’instruction. Peut-être avez-vous besoin d'un autre désassembleur permettant un bon décodage.


Peut-être pourriez-vous en recommander un?
uSlackr

1
IDA? ollydbg? Visual Studio?
ZaB


0

Un saut (ou ce) inconditionnel est suivi de données, qu'il s'agisse de données réelles ou de données d'alignement. Pour 8086, 2 ou 4 est un bon alignement, l’instruction suivante pourrait donc commencer à 21, 20 ou au-delà.


Pas à nitpick, mais 64h n'est pas un octet de préfixe sur le 8086. Du moins pas selon: electronicsandbooks.com/eab1/manual/… page 273 Ses 4 ans mais toujours
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.