Está en la página 1de 10

Arquitectura de Maquinas

Laboratorio I

Samuel Jos Gutirrez Avils

4T2 - Co
25/05/2011

1
INTRODUCCIN
El Intel 8086 son los primeros microprocesadores de 16 bits diseados por Intel. Fueron el inicio y los primeros miembros de la arquitectura x86, actualmente usada en la mayora de los computadores. El 8086 ejecuta un conjunto de instrucciones:

Grupo de Instrucciones:
Transferencia de Datos: Movimiento de datos entre registros y/o memoria. Aritmticas: Operaciones aritmticas entre enteras. Manipulacin de bits: Operaciones lgicas. Cadenas: Movimientos, bsqueda y comparacin de cadenas de datos. Transferencia de programas: saltos llamadas Control del Procesador: Deteccin, depuracin, IRQs, Las instrucciones de manipulas los registro y la memoria, pero principalmente el uso de registros y la manipulacin de banderas con un set de instrucciones muy basto para un microprocesador de 16 bit.

Grupo de Registros
Registros de Propsito General. Registros ndice. Registros Apuntadores. Registros de Banderas. Registros de Segmento. Registro Apuntador de Instrucciones. El lenguaje ensamblador es el sistema alfanumrico para escribir cdigo maquina mediante expresiones abreviadas (mnemotcnicos). Cada ordenador tiene su propio tiene su propio lenguaje ensamblador, exclusivo de su CPU. Es usado principalmente porque hay aplicaciones o programas que deben tratar directamente con los registros de la mquina, la memoria, dispositivos de E/S, etc.

2
OBJETIVOS
Examinar detenidamente la manera en que se ejecutan algunas instrucciones lgicas. Analizar la manera en que se modifica el registro de banderas, dependiendo del tipo de operacin y de los datos que operen. Identificar las caractersticas propias de las mscaras que se utilizan junto con las instrucciones lgicas.

PROCEDIMIENTOS
PRIMER PROGRAMA
.model small .stack .data dato1 dato2 mascara1 mascara2 .code MOV MOV MOV MOV AND MOV MOV AND AND MOV INT END AX,@data DS,AX DL,dato1 AH,mascara1 DL,AH CX,dato2 BX,mascara2 CX,BX CX,CX AX,4C00H 21H db dw db dw 9AH 2CC2H 0F0H 0FF0H

; Dato 8 bits ; Dato 16 bits ; Mascara 8 bits ; Mascara 16 bits

;primera parte

;segunda parte

;fin del programa

3
1. Compile y ejecute el programa paso a paso, monitoreando el registro de banderas (FLAGS) luego de cada operacin AND. Anote los datos con los que se opera, los resultados y las banderas que se activan. FLAGS Valores Originales AND AX,AH AND CX,BX AND CX,CX CF 0 0 0 0 ZF 0 0 0 0 SF 0 1 0 0 OF 0 0 0 0 PF 0 1 1 1 AF 0 0 0 0 IF 1 1 1 1 DF 0 0 0 0

2. Qu objetivos se buscan al usar la mascara1 (F0H) con las tres diferentes instrucciones lgicas? Porque sirve de complemento comparando los valores de los nmeros con los valores ms altos y bajos que se pueden tener. 3. Cuando se ejecuta la primera instruccin AND el bit 7 del resultado termina en estado alto y se activa la bandera S, en la segunda instruccin AND tambin termina en alto, pero esta vez no se activa la bandera. Por qu? No se activa porque el bit ms significativo no es el bit 7 sino el bit 14 y este bit no es un uno sino un cero y que el bit ms significativo sea un cero quiere decir que es un nmero positivo y el registro de bandera SF solo se activa cuando el resultado de la comparacin u operacin es negativo. 4. Modifique las lneas de cdigo que contiene la instruccin AND, sustituyndola por la instruccin OR y anote los datos con los que opera, los resultados y las banderas que se activan. Los datos son el dato1 y 2 y la mascara1 y 2: Dato1=9AH Dato2=2CC2H Mascara1=F0H Msacara2=0FF0H OR 2CC2H,0FF0H -> 2FF2 OR F0H,9AH -> FA

4
FLAGS CF ZF SF OF PF AF IF DF Valores Originales 0 0 0 0 0 0 1 0 OR AX,AH 0 0 1 0 1 0 1 0 OR CX,BX 0 0 0 0 0 0 1 0 OR CX,CX 0 0 0 0 0 0 1 0

5. Modifique las lneas de cdigo que contiene la instruccin AND, sustituyndola por la instruccin XOR y anote los datos con los que opera, los resultados y las banderas que se activan. Los datos son el dato1 y 2 y la mascara1 y 2: Dato1=9AH Dato2=2CC2H Mascara1=F0H Msacara2=0FF0H XOR 2CC2H,0FF0H -> 2332H XOR F0H,9AH -> 6AH

FLAGS CF ZF SF OF PF AF IF DF

Valores Originales 0 0 0 0 0 0 1 0

OR AX,AH 0 0 0 0 1 0 1 0

OR CX,BX 0 0 0 0 0 0 1 0

OR CX,CX 0 1 0 0 1 0 1 0

6. En el programa se declaran datos para hacer las operaciones Dnde se guardan los datos? Los datos se guardan en los registro de propsito general (DL y CX) ese es su propsito ser usados para toda clase de instruccions.

5
SEGUNDO PROGRAMA
.model small .stack .data .code MOV MOV MOV MOV XOR XOR AX,@data DS,AX DL,1AH AX,2CC2H DL,AH DL,0FFH

