官术网_书友最值得收藏!

Opcode bytes

Every instruction has an equivalent opcode (operation code) byte:

Address     Opcode          Instructions
00A92D7C B8 00000080 MOV EAX,80000000h
00A92D81 B9 02000000 MOV ECX,2
00A92D86 F7E1 MUL ECX

In the preceding code, the MOV instruction is equivalent to the B8 opcode byte. The MOV instruction at the 00A92D81 address is equivalent to B9. The difference between the two MOV instructions is the register into which the DWORD value is moved. There are a total of 5 bytes consumed in MOV EAX, 80000000h. It consists of the opcode byte, B8, and the operand value, 80000000h. The same number of bytes is also used in MOV ECX, 2, and MUL ECX uses 2 bytes.

MOV EAX, 80000000h is located at 00A92D7ch. Add 5 bytes (becomes 00A92D81) and we get to the address of the next instruction. Viewing the code in the memory would look like this:

Address     Bytes
00A92D7C B8 00 00 00 80 B9 02 00 00 00 F7 E1

A dump of memory is usually shown in memory dumpers in paragraphs or 16 bytes per line and address aligned to 10h.

Assembly language instructions can be categorized as follows:

  • Copying and accessing data instructions (for example, MOV, LEA, and MOVB)
  • Arithmetic instructions (for example, ADD, SUB, MUL, and DIV)
  • Binary logic instructions (for example, XOR, NOT, SHR, and ROL)
  • Flow control (for example, JMP, CALL, CMP, and INT)
主站蜘蛛池模板: 平凉市| 闽侯县| 肇东市| 大洼县| 麻城市| 乳源| 防城港市| 沽源县| 保定市| 西华县| 广南县| 曲松县| 陕西省| 富蕴县| 平顺县| 虹口区| 崇阳县| 南平市| 砀山县| 丘北县| 江油市| 安西县| 焦作市| 哈巴河县| 平利县| 古丈县| 石景山区| 孟连| 丰都县| 浦县| 九龙城区| 湟源县| 洪泽县| 永川市| 隆化县| 浠水县| 栾城县| 罗江县| 昌图县| 资兴市| 银川市|