Buen día!
Es casi como decís, la instrucción MOV 0x0800:[0x0100] no es válida, el segmento no se puede indicar con un inmediato, eso no es soportado por la arquitectura. Obligatoriamente se debe utilizar uno de los registros de segmento, por ejemplo DS, como sugerís.
Luego, hay una sutileza, y es que a los segmentos no se les puede asignar directamente un inmediato, eso tampoco es soportado. La forma de lograr lo que vos querés sería primero pasar el inmediato a un registro de propósito general, luego moverlo a DS, y finalmente realizar el acceso a memoria:
MOV DX, 0x8000
MOV DS, DX
MOV DS:[0x0100], AX
Una buena manera de estar seguro de que algo es válido es probarlo en el arquisim (preguntar en el foro también está bien, pero sugiero la otra opción por si demoramos en responder)
Saludos!
Federico