NASM doesn't use ASSUME directive?
You may need to change or add segment prefixes on the applicable references. Below an ASSUME <segreg> = <segname>, make sure that every reference to a label in that segment, that's not using the default segment (DS), has <segreg> prefixed.
Actually, I forget offhand if ASSUME actually does anything with code generation (i.e., ASSUME ES=MySeg, and MyLabel is in MySeg, a MOV AX,[MyLabel] should automatically prefix ES: on it?) or if it's just for checking (if you didn't set ES above, it's probably a warning?). Hmm no, the latter wouldn't even make sense.... Well anyway, it's in the docs, I should look it up rather than ramble here.
Tim