Modos de Direccionamiento
Conjunto de Instrucciones 386 <ul><ul><li>Conjunto de Instrucciones Básico ≡ conjunto de instrucciones del 8086/8088 </li>...
Conjunto de Instrucciones 386 <ul><li>Modos de Direccionamiento de Datos del  80386DX  </li></ul><ul><ul><li>Modos de dire...
Modos de Direccionamiento <ul><ul><li>Direccionamiento por registro </li></ul></ul><ul><ul><ul><li>Puede accesarse por byt...
Direccionamiento por Registro ABCD  0000 0100 XXXX  ABCD  01000  89  MOV AX, BX 01001  D8 01002  XX  IP CS DS SS ES FS GS ...
Direccionamiento Inmediato 0000 0100 01000  B0  MOV AL, 15H 01001  15 01002  XX  XX 15 IP CS DS SS ES FS GS AX BX CX DX SP...
Direccionamiento Directo <ul><li>Operandos de 16 y 32 bits en memoria </li></ul><ul><ul><li>Dirección del dato = Segmento ...
Direccionamiento Directo <ul><ul><li>Ejemplo </li></ul></ul><ul><ul><ul><li>PA = Segmento Base*16 + EA del dato </li></ul>...
Direccionamiento Indirecto por Registro <ul><ul><li>Ejemplo </li></ul></ul><ul><ul><ul><li>Segmento Base : Dirección Indir...
Direccionamiento Base <ul><ul><li>PA = Segmento*16 + {BX o BP} + {desplazamiento de 8-bit o 16-bit} </li></ul></ul><ul><ul...
Direccionamiento Indexado <ul><ul><li>PA = Segmento*16 + {SI, DI} + {desplazamiento 8-bit o 16-bit} </li></ul></ul><ul><ul...
Direccionamiento Base+ Indice <ul><ul><li>Características: </li></ul></ul><ul><ul><ul><li>PA= Segmento*16 +{BX, BP}+{SI,DI...
Direccionamiento Base+Indice de un arreglo de dos dimensiones <ul><li>Arreglo de datos de dos dimensiones. </li></ul>Eleme...
Ejemplo:  MOV AH, [BX][SI]+1234H M0V AH,[BX][SI]+1234H 0200 0100 0000 01000  8A 01001  A0 01002  34 01003  12 01004  xx 02...
Ejemplo:  MOV AH, [BX][SI]+1234H M0V AH,[BX][SI]+1234H 0200 0100 0004 01000  8A 01001  20 01002  34 01003  12 01004  xx 02...
Direccionamiento Indice Escalado <ul><ul><li>Exclusivo de los microprocesadores 80386 hasta Pentium 4 </li></ul></ul><ul><...
Ejemplos de Direccionamiento Inmediato <ul><li>MOV BL,44 </li></ul><ul><li>MOV AX,44H </li></ul><ul><li>MOV SI,0 </li></ul...
Ejemplos de direccionamiento por Registro <ul><li>MOV AL, BL </li></ul><ul><li>MOV CH, CL </li></ul><ul><li>MOV AX, CX </l...
Ejemplos de Direccionamiento Directo <ul><li>MOV AL, NUMERO </li></ul><ul><li>MOV AX, ALGO </li></ul><ul><li>MOV EAX, AGUA...
Ejemplos de direccionamiento Indirecto por Registro <ul><li>MOV CX, [BX] </li></ul><ul><li>MOV [BP], DL </li></ul><ul><li>...
Ejemplos de direccionamiento Base +Indice <ul><li>MOV CX, [BX+DI] </li></ul><ul><li>MOV CH, [BP+SI] </li></ul><ul><li>MOV ...
Ejemplos de direccionamiento Base +Indice <ul><li>Este direccionamiento se usa para accesar los elementos de un arreglo de...
Ejemplos de direccionamiento relativo por Registro <ul><li>MOV AX, [DI+100H] </li></ul><ul><li>MOV ARREGLO [SI], BL </li><...
EJERCICIO 1 <ul><li>Asuma que DS=1512H. Encontrar la direccion fisica y su contenido de la localidad de memoria despues de...
EJERCICIO 2 <ul><li>Asuma que DS=1120H, SI=2498H, y AX=17FEH. Muestre graficamente el contenido de las localidades de memo...
EJERCICIO 3 <ul><li>Asuma que DS=4500, SS=2000, BX=2100, SI=1486, DI=8500, BP=7814, y AX=2512. Muestre las direcciones f í...
EJERCICIO 4 <ul><li>De las instrucciones siguientes cuantas no codifican en lenguaje ensamblador, d é  la raz ó n por qu é...
Ejemplos de instrucciones con direccionamiento relativo base+ í ndice <ul><li>MOV DH, [BX+DI+20H] </li></ul><ul><li>MOV AX...
Ejemplos de direccionamiento  í ndice escalado <ul><li>MOV EAX, [EBX+4*ECX] </li></ul><ul><li>MOV [EAX+2*EBX], CX </li></u...
Próxima SlideShare
Cargando en…5
×

Modos de Direccionamiento

28.946 visualizaciones

Publicado el

Publicado en: Empresariales, Tecnología
0 comentarios
3 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

Sin descargas
Visualizaciones
Visualizaciones totales
28.946
En SlideShare
0
De insertados
0
Número de insertados
170
Acciones
Compartido
0
Descargas
688
Comentarios
0
Recomendaciones
3
Insertados 0
No insertados

No hay notas en la diapositiva.

Modos de Direccionamiento

  1. 1. Modos de Direccionamiento
  2. 2. Conjunto de Instrucciones 386 <ul><ul><li>Conjunto de Instrucciones Básico ≡ conjunto de instrucciones del 8086/8088 </li></ul></ul><ul><ul><li>Conjunto de Instrucciones Extendido : 80286; algunas instrucciones nuevas y modos de direccionamiento adicionales </li></ul></ul><ul><ul><li>Conjunto de instrucciones específico del 80386: </li></ul></ul>Basic Instruction Set Basic + Extended Instruction Set Basic + Extended+ 80386 specific Instruction Set System control Instruction set System control Instruction set 8086/8088 80286 80386 Protected Mode Real Mode
  3. 3. Conjunto de Instrucciones 386 <ul><li>Modos de Direccionamiento de Datos del 80386DX </li></ul><ul><ul><li>Modos de direccionamiento: m é todos para especificar operandos </li></ul></ul><ul><ul><ul><li>Operandos : en registro, dentro de instrucción, memoria, puertos E/S </li></ul></ul></ul><ul><ul><li>* Control de puertos : direccionamiento directo, indirecto </li></ul></ul><ul><ul><li>Modos de Direccionamiento disponibles: </li></ul></ul><ul><ul><ul><li>Direccionamiento por Registro : registro </li></ul></ul></ul><ul><ul><ul><li>Direccionamiento inmediato: dentro de instrucción </li></ul></ul></ul><ul><ul><ul><li>Direccionamiento directo </li></ul></ul></ul><ul><ul><ul><li>Direccionamiento indirecto por Registro </li></ul></ul></ul><ul><ul><ul><li>Direccionamiento Base </li></ul></ul></ul><ul><ul><ul><li>Direccionamiento Indexado </li></ul></ul></ul><ul><ul><ul><li>Direccionamiento Indexado Base </li></ul></ul></ul>MEM o E/S
  4. 4. Modos de Direccionamiento <ul><ul><li>Direccionamiento por registro </li></ul></ul><ul><ul><ul><li>Puede accesarse por bytes, palabras, palabras dobles. </li></ul></ul></ul><ul><ul><ul><li>MOV AX, BX </li></ul></ul></ul><ul><ul><ul><li>Byte: AL, AH, BL, BH, CL, CH, DL, DH </li></ul></ul></ul><ul><ul><ul><li>Palabra: AX, BX, CX, DX, SP, BP, SI, DI, CS, DS, SS, ES, FS, GS </li></ul></ul></ul><ul><ul><ul><li>Palabra doble: EAX, EBX, ECX, EDX, ESP, EBP, ESI, EDI </li></ul></ul></ul><ul><ul><li>Direccionamiento Inmediato </li></ul></ul><ul><ul><ul><li>Un operando es parte de la instrucción </li></ul></ul></ul><ul><ul><ul><li>MOV AL, 15H </li></ul></ul></ul><ul><ul><ul><li>8 bits, 16 bits, y 32 bits </li></ul></ul></ul>
  5. 5. Direccionamiento por Registro ABCD 0000 0100 XXXX ABCD 01000 89 MOV AX, BX 01001 D8 01002 XX IP CS DS SS ES FS GS AX BX CX DX SP BP SI DI Dirección Contenido Memoria Instrucción 80386 uP
  6. 6. Direccionamiento Inmediato 0000 0100 01000 B0 MOV AL, 15H 01001 15 01002 XX XX 15 IP CS DS SS ES FS GS AX BX CX DX SP BP SI DI Dirección Contenido de Memora Instrucción 80386 MPU
  7. 7. Direccionamiento Directo <ul><li>Operandos de 16 y 32 bits en memoria </li></ul><ul><ul><li>Dirección del dato = Segmento : EA (dirección efectiva) </li></ul></ul><ul><ul><ul><li>Dirección Segmento Base : localidad inicial del segmento </li></ul></ul></ul><ul><ul><ul><li>EA : desplazamiento (offset)del operando desde el inicio del segmento </li></ul></ul></ul><ul><ul><ul><li> EA = Base + Index + Desplazamiento </li></ul></ul></ul><ul><ul><ul><li> Base = BX or BP, Index = SI o DI, desplazamiento = 8-bits o 16-bits </li></ul></ul></ul>
  8. 8. Direccionamiento Directo <ul><ul><li>Ejemplo </li></ul></ul><ul><ul><ul><li>PA = Segmento Base*16 + EA del dato </li></ul></ul></ul><ul><ul><ul><li>Ejemplo: MOV BX, [1234H] </li></ul></ul></ul>MOV BX, [1234H] IP CS DS SS ES FS GS AX BX CX DX SP BP SI DI 01000 01001 01002 01003 01004 8B 0E 34 12 XX 0000 0100 0200 XXXX 03234 ED 03235 BE BEED
  9. 9. Direccionamiento Indirecto por Registro <ul><ul><li>Ejemplo </li></ul></ul><ul><ul><ul><li>Segmento Base : Dirección Indirecta {BX,BP,SI,DI} </li></ul></ul></ul><ul><ul><ul><li>Ejemplo : MOV AX, [SI] </li></ul></ul></ul>MOV AX,[SI] IP CS DS SS ES FS GS AX BX CX DX SP BP SI DI 01000 01001 01002 01003 01004 8B 04 XX XX XX 0000 0100 0200 XXXX 03234 ED 03235 BE BEED 1234
  10. 10. Direccionamiento Base <ul><ul><li>PA = Segmento*16 + {BX o BP} + {desplazamiento de 8-bit o 16-bit} </li></ul></ul><ul><ul><li>Registro Base : comienzo de la estructura de datos </li></ul></ul><ul><ul><li>Example: MOV [BX]+1234H, AL </li></ul></ul>MOV [BX]+1234H, AL Arreglo de datos IP CS DS SS ES FS GS AX BX CX DX SP BP SI DI 01000 01001 01002 01003 01004 88 07 34 12 XX 0000 0100 0200 04234 04235 1234 ED 1000 Desplazamiento Registro Base + Elemento 0 Elemento 1 Elemento n-1
  11. 11. Direccionamiento Indexado <ul><ul><li>PA = Segmento*16 + {SI, DI} + {desplazamiento 8-bit o 16-bit} </li></ul></ul><ul><ul><ul><li>Desplazamiento : dirección inicial de un arreglo </li></ul></ul></ul><ul><ul><ul><li>Indice: selecciona elemento específico en el arreglo </li></ul></ul></ul><ul><ul><ul><li>Ejemplo: MOV AL, [SI]+1234H </li></ul></ul></ul>8A 44 34 12 XX 0000 0100 0200 05234 05235 2000 XX 1000 MOV AL, [SI]+1234H BE . . . Indice Desplazamiento + Element 0 Element 1 Arreglo de datos Element n-1 IP CS DS SS ES FS GS AX BX CX DX SP BP SI DI 01000 01001 01002 01003 01004
  12. 12. Direccionamiento Base+ Indice <ul><ul><li>Características: </li></ul></ul><ul><ul><ul><li>PA= Segmento*16 +{BX, BP}+{SI,DI}+{desplazamiento 8-bit o 16-bit} </li></ul></ul></ul><ul><ul><ul><li>Usado para accesar estructuras complejas de datos </li></ul></ul></ul><ul><ul><ul><li>Ver figura en la página siguiente </li></ul></ul></ul><ul><ul><ul><li>El desplazamiento (valor fijo) ubica el arreglo en memoria </li></ul></ul></ul><ul><ul><ul><li>El registro base especifica la coordenada m </li></ul></ul></ul><ul><ul><ul><li>El registro índice especifica la coordenada n </li></ul></ul></ul><ul><ul><ul><li>Ejemplo: MOV AH, [BX][SI]+1234H </li></ul></ul></ul><ul><ul><ul><li> opcode : 8A 44 34 12 </li></ul></ul></ul>
  13. 13. Direccionamiento Base+Indice de un arreglo de dos dimensiones <ul><li>Arreglo de datos de dos dimensiones. </li></ul>Elemento (m, n) Elemento (m, 1) . . . Elemento (m, 0 Elemento (l, n) . . . Elemento (1, 1) Elemento (1, 0) Elemento (0, n) . . . Elemento (0, 1) Elemento (0, 0) Registro índice Registro base Desplazamiento + +
  14. 14. Ejemplo: MOV AH, [BX][SI]+1234H M0V AH,[BX][SI]+1234H 0200 0100 0000 01000 8A 01001 A0 01002 34 01003 12 01004 xx 02000 xx 02001 xx Dirección Contenido Instrucción . . . . . . . . 06234 BE Operando Fuente xx xx 1000 2000 IP SI CS DS AX BX ANTES
  15. 15. Ejemplo: MOV AH, [BX][SI]+1234H M0V AH,[BX][SI]+1234H 0200 0100 0004 01000 8A 01001 20 01002 34 01003 12 01004 xx 02000 xx 02001 xx Dirección Contenido Instrucción . . . . . . . . 06234 BE Operando Fuente xx BE 1000 2000 IP SI CS DS AX BX DESPUES
  16. 16. Direccionamiento Indice Escalado <ul><ul><li>Exclusivo de los microprocesadores 80386 hasta Pentium 4 </li></ul></ul><ul><ul><ul><li>Factor de escala afecta a la dirección efectiva solamente </li></ul></ul></ul><ul><ul><ul><li>EA = Registro Base + (Registro Indice x factor de escala) + desplazamiento </li></ul></ul></ul><ul><ul><ul><li>PA = Segmento Base*16 + EA </li></ul></ul></ul>
  17. 17. Ejemplos de Direccionamiento Inmediato <ul><li>MOV BL,44 </li></ul><ul><li>MOV AX,44H </li></ul><ul><li>MOV SI,0 </li></ul><ul><li>MOV CH,100 </li></ul><ul><li>MOV AL,’A’ </li></ul><ul><li>MOV AX,64H </li></ul><ul><li>MOV CL,11001110B </li></ul><ul><li>MOV EBX,12340000H </li></ul><ul><li>MOV ESI,12 </li></ul><ul><li>MOV EAX,100H </li></ul>
  18. 18. Ejemplos de direccionamiento por Registro <ul><li>MOV AL, BL </li></ul><ul><li>MOV CH, CL </li></ul><ul><li>MOV AX, CX </li></ul><ul><li>MOV SP, BP </li></ul><ul><li>MOV DS, AX </li></ul><ul><li>MOV SI, DI </li></ul><ul><li>MOV BX, ES </li></ul><ul><li>MOV ECX, EBX </li></ul><ul><li>MOV ESP, EDX </li></ul><ul><li>MOV ES, DS ;?? NO se permite segmento a segmento </li></ul><ul><li>MOV BL, DX ;?? NO se permite tipos de datos distintos </li></ul><ul><li>MOV CS, AX ;?? NO se permite CS como destino. </li></ul>
  19. 19. Ejemplos de Direccionamiento Directo <ul><li>MOV AL, NUMERO </li></ul><ul><li>MOV AX, ALGO </li></ul><ul><li>MOV EAX, AGUA </li></ul><ul><li>MOV NOTICIAS, AL </li></ul><ul><li>MOV ALLA, AX </li></ul><ul><li>MOV CASA, EAX </li></ul><ul><li>MOV ES:[2000H],AL </li></ul><ul><li>MOV [2000H], AL </li></ul><ul><li>MOV AL, [1234H] </li></ul><ul><li>MOV CX, DATO+5 </li></ul><ul><li>MOV TABLA1, AX </li></ul><ul><li>MOV AL, DATO1 </li></ul>
  20. 20. Ejemplos de direccionamiento Indirecto por Registro <ul><li>MOV CX, [BX] </li></ul><ul><li>MOV [BP], DL </li></ul><ul><li>MOV [DI], BH </li></ul><ul><li>MOV AL, [EDX] </li></ul><ul><li>MOV ECX, [EBX] </li></ul><ul><li>MOV [DI], [BX] ;?? NO se permite transferencia de memoria a memoria, excepto con instrucciones que manejan cadenas de caracteres. </li></ul>
  21. 21. Ejemplos de direccionamiento Base +Indice <ul><li>MOV CX, [BX+DI] </li></ul><ul><li>MOV CH, [BP+SI] </li></ul><ul><li>MOV [BX+SI], SP </li></ul><ul><li>MOV [BP+DI], AH </li></ul><ul><li>MOV CL, [EDX+EDI] </li></ul><ul><li>MOV [EAX+EBX], ECX </li></ul>
  22. 22. Ejemplos de direccionamiento Base +Indice <ul><li>Este direccionamiento se usa para accesar los elementos de un arreglo de datos en memoria. Veamos la siguiente secuencia de instrucciones en lenguaje ensamblador. ARREGLO DB 16 DUP(?) ;arreglo de 32 bytes en memoria </li></ul><ul><li>MOV BX, OFFSET ARREGLO </li></ul><ul><li>MOV DI, 10H </li></ul><ul><li>MOV AL, [BX+DI] </li></ul><ul><li>MOV DI, 2OH </li></ul><ul><li>MOV [BX+DI], AL Asuma que el dato en la localidad 10H en ARREGLO es 29H. </li></ul>
  23. 23. Ejemplos de direccionamiento relativo por Registro <ul><li>MOV AX, [DI+100H] </li></ul><ul><li>MOV ARREGLO [SI], BL </li></ul><ul><li>MOV LISTA [SI+2], CL </li></ul><ul><li>MOV DI, TABLA [BX] </li></ul><ul><li>MOV DI,[EAX+10H] </li></ul><ul><li>MOV TABLA1 [EBX], EAX ; A continuación tenemos un ejemplo del uso del direccionamiento relativo por registro </li></ul><ul><li>MOV DI, 10H </li></ul><ul><li>MOV AL, ARREGLO [DI] </li></ul><ul><li>MOV DI, 20H </li></ul><ul><li>MOV ARREGLO [DI], AL </li></ul>
  24. 24. EJERCICIO 1 <ul><li>Asuma que DS=1512H. Encontrar la direccion fisica y su contenido de la localidad de memoria despues de ejecutar: MOV AL,99H MOV [3518],AL </li></ul>
  25. 25. EJERCICIO 2 <ul><li>Asuma que DS=1120H, SI=2498H, y AX=17FEH. Muestre graficamente el contenido de las localidades de memoria despues de ejecutar: MOV [SI],AX </li></ul>
  26. 26. EJERCICIO 3 <ul><li>Asuma que DS=4500, SS=2000, BX=2100, SI=1486, DI=8500, BP=7814, y AX=2512. Muestre las direcciones f í sicas donde se almacena el contenido de AX en cada uno de los casos siguientes: </li></ul><ul><li>MOV [BX]+20,AX </li></ul><ul><li>MOV [SI]+10,AX </li></ul><ul><li>MOV [DI]+4,AX </li></ul><ul><li>MOV [BP]+12,AX </li></ul><ul><li>NOTA: Todos los valores son hexadecimales. </li></ul>
  27. 27. EJERCICIO 4 <ul><li>De las instrucciones siguientes cuantas no codifican en lenguaje ensamblador, d é la raz ó n por qu é NO. </li></ul><ul><li>MOV AX,27 </li></ul><ul><li>MOV AL,97F </li></ul><ul><li>MOV DS,9BF2 </li></ul><ul><li>MOV CX,397 </li></ul><ul><li>MOV SI,9516 </li></ul><ul><li>MOV CS,3490 </li></ul><ul><li>MOV DS,BX </li></ul><ul><li>MOV BX,CS </li></ul><ul><li>MOV CS,BX </li></ul><ul><li>MOV CS,BH </li></ul><ul><li>MOV AX,12345 </li></ul><ul><li>MOV CS,DS </li></ul>
  28. 28. Ejemplos de instrucciones con direccionamiento relativo base+ í ndice <ul><li>MOV DH, [BX+DI+20H] </li></ul><ul><li>MOV AX, ARCHIVO [BX+DI] </li></ul><ul><li>MOV LISTA [BP+DI], CL </li></ul><ul><li>MOV LISTA1 [BP+SI+4], DH </li></ul><ul><li>MOV EAX, ARCHIVO1 [EBX+ECX+] ; Considere el siguiente segmento de programa. Asuma que un archivo de muchos arreglos de datos existe en memoria, y que cada arreglo contiene muchos elementos. </li></ul><ul><li>MOV BX, OFFSET ARREGLOA </li></ul><ul><li>MOV DI, 0 </li></ul><ul><li>MOV AL, ARCHIVO [BX+DI] </li></ul><ul><li>MOV BX, OFFSET ARREGLOC </li></ul><ul><li>MOV DI,2 </li></ul><ul><li>MOV ARCHIVO [BX+DI], AL </li></ul>
  29. 29. Ejemplos de direccionamiento í ndice escalado <ul><li>MOV EAX, [EBX+4*ECX] </li></ul><ul><li>MOV [EAX+2*EBX], CX </li></ul><ul><li>MOV AX, [EBP+2*EDI+100H] </li></ul><ul><li>MOV LISTA [EAX+2*EBX+10H],DX </li></ul><ul><li>Considere el ejemplo siguiente: MOV EBX, OFFSET LISTA MOV ECX, 2 MOV AX,[EBX+2*ECX] MOV ECX,4 MOV [EBX+2*ECX], AX MOV ECX,7 MOV [EBX+2*ECX], AX </li></ul><ul><li>Nota: LISTA es una variable tipo doble palabra. </li></ul>

×