You are on page 1of 10

Recordar que una DIRECCIÓN EFECTIVA de memoria para un microprocesador 8088

y 8086 (20 líneas de direcciones) es representada utilizando la siguiente sintáxis:

Segmento : desplazamiento

Debido a que ambos registros son de 16 bits y es necesario calcular una dirección para 20
líneas de direcciones, es necesario representarlos en 20 bits. La dirección efectiva se calcula
de la siguiente forma:

Dirección efectiva = (segmento)(10 h)+ desplazamiento

El efecto de multiplicar al dato contenido en el registro segmento por la constante 10h, da


como resultado agregar a la derecha del dato contenido en el registro segmento un 0.

Por ejemplo, la dirección de un dato está representada como A8C9 : F876.

El valor del registro de segmento es: A8C9 h


Valor de (segmento)(10h) es: A8C90 h
El valor del registro de desplazamiento es: F876 h

Segment A 8 C 9 0
o
Offset F 8 7 6

Dirección efectiva = (segmento)(10 h)+ desplazamiento


Dirección efectiva = (A8C9 h)(10 h)+ F876 h
Dirección efectiva = A8C90 h + F876 h
Dirección efectiva = B8506 h

Acarreo 1 1 1
Segment A 8 C 9 0
o
Offset F 8 7 6
B 8 5 0 6

Como es un poco complicado realizar una suma de números hexadecimales ya que


estamos acostumbrados a realizar nuestras operaciones en otro sistema numérico (base 10),
un procedimiento alterno consiste en convertir cada uno de los dígitos hexadecimales en su
correspondiente número base 10.

Segment A  1 8  8 C  1 9  9 0  0
o  0   2  
Offset F  1 8  8 7  7 6  6
 5   

Realizada la conversión, procedemos a sumar los elementos de cada columna


comenzando de derecha a izquierda. La primera suma es entre un valor y el neutro aditivo,
así que el resultado siempre será el valor y no existirá acarreo.

Segment A 1 8 8 C 1 9 9 0 0
o 0 2
Offset F 1 8 8 7 7 6 + 6
5
Suma = 6

Continuamos con la siguiente columna que es la suma entre 9 y el 7

Segment A 1 8 8 C 1 9 9 0 0
o 0 2
Offset F 1 8 8 7 + 7 6 6
5
Suma = 1 6
6

En el sistema hexadecimal se tienen 16 símbolos que van desde el 0 hasta la literal F. El


valor de la literal F en base 10 es el número 15 ( F -> 15 ), así que si el resultado de la suma
excede el valor de 15, no podemos representarlo en un dígito hexadecimal e implica que se
tuvo un excedente de valor que ocasionará un acarreo de una unidad a la siguiente columna
y debemos encontrar el valor correcto en base 10 del dígito hexadecimal que debe
permanecer en nuestra columna.

Para hallar el valor correcto en base 10 del dígito hexadecimal de la columna, al resultado
de la suma en base 10 le restamos 16 unidades.

Acarreo
Segment A 1 8 8 C 1 9 9 0 0
o 0 2
Offset F 1 8 8 7 7 6 6
5
Suma 1 6
6
- 1
6
= 0

El resultado de esta resta corresponderá al valor en base 10 del dígito hexadecimal de la


columna y debemos anotar que para la siguiente columna se lleva un acarreo de una unidad.

Acarreo 1
Segment A 1 8 8 C 1 9 9 0 0
o 0 2
Offset F 1 8 8 7 7 6 6
5
Suma 0 6
Ahora sumamos los valores en base 10 de la siguiente columna y el acarreo (si éste
existiera) y si la suma en base 10 excede el valor de 15, aplicamos el procedimiento
anterior.

Acarreo 1
Segment A 1 8 8 C + 1 9 9 0 0
o 0 2
Offset F 1 8 8 7 7 6 6
5
Suma = 2 0 6
1

La suma supera el valor de 15 en base 10.

Acarreo 1
Segment A 1 8 8 C 1 9 9 0 0
o 0 2
Offset F 1 8 8 7 7 6 6
5
Suma 2 0 6
1
- 1
6
= 5

El nuevo resultado es:

Acarreo 1 1
Segment A 1 8 8 C 1 9 9 0 0
o 0 2
Offset F 1 8 8 7 7 6 6
5
Suma 5 0 6

Seguimos con la penúltima suma.

Acarreo 1 1
Segment A 1 8 + 8 C 1 9 9 0 0
o 0 2
Offset F 1 8 8 7 7 6 6
5
Suma = 2 5 0 6
4

La suma supera el valor de 15 en base 10.

Acarreo 1 1
Segment A 1 8 8 C 1 9 9 0 0
o 0 2
Offset F 1 8 8 7 7 6 6
5
Suma 2 5 0 6
4
- 1
6
= 8

El nuevo resultado es:


Acarreo 1 1 1
Segment A 1 8 8 C 1 9 9 0 0
o 0 2
Offset F 1 8 8 7 7 6 6
5
Suma 8 5 0 6

Realizamos la última suma:

Acarreo 1 1 1
Segment A  1 8 8 C 1 9 9 0 0
o 0 2
Offset F 1 8 8 7 7 6 6
5
Suma = 11 8 5 0 6

El resultado de las sumas en base 10 es:

