Código fuente de conversión de dirección compensada
Los microordenadores utilizan la memoria en segmentos para cada programa de usuario. El área donde se almacena el código del programa se llama segmento de código y el área donde se almacenan los datos del usuario se llama segmento de datos. La primera dirección del segmento de datos (que es un número hexadecimal de 5 dígitos, la dirección superior de 4 bits se almacena en el registro del segmento DS, la última dirección de 1 bit por defecto es 0) es igual a DS * 16 (multiplicado por 16 equivale a almacenar el registro de segmento DS).
Cuando se utiliza un segmento de datos para almacenar datos, se utiliza la dirección efectiva (es decir, la dirección de desplazamiento), es decir, un puntero, como SI, como puntero de datos.
SI carga la dirección de desplazamiento del operando.
La dirección física real de este operando = DS * 16+Si = 20000h+1000h = 21000h.
Jaja, hay un error en tu código fuente:
MOV DX, 4000H debería ser MOV AX, 4000H MOV DS, AX
MOV SI, 1000HMOV AX, [SI]
Jaja, elige la respuesta que te satisfaga.