user712850
user712850

Reputation:

What does the following x86 MOV instruction do?

Opcode with argument: 8B55 08
Disassembled: MOV EDX,DWORD PTR SS:[EBP+8]

Does this move the value at address EBP+8 and place it into EDX? What does the DWORD PTR mean?

What's the easiest way to test x86 instructions? Is there a way for me to define all my registers and flags and then execute/test instructions like this easily?

I'm using the following manual, but it's quite difficult to read at first: http://download.intel.com/products/processor/manual/325383.pdf

Upvotes: 1

Views: 869

Answers (1)

Cyclonecode
Cyclonecode

Reputation: 30001

The DWORD PTR specifies that the operand is 32 bits. It's is called a size directive and is explained further in x86 Assembly Guide

You will be forced to use this kind of modifier when the assembler cannot tell the actual size of the operand.

The instruction in question moves a 32 bit value from the stack segment (SS) into EDX

Like pointed out by @harold and @brendan the default segment when using EBP as base address is SS, so in your case you should be able to use mov edx, [ebp + 8]

One way to test instructions like the above would be to use inline assembler in Visual Studio and make use of the registers window in which you will be able to edit and display different register values.

Upvotes: 4

Related Questions