I was wondering why the line:

sub dx,offset a1[di+1]

Actually goes on and does

sub dx,a1[di+1]

If di=2 then it would b:

sub dx,a1[3]

I dun get why it ignores the offset...why doesn;t it take the adress or atleast the index ...
(Not sure if it should get the adress or the index either)

I think it has something to do with using non base pointers (di,si) and not using the base ones such as bx and bp but am not sure the teacher couldn;t answer that one.

I got a final test tomorrow so I would really appriciate it if someone could answer this.