guia 3 - elementos virtuales y modos de direccionamiento en emu8086_p

8
Profesor: Ing. Wilson Javier Pérez H - Primer Semestre de 2015 UNIVERSIDAD PEDAGÓGICA Y TECNOLÓGICA DE COLOMBIA FACULTAD SEDE SOGAMOSO ESCUELA DE INGENIERÍA ELECTRÓNICA LABORATORIO DE MICROPROCESADORES PRÁCTICA Nº 3 ELEMENTOS VIRTUALES Y MODOS DE DIRECCIONAMIENTO EN EMU8086 I. OBJETIVOS Conocer algunos de los entornos virtuales para el desarrollo de aplicaciones del emulador Emu8086. Identificar las características de funcionamiento de las instrucciones de direccionamiento para Intel x86. Realizar varios programas en ensamblador aplicando los modos de direccionamiento a entornos virtuales en Emu80806. II. INTRODUCCIÓN El campo de operación de una instrucción especifica la operación a llevar a cabo. Esta debe ser ejecutada sobre registros del sistema o direcciones de memoria, es decir, sobre los operandos. El modo de direccionamiento especifica la forma de interpretar la información contenida en cada campo de la instrucción, y en base a esta, establecer la ubicación real del operando. Los diferentes tipos de direccionamiento de datos permiten dar versatilidad de programación al usuario, proporcionando facilidades tales como el manejo de vectores o matrices multidimensionales. El procesador 8086 tiene 4 modos de direccionamiento o reglas principales para localizar un operando de una instrucción. 1) Direccionamiento por registro (los operandos son registros del procesador). Ejm: MOV AX, BX. 2) Direccionamiento inmediato (el operando es un número que se encuentra en la misma instrucción). Ejm: MOV AX, 54. 3) Direccionamiento Directo. En este modo de direccionamiento se especifica de manera explícita la dirección de uno de los operados en memoria. Ejm: MOV AX, [1000h]. 4) Direccionamiento Indirecto. En este modo de direccionamiento, la dirección de memoria de uno de los operandos viene determinada por el contenido de uno o más registros del sistema. Ejm: MOV AX,[BX]. Tenga presente que los modos de direccionamiento mencionados hacen referencia a datos ubicados en los segmentos de datos (DS) o extra (ES), por lo que, en modo real, las direcciones de los operandos se obtienen al sumar, el valor del segmento respectivo (DS o ES) al valor del desplazamiento particular para cada caso. Por ejemplo, para el caso del modo de direccionamiento directo, si asumimos DS=2A30h, al ejecutar la instrucción MOV AX,[1000h], la dirección del operando fuente será 2A30h*10h + 1000h = 2B300h. En los modos de direccionamiento indirecto, la dirección base se almacena en el registro base (BX o BP). El índice se almacena en el registro índice (SI o DI). Cualquiera de estas dos cantidades, la suma de las dos o ninguna, pueden utilizarse para calcular la dirección real, pero no pueden sumarse dos bases o dos índices como se muestra a continuación. BX+SI BX+BP BX+DI BP+SI BP+BX BP+DI Los registros restantes (AX, CX, DX y SP) no pueden utilizarse para direccionamiento indirecto.

Upload: jeisson-octavio-bravo-neira

Post on 30-Sep-2015

25 views

Category:

Documents


3 download

DESCRIPTION

Laboratorio basico manejo elementos virtuales emu8086

