Je dois ouvrir le fichier COM et trouver "CMP AX, BX" à partir de ce fichier. Je suis coincé, je suppose que j'ai besoin de comparer le code machine de l'instruction CMP. J'ai donc besoin de connaître la valeur numérique de CMP.Valeur numérique du registre CMP 16bit, registre 16 bits
Répondre
La valeur de CMP varie en fonction de l'opérande.
Il peut être, dans hexadécimaux:
mnémoniques
39 - CMP Reg, Reg
3A - CMP Regb,Memory
3B - CMP Reg,Memory
3C - CMP AL,Byte
3D - CMP (E)AX,Immediate
80 - CMP RegByte,Immediate Byte = 80
81 - CMP Memory,Reg = 81
83 - CMP Reg/Mem,Immediate (sign extended) byte
voir cette pour plus de détails: http://www.mathemainzel.info/files/x86asmref.html#cmp
Utilisez un assembleur en ligne
Vous pouvez facilement trouver cela en utilisant un assembleur en ligne, comme: https://defuse.ca/online-x86-assembler.htm
Plus précisément
Sur l'original 8086 il est
39 D8 CMP AX,BX
Sur le 80386 et au-dessus est
66 39 D8 CMP AX,BX + 16 bit operand size override.
Instruction de décodage
L'instruction décode comme suit
66 -> 16 bit operand size override
39 -> CMP R16, R16
D8 -> = binary 11 011 000
|| || ++--- AX = reg0
|| ++ BX = reg3
++--ModRM code for pure register operands, no memory
Voir: http://ref.x86asm.net/geek.html#x00
Au fond où il est dit: 32-bit ModR/M Byte
x86 décode les registres sous forme octal dans l'ordre:
AX CX DX BX SP BP SI DI
0 1 2 3 4 5 6 7
000 001 010 011 100 101 110 111
Les deux premiers bits de l'octet ModRM sont:
00: [reg] : memory addressed by reg with no offset
01: [reg+8-bit offset]: memory addressed by reg with 8-bit offset
10: [reg+32-bit offset] memory addressed by reg with 32-bit offset
11: reg: just the register.
L'opcode instruction spécifie si l'octet modrm suivant est source, dest
ou dest,source
.
"Sur le 80386 et au-dessus c'est 66 39 D8" Pas nécessairement (seulement nécessaire en mode protégé), et dans le cas de l'OP où il cherche dans un fichier .COM, hautement improbable! – Fifoernik
@Fifoernik, je réponds à la question générale. – Johan
Même si. Avec n'importe quel processeur, vous pouvez trouver les deux formes dans un fichier. – Fifoernik
avez-vous essayé de l'assembler et de le démonter pour voir ce que vous avez? Ou avez-vous regardé la référence du jeu d'instructions? qu'avez-vous trouvé quand vous l'avez fait? –