Only BX or BP can be used as base address and only SI or DI can be used as index. If BP is used SS is assumed, otherwise, BX, then DS is assumed.
It is possible use different registers in an effective address only with E?? (and R??) registers.
[bx+di] is valid, but [di+si] isn't.
mov al,[bx] ; ok
mov al,[si] ; ok
mov al,[di] ; ok
mov al,[bp] ; ok
mov al,[bx+si] ; ok
mov al,[bx+di] ; ok
mov al,[bp+si] ; ok
mov al,[bp+di] ; ok
; All invalid
mov al,[ax]
mov al,[cx]
mov al,[dx]
mov al,[sp]
mov al,[ax+bx]
mov al,[ax+cx]
mov al,[ax+dx]
mov al,[ax+si]
mov al,[ax+di]
mov al,[ax+bp]
mov al,[ax+sp]
mov al,[bx+cx]
mov al,[bx+dx]
mov al,[bx+bp]
mov al,[bx+sp]
mov al,[cx+dx]
mov al,[cx+si]
mov al,[cx+di]
mov al,[cx+bp]
mov al,[cx+sp]
mov al,[dx+si]
mov al,[dx+di]
mov al,[dx+bp]
mov al,[dx+sp]
mov al,[si+di]
mov al,[si+sp]
mov al,[di+sp]
mov al,[bp+sp]
$ nasm test.asm
test.asm:10: error: invalid effective address
test.asm:11: error: invalid effective address
test.asm:12: error: invalid effective address
test.asm:13: error: invalid effective address
test.asm:14: error: invalid effective address
test.asm:15: error: invalid effective address
test.asm:16: error: invalid effective address
test.asm:17: error: invalid effective address
test.asm:18: error: invalid effective address
test.asm:19: error: invalid effective address
test.asm:20: error: invalid effective address
test.asm:21: error: invalid effective address
test.asm:22: error: invalid effective address
test.asm:23: error: invalid effective address
test.asm:24: error: invalid effective address
test.asm:25: error: invalid effective address
test.asm:26: error: invalid effective address
test.asm:27: error: invalid effective address
test.asm:28: error: invalid effective address
test.asm:29: error: invalid effective address
test.asm:30: error: invalid effective address
test.asm:31: error: invalid effective address
test.asm:32: error: invalid effective address
test.asm:33: error: invalid effective address
test.asm:34: error: invalid effective address
test.asm:35: error: invalid effective address
test.asm:36: error: invalid effective address
test.asm:37: error: invalid effective address