TRANSCRIPT

  • Profesor: Ing. Wilson Javier Prez H - Primer Semestre de 2015

    UNIVERSIDAD PEDAGGICA Y TECNOLGICA DE COLOMBIA FACULTAD SEDE SOGAMOSO

    ESCUELA DE INGENIERA ELECTRNICA LABORATORIO DE MICROPROCESADORES

    PRCTICA N 3

    ELEMENTOS VIRTUALES Y MODOS DE DIRECCIONAMIENTO EN EMU8086

    I. OBJETIVOS

    Conocer algunos de los entornos virtuales para el desarrollo de aplicaciones del emulador Emu8086.

    Identificar las caractersticas de funcionamiento de las instrucciones de direccionamiento para Intel x86.

    Realizar varios programas en ensamblador aplicando los modos de direccionamiento a entornos virtuales en Emu80806.

    II. INTRODUCCIN

    El campo de operacin de una instruccin especifica la operacin a llevar a cabo. Esta debe ser ejecutada sobre registros del sistema o direcciones de memoria, es decir, sobre los operandos. El modo de direccionamiento especifica la forma de interpretar la informacin contenida en cada campo de la instruccin, y en base a esta, establecer la ubicacin real del operando.

    Los diferentes tipos de direccionamiento de datos permiten dar versatilidad de programacin al usuario, proporcionando facilidades tales como el manejo de vectores o matrices multidimensionales.

    El procesador 8086 tiene 4 modos de direccionamiento o reglas principales para localizar un operando de una instruccin.

    1) Direccionamiento por registro (los operandos son registros del procesador). Ejm: MOV AX, BX.

    2) Direccionamiento inmediato (el operando es un nmero que se encuentra en la misma instruccin). Ejm: MOV AX, 54.

    3) Direccionamiento Directo. En este modo de direccionamiento se especifica de manera explcita la direccin de uno de los operados en memoria. Ejm: MOV AX, [1000h].

    4) Direccionamiento Indirecto. En este modo de direccionamiento, la direccin de memoria de uno de los operandos viene determinada por el contenido de uno o ms registros del sistema. Ejm: MOV AX,[BX].

    Tenga presente que los modos de direccionamiento mencionados hacen referencia a datos ubicados en los segmentos de datos (DS) o extra (ES), por lo que, en modo real, las direcciones de los operandos se obtienen al sumar, el valor del segmento respectivo (DS o ES) al valor del desplazamiento particular para cada caso. Por ejemplo, para el caso del modo de direccionamiento directo, si asumimos DS=2A30h, al ejecutar la instruccin MOV AX,[1000h], la direccin del operando fuente ser 2A30h*10h + 1000h = 2B300h.

    En los modos de direccionamiento indirecto, la direccin base se almacena en el registro base (BX o BP). El ndice se almacena en el registro ndice (SI o DI). Cualquiera de estas dos cantidades, la suma de las dos o ninguna, pueden utilizarse para calcular la direccin real, pero no pueden sumarse dos bases o dos ndices como se muestra a continuacin.

    BX+SI BX+BP BX+DI

    BP+SI BP+BX BP+DI

    Los registros restantes (AX, CX, DX y SP) no pueden utilizarse para direccionamiento indirecto.

  • Profesor: Ing. Wilson Javier Prez H - Primer Semestre de 2015

    UNIVERSIDAD PEDAGGICA Y TECNOLGICA DE COLOMBIA FACULTAD SEDE SOGAMOSO

    ESCUELA DE INGENIERA ELECTRNICA LABORATORIO DE MICROPROCESADORES

    Adems del segmento, base e ndice, se usa un desplazamiento de 16 bits, 8 bits o 0 bits (sin desplazamiento). sta es una cantidad esttica que se fija durante el ensamblado.

    Todo esto genera los modos de direccionamiento a memoria que se ven a continuacin:

    Directo: - [desp16]. Ejemplo: MOV AX, [2000h] Indirecto: - [BX] Ejemplo: MOV AX, [BX] - [DI] - [SI]. Basado: - [BX+desp8] Ejemplo: MOV AX, [BX+30h] - [BP+desp8] - [BX+desp16] - [BP+desp16]. Indexado: - [SI+desp8] - [DI+desp8] - [SI+desp16] Ejemplo: MOV AX, [SI+4000h] - [DI+desp16]. Basado-indexado: - [BX+SI] - [BX+DI] Ejemplo: MOV AX, [BX+DI] - [BP+SI] - [BP+DI]. Basado-indexado con desplazamiento: - [BX+SI+desp8] Ejemplo: MOV AX, [BX+SI+60h] - [BX+DI+desp8] - [BP+SI+desp8] - [BP+DI+desp8] - [BX+SI+desp16] - [BX+DI+desp16] - [BP+SI+desp16] Ejemplo: MOV AX, [BP+SI+7000h] - [BP+DI+desp16]

    III. ELEMENTOS Y EQUIPOS NECESARIOS

    Software Emu8086

    Computador Personal

    IV. DESCRIPCIN DEL LABORATORIO

    En esta gua se presentan algunos programas bsicos usando modos de direccionamiento para ser compilados y simulados en el emulador Emu8086. Posteriormente, se deben modificar los programas incluyendo en cada uno, el manejo de al menos cuatro (4) modos de direccionamiento diferentes.

    a) Uso de elementos virtuales

    En este primer ejemplo se hace uso de un elemento virtual disponible en el emulador Emu8006 que permite visualizar un cruce de vas con cuatro semforos. Modifique el programa mostrado en el anexo 1 para que la secuencia de activacin de los semforos se haga (a) en el sentido de las manecillas del reloj, (b) en el sentido contrario de las manecillas del reloj, y (c) en el sentido de las manecillas del reloj y empleando tiempos diferentes para cada semforo usando en este caso el direccionamiento indirecto base ms ndice.

    Modifique el programa mostrado en el anexo ejemplo2.asm para que la secuencia de activacin del motor paso se haga (a) en el sentido de las manecillas del reloj en secuencia de medios pasos dando 50 pasos, y a continuacin (b) en el sentido contrario de las manecillas del reloj en secuencia de pasos completos dando 20 pasos, y luego (c) en el sentido de las manecillas del reloj en secuencia de pasos completos dando 30 pasos, finalizando (d) en el sentido contrario de las manecillas del reloj en secuencia de medios pasos dando 10 pasos y se detiene.

    b) Interrupcin de pantalla Int 10h.

    Para hacer uso de la pantalla, se pueden emplear deferentes interrupciones tales como Int 21h y la Int 10h. Mediante la Int 10h se puede acceder a la visualizacin en modo grfico y modo texto. Para configurar el modo grfico en 16

  • Profesor: Ing. Wilson Javier Prez H - Primer Semestre de 2015

    UNIVERSIDAD PEDAGGICA Y TECNOLGICA DE COLOMBIA FACULTAD SEDE SOGAMOSO

    ESCUELA DE INGENIERA ELECTRNICA LABORATORIO DE MICROPROCESADORES

    colores se debe establecer el registro AX en los siguientes valores:

    mov al, 13h mov ah, 0

    int 10h

    Una vez ejecutado el cdigo anterior, se puede acceder a cada pixel de la pantalla haciendo uso de los registros CX y DX, teniendo presente que la coordenada 0,0 de la pantalla se encuentra ubicada en la esquina superior izquierda, ver Figura 1.

    Figura 1. Pixeles de la pantalla en modo grfico.

    Se pueden realizar diferentes cambios en los parmetros de visualizacin en pantalla tales como la resolucin de la pantalla en modo texto y modo grfico, el color y posicin tanto de los pixeles como de los caracteres a desplegar, la forma y posicin del cursor, entre otras. Por ejemplo, el siguiente cdigo muestra los valores del registro AX necesarios para cambiar el color de un pixel mediante el uso de la INT 10h:

    mov al, color mov ah, 0ch int 10h

    Donde color corresponde al atributo binario en nibbles de color del pixel a cambiar. En la Tabla 1 se presentan los atributos de color de pixel.

    Para informacin detallada de cada una de las interrupciones, ingrese a la documentacin y tutoriales disponible en el emulador Emu8086 dando click en el botn help del men de herramientas.

    Tabla 1. Atributos de color de pxel

    HEX BIN COLOR

    0 0000 black 1 0001 blue

    2 0010 green

    3 0011 cyan 4 0100 red

    5 0101 magenta

    6 0110 brown 7 0111 light gray

    8 1000 dark gray

    9 1001 light blue A 1010 light green

    B 1011 light cyan

    C 1100 light red D 1101 light magenta

    E 1110 yellow

    F 1111 white

    Con la informacin anteriormente presentada, se plantea un ejercicio de despliegue de imgenes almacenadas en memoria sobre la pantalla, mediante el manejo de cadenas, con los diferentes modos de direccionamiento.

    1. Escriba un programa que permita representar en pantalla, la imagen binaria 16x19 con los datos presentados en el Anexo 3 mediante los modos de direccionamiento directo e indirecto. Recomendacin: use las instrucciones SHL y SHR.

    2. Escriba un programa que permita mostrar en el centro de la pantalla la imagen correspondiente al cdigo presentado en el Anexo 4, empleando al menos 4 modos de direccionamiento diferentes.

    Nota: la imagen est compuesta a partir del atributo de color de cada uno de sus pixeles, es decir. Cada uno de los nibble de datos representa el color de un pixel sobre la imagen.

    Ejemplo: dw 1110_0000_0100_0001b Representa en la pantalla los cuatro piexeles:

    Las dimensiones de la imagen son de 16x17 pixeles.

    BIBLIOGRAFA

    [1] Barry B. Bray, the Intel Microprocessors, Fourth Edition, Prentice Hall.

    [2] Emu8086 Documentation. [3] intel.ia32.user manual

  • Profesor: Ing. Wilson Javier Prez H - Primer Semestre de 2015

    UNIVERSIDAD PEDAGGICA Y TECNOLGICA DE COLOMBIA FACULTAD SEDE SOGAMOSO

    ESCUELA DE INGENIERA ELECTRNICA LABORATORIO DE MICROPROCESADORES

    ANEXOS Anexo 1 (ELEMENTO VIRTUAL SEMAFORO)

    #start=Traffic_Lights.exe# name "traffic" .model small .data ;FEDC_BA98_7654_3210 situation dw 0000_0011_0000_1100b s1 dw 0000_0110_1001_1010b s2 dw 0000_1000_0110_0001b s3 dw 0000_0100_1001_0010b s4 dw 0000_0100_1101_0011b s5 dw 0000_1001_0010_0100b sit_end = $ all_red equ 0000_0010_0100_1001b .code INICIO: mov ax,@DATA mov ds,ax mov ax, all_red out 4, ax mov si, offset situation next: mov ax, [si] out 4, ax ; wait 5 seconds (5 million microseconds) mov cx, 00h ;4Ch ; 004C4B40h = 5,000,000 mov dx, 0001h ;4B40h mov ah, 86h int 15h add si, 2 cmp si, sit_end jb next mov si, offset situation jmp next end INICIO

    Anexo 2 (MOTOR PASO)

    #start=stepper_motor.exe# name "stepper" #make_bin# steps_before_direction_change = 02h ;Valor de limite de conteo de pasos antes de cambiar de direccion jmp start ; ========= data =============== ; bin data for clock-wise

  • Profesor: Ing. Wilson Javier Prez H - Primer Semestre de 2015

    UNIVERSIDAD PEDAGGICA Y TECNOLGICA DE COLOMBIA FACULTAD SEDE SOGAMOSO

    ESCUELA DE INGENIERA ELECTRNICA LABORATORIO DE MICROPROCESADORES

    ; half-step rotation: datcw db 0000_0110b db 0000_0100b db 0000_0011b db 0000_0010b ; bin data for counter-clock-wise ; half-step rotation: datccw db 0000_0011b db 0000_0001b db 0000_0110b db 0000_0010b ; bin data for clock-wise ; full-step rotation: datcw_fs db 0000_0001b db 0000_0011b db 0000_0110b db 0000_0000b ; bin data for counter-clock-wise ; full-step rotation: datccw_fs db 0000_0100b db 0000_0110b db 0000_0011b db 0000_0000b start: mov bx, offset datcw ;Inicio de ciclo de reloj en direccion de reloj medio paso. mov si, 0 ;Reinicio de index de datos. mov cx, 0 ;Inicio de Contador de pasos. next_step: ;El motor envia un valor 70h cuando esta listo para recibir un nuevo ;dato wait: in al, 7 ;rutina de espera, entrada de datos desde puerto 7. test al, 10000000b ;probando si al es igual a 70h. Jz wait ;salta a wait si al diferente de 70h, si es al igual a 70h continua. mov al, [bx][si] ;mover el dato direccionado por [bx][si] a al out 7, al ;envio de dato a puerto 7 (motor paso). inc si ;incremento de index. cmp si, 4 ;comparacion si el index y llego al fin de datos de paso si=4. Jb next_step ;salta si SI es menor a 4. mov si, 0 ;se reinicia SI inc cx ;se incrementa CI cmp cx, steps_before_direction_change ; comparacion si CI llego a numero de pasos antes de cambiar de ;rutina de pasos. jb next_step ;salta si CX es menor al numero de pasos final. mov cx, 0 ;reinicio de CX. add bx, 4 ; next bin data ;suma a registro base BX+4 para ubicar otra rutina de ;pasos. cmp bx, offset datccw_fs ;comparacion si llego a la ultima rutina de pasos. Jbe next_step ;salta si BX no ha llegado a la ultima rutina de pasos. mov bx, offset datcw ;como BX llego a la ultima etapa se reinicia el valor del registro base. jmp next_step ;salto nuevamente a iniciar el programa.

  • Profesor: Ing. Wilson Javier Prez H - Primer Semestre de 2015

    UNIVERSIDAD PEDAGGICA Y TECNOLGICA DE COLOMBIA FACULTAD SEDE SOGAMOSO

    ESCUELA DE INGENIERA ELECTRNICA LABORATORIO DE MICROPROCESADORES

    Anexo 3 (DATOS IMAGEN BINARIA)

    ; ========= data ============== dw 0000_0000_0000_0000b ;fila 1 dw 0000_0000_1000_0000b ;fila 2 dw 0000_0001_1100_0000b dw 0000_0001_1100_0000b dw 0000_0011_1110_0000b dw 0000_0011_1110_0000b dw 0111_1111_1111_1111b dw 0111_1111_1111_1111b dw 0011_1111_1111_1110b dw 0001_1111_1111_1100b dw 0000_1111_1111_1000b dw 0001_1111_1111_1100b dw 0001_1111_1111_1100b dw 0011_1111_1111_1110b dw 0011_1111_0111_1110b dw 0111_1100_0001_1111b dw 0111_0000_0000_0111b dw 0000_0000_0000_0000b dw 0000_0000_0000_0000b ;fila 19

    Anexo 4 (DATOS ATRIBUTOS IMAGEN BINARIA)

    ; ========= data ============== dw 1111_1111_1111_1111b

    dw 1111_1111_1111_1111b

    dw 1111_1111_1111_1111b

    dw 1111_1111_1111_1111b ; fila 1.

    dw 1111_1111_1111_1111b

    dw 1111_1111_1111_1111b

    dw 0000_1111_1111_1111b

    dw 1111_1111_1111_1111b ;fila 2.

    dw 1111_1111_1111_1111b

    dw 1111_1111_1111_0000b

    dw 1110_0000_1111_1111b

    dw 1111_1111_1111_1111b ;fila3.

    dw 1111_1111_1111_1111b

    dw 1111_1111_1111_0000b

    dw 1110_0000_1111_1111b

    dw 1111_1111_1111_1111b ;fila 4.

    dw 1111_1111_1111_1111b

    dw 1111_1111_0000_1110b

    dw 1110_1110_0000_1111b

    dw 1111_1111_1111_1111b ;fila5.

  • Profesor: Ing. Wilson Javier Prez H - Primer Semestre de 2015

    UNIVERSIDAD PEDAGGICA Y TECNOLGICA DE COLOMBIA FACULTAD SEDE SOGAMOSO

    ESCUELA DE INGENIERA ELECTRNICA LABORATORIO DE MICROPROCESADORES

    dw 1111_1111_1111_1111b

    dw 1111_1111_0000_1110b

    dw 1110_1110_0000_1111b

    dw 1111_1111_1111_1111b

    dw 1111_0000_0000_0000b

    dw 0000_0000_1110_1110b

    dw 1110_1110_1110_0000b

    dw 0000_0000_0000_0000b

    dw 1111_0000_1110_1110b

    dw 1110_1110_1110_0000b

    dw 1110_0000_1110_1110b

    dw 1110_1110_1110_0000b

    dw 1111_1111_0000_1110b

    dw 1110_1110_1110_0000b

    dw 1110_0000_1110_1110b

    dw 1110_1110_0000_1111b

    dw 1111_1111_1111_0000b

    dw 1110_1110_1110_0000b

    dw 1110_0000_1110_1110b

    dw 1110_0000_1111_1111b

    dw 1111_1111_1111_1111b

    dw 0000_1110_1110_1110b

    dw 1110_1110_1110_1110b

    dw 0000_1111_1111_1111b

    dw 1111_1111_1111_0000b

    dw 1110_1110_1110_1110b

    dw 1110_1110_1110_1110b

    dw 1110_0000_1111_1111b

    dw 1111_1111_1111_0000b

    dw 1110_1110_1110_1110b

    dw 1110_1110_1110_1110b

    dw 1110_0000_1111_1111b

    dw 1111_1111_0000_1110b

    dw 1110_1110_1110_1110b

    dw 0000_1110_1110_1110b

    dw 1110_1110_1111_1111b

    dw 1111_1111_0000_1110b

    dw 1110_1110_1110_0000b

    dw 1111_0000_1110_1110b

    dw 1110_1110_0000_1111b

    dw 1111_0000_1110_1110b

    dw 1110_0000_1111_1111b

    dw 1111_1111_1111_0000b

  • Profesor: Ing. Wilson Javier Prez H - Primer Semestre de 2015

    UNIVERSIDAD PEDAGGICA Y TECNOLGICA DE COLOMBIA FACULTAD SEDE SOGAMOSO

    ESCUELA DE INGENIERA ELECTRNICA LABORATORIO DE MICROPROCESADORES

    dw 1110_1110_1110_0000b

    dw 1111_0000_1110_0000b

    dw 1111_1111_1111_1111b

    dw 1111_1111_1111_1111b

    dw 1111_0000_1110_0000b ;fila 17.