Assembly Segments in opcodes
addressing-mode, assembly, masm, memory-segmentation, x86
Solution
MOV DWORD PTR SS:[EBP-30],30
There are two separate modifiers here, `DWORD PTR` and `SS:`.
The first one tells us that we want to store a word at the address pointed to. This is needed when the assembler cannot tell that from the operands of the instruction. Here `30` could just as well be a byte to store.
The `SS:` is a segment prefix, saying that we want to use an address relative to the stack segment. In this case it isn't strictly needed, because that is the default when using the `ESP` or `EBP` registers. So the second version of the instruction is identical to the first one.
Had you used `EBX` instead of `EBP` there would have been a difference!
Problem
I noticed that in Assembly segments are used in opcodes. Example: ``` MOV DWORD PTR SS:[EBP-30],30 ``` I think that "PTR SS:" is used to specify that EBP-30 comes from the stack? (SS: stack segment) Am I right or am I completely wrong? :) And, could you please tell me the difference between the example above and ``` MOV DWORD PTR[EBP-30],30 ``` And what about DS (data segment) used in opcodes?