MOV DL,AL
"MOV DL" = B2Valeurs Hex des registres? x86
Mais quelle est la valeur d'octet hexadécimal pour AL? Où sont-ils listés?
Je viens de réaliser qu'il doit être un autre opcode! Est-ce que quelqu'un peut-il me montrer la bonne direction?
MOV DL,AL
"MOV DL" = B2Valeurs Hex des registres? x86
Mais quelle est la valeur d'octet hexadécimal pour AL? Où sont-ils listés?
Je viens de réaliser qu'il doit être un autre opcode! Est-ce que quelqu'un peut-il me montrer la bonne direction?
À partir du Intel Architecture Software Developer's Manual, Volume 2: Instruction Set Reference Manual, Tableau 3-1. Inscrivez-vous codages associés à la + rb, + rw et + e nomenclature, page 3-3:
AL = 0 AX = 0 EAX = 0
CL = 1 CX = 1 ECX = 1
DL = 2 DX = 2 EDX = 2
BL = 3 BX = 3 EBX = 3
AH = 4 SP = 4 ESP = 4
CH = 5 BP = 5 EBP = 5
DH = 6 SI = 6 ESI = 6
BH = 7 DI = 7 EDI = 7
Pour répondre à votre question («aha grande que je vais avoir du mal à trouver l'un. liste d'instructions pour déplacer les registres dans Pouvez-vous nous éclairer »).?
tout d'abord voici quelques poissons: (pour regs 8 bits)
8a c0 mov al, al
8a c1 mov al, cl
8a c2 mov al, dl
8a c3 mov al, bl
8a c8 mov cl, al
8a c9 mov cl, cl
8a ca mov cl, dl
8a cb mov cl, bl
8a d0 mov dl, al
8a d1 mov dl, cl
8a d2 mov dl, dl
8a d3 mov dl, bl
8a d8 mov bl, al
8a d9 mov bl, cl
8a da mov bl, dl
8a db mov bl, bl
Et voici comment démarrer la pêche:
Dans le manuel du jeu d'instructions intel, rechercher l'instruction MOV, à la page 3-402. Vous trouverez un tableau répertoriant diverses saveurs de l'instruction MOV, en commençant par:
88 /r MOV r/m8,r8 Move r8 to r/m8
89 /r MOV r/m16,r16 Move r16 to r/m16
89 /r MOV r/m32,r32 Move r32 to r/m32
8A /r MOV r8,r/m8 Move r/m8 to r8
8B /r MOV r16,r/m16 Move r/m16 to r16
8B /r MOV r32,r/m32 Move r/m32 to r32
Notez comment nos poissons utilisent au-dessus du 8A opcode. Comme vous pouvez le deviner, r8 est un registre de 8 bits, et r/m8 peut être un registre de 8 bits ou un octet de la mémoire. Notez également comment différents opcodes MOV sont disponibles pour les registres et les valeurs 16 et 32 bits (r16, r32). Les pages 3-2 à 3-5 expliquent les différents types d'arguments que vous pouvez spécifier dans une instruction MOV.
Mais, vous pouvez dire, cela ne vous dit pas assez sur la façon de construire les octets suivants dans l'instruction. Pour cela, consultez la section 2.1 - Format général des instructions, à partir de la page 2-1. Les instructions x86 peuvent être composées de séquences allant jusqu'à 6 octets: préfixes, opcode, ModR/M, SIB, déplacement et valeurs immédiates. Nos instructions de déplacement de registre sont simples et n'incluent qu'un code d'opération (8A) et un octet ModR/M.
La répartition de l'octet ModR/M est décrite dans la section 2.4, et englobant les tables de pages 2-5 à 2-6. Vous constaterez que l'octet ModR/M peut encoder à la fois le registre source et le registre de destination. Par exemple, pour passer de AL à DL, vous utiliserez la valeur D0 ModR/M, donnant l'instruction 8A D0.
Lire "Intel® 64 et IA-32 Architectures Software Manuel de développeur Volume 2A: du jeu d'instructions de référence, AM"
Plus précisément, le chapitre 2. –
Vous trouverez tous les opcodes dans quelques belles tables pour x86 à http://www.sandpile.org
Donc, vous demandez quelque chose comme « comment vous prenez l'instruction' MOV DL, AL' et de travailler les octets de code machine qui correspondent à ce »? – Doug
@Doug sorte de, je peux traduire quelques instructions, mais envisager MOV. il doit y avoir un code différent pour chaque combinaison différente de registre, registre immediatevalue, inscrivez-vous inscrire, MemoryAddress etc (arguements) –
Cela peut vous aider à http://stackoverflow.com/questions/3917098/how-are-hex-sequence-translated -à-ensemble-sans-ambiguïté/3934002 # 3934002 – jyz