This is the code I have written
PUSH BP
MOV BP,SP
MOV AX,2
MOV [BP-8+AX*3],7
When I emulate this in emu8086 , I can see the following
You can see the address that should be calculated to 2 , but here it is calculated to 18h. I tried changing the value of AX , but still it remains to 18h. So after few trials , I understood that it completely ignores AX and is calculating 8 * 3 = 24 = 18h. This [BP-8+AX*3] is a valid instruction. Why is this weird thing happening ?