; -----primera bloque-----

; -----fin del primer bloque---; -----segunda parte----MOV MOV XOR NOT DL,1AH AX,2CC2H DL,AH DL

; -----fin del segundo bloque---MOV AX,4C00H ;fin del programa


INT END 21H

1. Ejecute paso a paso, anote los datos con los que se realizan las operaciones los resultados de las mismas, los registros que intervienen en el proceso y los estados de las banderas en cada paso del proceso. Los datos son el dato1 y 2 y la mascara1 y 2: PRIMER BLOQUE DL=1AH AX=2CC2H XOR XOR DL,AH DL,FFH -> -> 36H C9H

SEGUNDO BLOQUE DL=1AH AX=2CC2H XOR NOT DL,AH DL -> -> C9H 36H

6
FLAGS CF ZF SF OF PF AF IF DF Valores Originales 0 0 0 0 0 0 1 0 Primer Bloque XOR DL,AH XOR DL,FFH 0 0 0 0 0 1 0 0 1 1 0 0 1 1 0 0 Segundo Bloque XOR DL,AH NOT DL 0 0 0 1 0 0 0 0 1 1 0 0 1 1 0 0

2. Como se ha visto en los programas anteriores, algunas de las banderas se activan del resultado de una instruccin. Pero tambin algunas banderas se pueden activar o desactivar mediante instrucciones especficas, sin tomas en cuenta el resultado de alguna operacin. Como un ejemplo inserte la siguiente modificacin en el SEGUNDO PROGRAMA. Ejecute paso a paso el programa monitoreando simultneamente el estado de las banderas, note como se activan o desactivan.
.model small .stack .data .code MOV MOV MOV MOV XOR XOR STC STD CLI AX,@data DS,AX DL,1AH AX,2CC2H DL,AH DL,0FFH

; -----primera bloque-----

; Activa la bandera C ; Activa la bandera D ; Desactiva la bandera I

; -----fin del primer bloque---; ----inicio del segundo bloque---MOV MOV CLC CLD STI XOR DL,AH DL,1AH AX,2CC2H

; Desactiva la bandera C ; Desactiva la bandera D ; Activa la bandera I

7
NOT DL

; -----fin del segundo bloque---MOV AX,4C00H ; fin del programa


INT END 21H

FLAGS CF ZF SF OF PF AF IF DF

Valores Originales 0 0 0 0 0 0 1 0

STC 1 0 0 0 0 0 1 0

STD 1 0 0 0 0 0 1 1

CLI 1 0 0 0 0 0 0 1

CLC 0 0 0 0 0 0 0 1

CLD 0 0 0 0 0 0 0 0

STI 0 0 0 0 0 0 1 0

3. Cuando se ejecuta el primer bloque del programa el resultado se almacena en DL, los mismo ocurre con el segundo bloque; los dos resultados son idnticos, pero el resultado de las banderas no lo es. Por qu? Por qu la segunda instruccin XOR del primer bloque es la que activa la bandera SF porque inicia una instruccin de comparacin que genera un resultado negativo mientras que en el segundo bloque es sustituida por una instruccin NOT que no realiza una comparacin por tanto no se las banderas no se ponen en alto las mismas. 4. Al modificar el programa, tanto los resultados como las banderas terminaron en distintos estados. Cules fueron los cambios especficos que observo? Los cambios especficos que se observaron fueron la puesta en alto de banderas especficas que y luego la puesta en bajo de las mismas por instrucciones concretas y no por instrucciones de operacin o comparacin.

8
TERCER PROGRAMA

.model small .stack .data .code MOV MOV MOV AND AX,@data DS,AX AH,0B9H AH,40H

; en binario 1011_1001 ; mascara 0100_0000 ; si z=1 implica que D6=0 ; borra las banderas activas

OR MOV TEST MOV INT END

AH,01 AH,40H AH,40H AX, 4C00H 21H

; fin del programa

1. Ejecute paso a paso, monitoreando las banderas. Cules se activaron? Cul fue el resultado de la operacin? Cmo interpreta el resultado? Los datos son almacenados en AH por medio de instrucciones MOV: AH=0B9H AH=00H AH=0B9H AND OR AH,40H AH,01 -> -> -> 36H 01H B9H

TEST AH,40H

9
FLAGS CF ZF SF OF PF AF IF DF Valores Originales 0 0 0 0 0 0 1 0
AND AH,40H OR AH,01 TEST AH,40H

0 1 0 0 1 0 1 0

0 0 0 0 0 0 1 0

0 1 0 0 1 0 1 0

2. Cul es la diferencia fundamental que noto a comparar las instrucciones AND y TEST? La diferencia ms grande es que la instruccin TEST no guarda el resultado en el registro destino sino que solo afecta a los registros de bandera, mientras que la instruccin AND si guarda el resultado en el registro destino y afecta a los registros de bandera. 3. Qu relacin existe entre los bits que deseamos probar y el valor especifico de la mscara seleccionada? La relacin entre ellos es que segn la mscara que seleccionemos se podr ejecutar la prueba de bits ya que la seleccin de la mscara adecuada es la que junto la instruccin nos permite modificar los registros que deseamos. Si la mscara no es la adecuada con la instruccin adecuada no afectamos a los registro como queremos y la prueba no es satisfactoria. Esto se ve claro en la instruccin AND de este programa sin mascara 40H no se hubiera logado desactivar todas las banderas en la instruccin OR y no se probaran los bits de efecto prctico en el trabajo.

También podría gustarte