Acarreo 1 1 1
Segment A 1 8 8 C 1 9 9 0 0
o 0 2
Offset F 1 8 8 7 7 6 6
5
Suma 11 8 5 0 6

Por último tenemos que convertir cada uno de los valores de las sumas en base 10 a su
equivalente en hexadecimal

Acarreo 1 1 1
Segment A 1 8 8 C 1 9 9 0 0
o 0 2
Offset F 1 8 8 7 7 6 6
5
Suma B < 11 8 < 8 5 < 5 0 < 0 6 < 6
- - - - -

El resultado final de las operaciones es:

Acarreo 1 1 1
Segment A 8 C 9 0
o
Offset F 8 7 6
B 8 5 0 6

Ejemplo 2:

La dirección de un dato está representada como CDEF : FEDC.

El valor del registro de segmento es: CDEF h


Valor de (segmento)(10h) es: CDEF 0 h
El valor del registro de desplazamiento es: FEDC h

Segment C D E F 0
o
Offset F E D C

Dirección efectiva = (segmento)(10 h)+ desplazamiento


Dirección efectiva = (CDEF h)(10 h)+ FEDC h
Dirección efectiva = CDEF0 h + FEDC h
Dirección efectiva = DDDCC h

Acarreo 1 1 1
Segment C D E F 0
o
Offset F E D C
D D D C C

Convertir los números hexadecimales a base 10.

Segment C  1 D  1 E  1 F  1 0  0
o  2  3  4  5
Offset F  1 E  1 D  1 C  12
 5  4  3

Sumar los elementos de cada columna comenzando de derecha a izquierda. La primera


suma es entre un valor y el neutro aditivo, así que el resultado siempre será el valor y no
existirá acarreo.

Segment C 1 D 1 E 1 F 1 0 0
o 2 3 4 5
Offset F 1 E 1 D 1 C + 1
5 4 3 2
Suma = 1
2

Continuamos con la siguiente columna que es la suma entre F y la D.

Segment C 1 D 1 E 1 F 1 0 0
o 2 3 4 5
Offset F 1 E 1 D + 1 C 1
5 4 3 2
Suma = 2 1
8 2
La suma supera el valor de 15 en base 10.

Acarreo
Segment C 1 D 1 E 1 F 1 0 0
o 2 3 4 5
Offset F 1 E 1 D 1 C 1
5 4 3 2
Suma 2 1
8 2
- 1
6
= 1
2
El nuevo resultado es:

Acarreo 1
Segment C 1 D 1 E 1 F 1 0 0
o 2 3 4 5
Offset F 1 E 1 D 1 C 1
5 4 3 2
Suma 1 1
2 2

Continuamos con la siguiente columna que es la suma entre E y la E.

Acarreo 1
Segment C 1 D 1 E + 1 F 1 0 0
o 2 3 4 5
Offset F 1 E 1 D 1 C 1
5 4 3 2
Suma = 2 1 1
9 2 2

La suma supera el valor de 15 en base 10.

Acarreo 1
Segment C 1 D 1 E 1 F 1 0 0
o 2 3 4 5
Offset F 1 E 1 D 1 C 1
5 4 3 2
Suma 2 1 1
9 2 2
- 1
6
= 1
3
El nuevo resultado es:

Acarreo 1 1
Segment C 1 D 1 E 1 F 1 0 0
o 2 3 4 5
Offset F 1 E 1 D 1 C 1
5 4 3 2
Suma 1 1 1
3 2 2

Seguimos con la penúltima suma.

Acarreo 1 1
Segment C 1 D + 1 E 1 F 1 0 0
o 2 3 4 5
Offset F 1 E 1 D 1 C 1
5 4 3 2
Suma = 2 1 1 1
9 3 2 2

La suma supera el valor de 15 en base 10.

Acarreo 1 1
Segment C 1 D 1 E 1 F 1 0 0
o 2 3 4 5
Offset F 1 E 1 D 1 C 1
5 4 3 2
Suma 2 1 1 1
9 3 2 2
- 1
6
= 1
3

El nuevo resultado es:


Acarreo 1 1 1
Segment C 1 D 1 E 1 F 1 0 0
o 2 3 4 5
Offset F 1 E 1 D 1 C 1
5 4 3 2
Suma 1 1 1 1
3 3 2 2

Realizamos la última suma:

Acarreo 1 1 1
Segment C  1 D 1 E 1 F 1 0 0
o 2 3 4 5
Offset F 1 E 1 D 1 C 1
5 4 3 2
Suma = 1 1 1 1 1
3 3 3 2 2

El resultado de las sumas en base 10 es:

Acarreo 1 1 1
Segment C 1 D 1 E 1 F 1 0 0
o 2 3 4 5
Offset F 1 E 1 D 1 C 1
5 4 3 2
Suma 1 1 1 1 1
3 3 3 2 2

Por último tenemos que convertir cada uno de los valores de las sumas en base 10 a su
equivalente en hexadecimal

Acarreo 1 1 1
Segment C 1 D 1 E 1 F 1 0 0
o 2 3 4 5
Offset F 1 E 1 D 1 C 1
5 4 3 2
Suma D < 1 D < 1 D < 1 C < 1 C < 1
- 3 - 3 - 3 - 2 - 2

El resultado final de las operaciones es:

Acarreo 1 1 1
Segment C D E F 0
o
Offset F E D C
D D D C C

You might also like