Invocando a una funcion.

Invocando a una funcion.

de Sofia Maiolo Cabrera -
Número de respuestas: 1
Hola! Mirando las diapositivas de 8086, en la última diapositiva, cuando se invoca a la función len con una dirección absoluta, tengo la siguiente duda:

la dirección es 0x98765 y se hace lo siguiente:

mov bx,5
mov ax, 9876
mov ds, ax
call len

cómo se sabe que tiene que ir a buscar el array a la dirección 0x98765 si en ds quedó solo 9876? 

Alguien sabe cómo es?
Muchas gracias!!

Saludos,
Sofia
En respuesta a Sofia Maiolo Cabrera

Re: Invocando a una funcion.

de Gonzalo Tejera -
Hola. Primero aclarar que la instrucción mov ax, 9876 debería ser mov ax, 0x9876.

Internamente la función len usa DS:BX como dirección de comienzo del string.

Las direcciones segmentadas (segmento:desplazamiento) son transformadas a direcciones físicas por el 8086 haciendo la cuenta segmento * 16 + desplazamiento.

Saludos, Gonzalo