Remember that LEA
can be used used for any calculation, not just an address (the actual result of the calculation is never accessed / dereferenced). Also, segment override has no effect on calculation.
- ecx = 0x402000 ; ebx = 0x20 ; FS segment prefix override (FS base = 0x7FFDD000)
- mov ecx, [ecx+ebx-4] ; result = ecx = 0x40201c
To check quickly that an address is mapped, in OllyDbg, you can stop at an instruction and check the mini-window between the CPU windows and the dump window:

The Address=XXXX
line indicates the result of the calculation (before actually executing the instruction). If you right click this line, you might see a popup window:
- If the address is mapped in the process address space, then you'll see a
Follow in Dump
entry on the popup-menu.
- If the address is not mapped, the popup-menu doesn't display the
Follow in dump
entry.
Note: OllyDbg (at least v2) will consider mapped kernel addresses as mapped, although they are obviously not accessible from userland. So if the MSB is set in an address, just consider it as not mapped.