Instrucciones de Control de Flujo y Usos de la Pila

Documentos relacionados
Conceptos de Arquitectura de Computadoras Curso 2015

TAREA 1 ARITMETICA PARA BCD Y ASCII.

INSTRUCCIONES ARITMÉTICAS.

Instrucción De Salto Incondicional

Ensamblador. Introducción. Dpto. Física y Arquitectura de Computadores. Universidad Miguel Hernandez

Arquitectura (Procesador familia 80 x 86 )

Resumen de las instrucciones del 8086/8088

EL EMU8086 Y EL MICROPROCESADOR 8086.

Arquitectura intel Preámbulo de OSO para alumnos formados en el procesador MIPS. Asignatura Sistemas Operativos Murcia abril de 2005

Nombre del módulo: Instalación de Sistemas Microprocesados. Guía sobre Programación en Ensamblador usando Emulador (emu8086)

Tema 5: La pila, las macros y los procedimientos

Comparaciones en lenguaje ensamblador

Tema: USO DE MEMORIAS RAM Y ROM

3 - Arquitectura interna de un up

8.4. El software en los μprocesadores

Java Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación.

Tema 4. Lenguaje máquina y lenguaje ensamblador

El Diseño de un Lenguaje Máquina

Objetivo. Introducción. Tema: GENERACION DE CODIGO. Compiladores, Guía 11 1

Relación de Problemas I

Pregunta correcta= 0,3 Pregunta no contestada= 0 Pregunta incorrecta (tipo test)= -0,15

Trabajo Práctico Nro 3: Assembler

Tema 3 SUBRUTINAS. Estructura de Computadores OCW_2015 Nekane Azkona Estefanía

Arquitectura de Computadores II 8086 Parte II

Práctica 2. Registros y posiciones de memoria

6-REGISTROS DEL 8086 Y DEL 80286

Intel Arquitectura. Programación en Ensamblador Ing. Marcelo Tosini

REFERENCIA DEL LENGUAJE

Ingeniería en Sistemas. Sistemas Operativos. Trabajo Práctico: Repaso de Interrupciones, direccionamiento de memoria y registros del procesador.

LENGUAJE ENSAMBLADOR PRÁCTICA 16 PRÁCTICA 16

Manual de Programación X86 sobre plataforma FPGA.

Introducción a la Programación en Lenguaje Ensamblador.

Funcionamiento de la Pila (o stack)

LENGUAJE ENSAMBLADOR PRÁCTICA 11 PRÁCTICA 11 CUATRO OPERACIONES FUNDAMENTALES EN NÚMEROS DE 8 BYTES

SISTEMAS OPERATIVOS Arquitectura de computadores

SISTEMAS BASADOS EN MICROPROCESADOR 2º Grado Ingeniería Informática (EPS UAM) EXAMEN FINAL EXTRAORDINARIO JULIO 2013 ENUNCIADO DEL PROBLEMA

Tema 5.1: Presentación de datos en pantalla

Estructuras Repetitivas

Intel 8086 modelo básico (primera parte) Registros:

Fig. 1: Tipos de datos que puede manejar el procesador

Introducción a la Computación. Capítulo 10 Repertorio de instrucciones: Características y Funciones

Práctica 4. Organización del Computador 1 12 de septiembre de Algunas consideraciones preliminares:

Tema 4: Lenguaje máquina - Lenguaje ensamblador

ENSAMBLADOR DE ARCHIVO TASM MASM NASM GAS. Características de un Ensamblador de Archivo

1.2.- EL MICROPROCESADOR.

Sistemas. POSTREQUISITO: CATEGORÍA: Obligatorio SECCION: A HORAS POR SEMANA

DES: Programa(s) Educativo(s): Tipo de materia: Clave de la materia: Semestre: Área en plan de estudios:

62/8&,21(6$/(;$0(1'( /$%25$725,2'((6758&785$6'(/26&20387$'25(6 &8562)(%5(52

Distinguir las diferentes estructuras de repetición utilizadas en problemas con bucles: mientras, repetir mientras, para.

Construyendo Programas más Complejos

ESTRUCTURA DE COMPUTADORES I (Capítulo 14: DIRECTIVAS) 1/32 14-DIRECTIVAS

Tema 5. Presentación de datos por pantalla

la solución a una ecuación cuadrática solicitando al usuario los términos de dicha ecuación.

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria

Práctica 1. Introducción a la programación en ensamblador

Tema 2. Presentación de datos por pantalla. La ROM-BIOS

Contenido. Conjunto de Instrucciones. Formato de la Instrucción. Instrucciones de 1 byte. Formato de la Instrucción 28/09/2011

SISTEMAS BASADOS EN MICROPROCESADORES

Estructura de Microprocesadores. Profesor Ing. Johan Carvajal Godínez

GENERALIDADES DEL LENGUAJE C

SISTEMAS BASADOS EN MICROPROCESADORES

(1) Unidad 1. Sistemas Digitales Basados en Microprocesador SISTEMAS BASADOS EN MICROPROCESADORES. Grado en Ingeniería Informática EPS - UAM

Ejemplo del uso de las subrutinas

Tema: Entorno a C# y Estructuras Secuenciales.

Diseño Estructurado de Algoritmos

El microprocesador de 16 bits 8086

Guía práctica de estudio 06: Lenguaje binario

SISTEMAS BASADOS EN MICROPROCESADORES

Examen de Arquitectura de Computadores 2 22 de febrero del 2011

ARQUITECTURA DE COMPUTADORAS II. Propósito del curso : Ingeniería Ingeniería en Sistemas. Hardware. Clave de la materia: 413

Práctica 3: El teclado del PC

Ejercicios de Arquitectura de Computadoras

Digital II. Conceptos básicos sobre la programación en Assembler. Departamento de Sistemas e Informática. Silvina Ferradal. Escuela de Electrónica

PHP: Lenguaje de programación

Aprendiendo Sistemas Operativos: Programación de Procesadores de Arquitectura IA-32

Ciclos de máquina. Otro ejemplo: decremento de un registro par (donde rp = HL, DE, BC, SP) DCX rp

Arquitectura de Computadores II Clase #3

Tema 4. Lenguaje máquina y lenguaje ensamblador

Entorno de Ejecución del Procesador Intel Pentium

LENGUAJE ENSAMBLADOR DEL MICROPROCESADOR

ESTRUCTURA DE COMPUTADORES I (Capítulo 16:El Teclado) 1/5 16-EL TECLADO

GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos.

PROGRAMA ANALÍTICO DE ASIGNATURA

Programación I. Carrera: ECM Participantes Participantes de las academias de ingeniería electrónica de los Institutos Tecnológicos.

Sobre cómo dividir un programa ensamblador x86 (modo Real) en módulos compilables por separado.

Fecha de Introducción. Velocidad de reloj. Anchura del bus. Número de transistores. (microns) Memoria direccionable.

DIRECTIVAS DEL ASM86

ENTORNO DE TRABAJO PARA LA SIMULACIÓN HARDWARE DE UNA COMPUTADORA SENCILLA

ESTRUCTURA BÁSICA DE UN ORDENADOR

Tema 8 Gestión de la memoria en tiempo de ejecución.

LECCIÓN 14: DISEÑO DE COMPUTADORES MEDIANTE MICROPROGRAMACION

Parte 4: Estructuras de Control

REPERTORIO DE INSTRUCCIONES DEL MICROPROCESADOR 8086

Tema: USO DE MEMORIAS RAM Y ROM

Introducción a la programación

PRACTICA #1. Aprender a programar una interrupción software empleando C y/o Ensamblador.

1 La figura 1 muestra la estructura de la CPU de un computador con palabras y direcciones de 32 bits, cuya

Arquitectura de Computadores. Apellidos, Nombre:

PRONTUARIO I. INFORMACIÓN GENERAL

Departamento de Sistemas e Informática

Transcripción:

1 Instrucciones de Control de Flujo y Usos de la Pila Objetivos Generales Facultad: Estudios Tecnologicos. Escuela: Electrónica Asignatura: Microprocesadores Analizar la forma en que se ejecutan algunas instrucciones de flujo de control y como se relacionan con las instrucciones de comparación. Aplicar la sección de memoria llamada PILA como un contenedor temporal de información. Objetivos específicos Analizar el uso de algunas instrucciones de control de flujo, haciendo énfasis en las condiciones (estado de las banderas) que se necesitan para realizar o no el salto. Aplicar algunas instrucciones de control de flujo en la resolución de problemas simples como la realización de un lazo repetitivo y la comparación entre dos datos. Mostrar la manera de guardar y extraer información de la PILA. Usar la PILA como un dispositivo de almacenamiento temporal de datos. Analizar la relación que hay entre la PILA y el registro puntero de pila SP. Materiales y equipos Guía de laboratorio Computadora PC con el programa EMU8086 Procedimiento 1) Ejecute el programa emulador de microprocesadores EMU8086, haciendo doble clic en el icono del escritorio. 2) Cree un nuevo documento tipo COM 3) Analice el PRIMER PROGRAMA, que se le presente y ayudado del flujo-grama y los comentarios que explican su funcionamiento. ) Emule el programa. Antes de ejecutarlo copie, línea a línea, el programa desensamblado en la columna respectiva así como se muestra en el ejemplo. Cuáles son las direcciones de las etiquetas y BUCLE? 5) Localice la ubicación (direcciones) de la cadena Mem. Anote las direcciones y su contenido en la TABLA 1.

2 6) Ejecute paso a paso monitoreando los cambios que se dan en Mem. Al final anote el contenido final en TABLA 1. Momento Inicio Fin DIRECCIONES TABLA 1 7) Ejecute nuevamente el programa, contando las veces que se ejecuta la instrucción mov Mem[bx], al y monitoreando el registro de banderas, sobre todo antes y después de la operación de decremento Cuántas veces se realizó la instrucción MOV? Qué causó el rompimiento del lazo de repetición? 8) Modifique el código de manera que los cambios solo afecten a los elementos de la cadena. Cuando lo logre notifíquelo a su instructor. PRIMER PROGRAMA AL = 0FFh BX = 000Ah : mov al,0ffh ;Dato mov bx,000ah ;Contador BUCLE: Programa desensamblado MOV AL, 0FFH Mem[BX] = AL BX = BX - 1 mov mem[bx],al ;copia dato ;en men dec bx ;Decrementa BX NO BX = 00h SI mem jnz Bucle ;Repite si la ;bandera Z= 0 db 10 DUP ('x') ;Inicializa 10 ;espacios de ;memoria con ;carácter 78h END Inicio 9) Emule el SEGUNDO PROGRAMA tomando nota del contenido inicial de las cadenas Fuente y Destino y el intervalo de direcciones donde están almacenadas.

3 10) Ejecute paso a paso observando las modificaciones en las cadenas y las banderas. No pierda de vista el registro contador CX. 11) Anote el contenido final de la cadena Destino. 12) Ejecute nuevamente el programa y cuente las veces que se almacenan datos en la cadena Destino Cuál es la instrucción que hace el salto condicional? Qué causó el rompimiento del lazo de repetición? SEGUNDO PROGRAMA CX = 0010 : mov cx,10 ;Contador SI = SI XOR SI BUCLE: xor si,si ;Índice AL = Fuente[SI] Destino[SI] = AL mov al,fuente[si] mov destin[si],al ;Lee ;Escribe SI = SI + 1 inc si NO CX = CX - 1 CX = 00h loop BUCLE ;Repite si CX no es 00h ;El decremento de CX esta ;implícito en la instrucción SI : fuente db 8,9,50,51,52,53,5,55,56,57 ;datos destino END db 10 DUP (Dh) ;Destino Dh = M 13) Ahora analice el TERCER PROGRAMA, note que emplea instrucciones que cargan y extraen datos de la PILA. 1) Digite y guarde su programa. 15) Cierre el emulador.

16) Active nuevamente el emulador. Esto se hizo para borrar la memoria del emulador y que no interfieran los resultados anteriores con el nuevo programa. 17) Cargue el tercer programa y proceda a emularlo. 18) Visualice el contenido de la PILA (STACK) y el estado de las banderas. Coincide la dirección indicada en la PILA con la combinación Segmento- Desplazamiento de SS:SP? 19) Ejecute las primeras dos instrucciones. 20) Ejecute la tercera instrucción qué cambios observó en los registros y la PILA? TERCER PROGRAMA SI = SI XOR SI : xor si,si ;Inicializa registro C = 0 PILA = Banderas clc ;C = 0 ;Inicializa banderas pushf ;guarda banderas en la PILA Banderas = PILA AL = dato1[si] AL = AL + dato2[si] + C resul[si] = AL PILA = Banderas BUCLE: popf ;saca banderas de la PILA mov al,dato1[si] ;carga dato en AL adc al,dato2[si] ;suma al mas dato2 mov resul[si],al ;guarda en resultado pushf SI = SI + 1 inc si ;incrementa SI SI C = 1 cmp si, 02 jc BUCLE ;salte si C = 1 NO Banderas = PILA AL = 00h popf ;saca banderas de la PILA mov al,0 ;Borra AL AL = AL + ooh + C resul[si] = AL adc al,0 ;Carga el acarreo en AL mov Resul[si],al ;Último byte del resultado numby dw 0002

5 dato1 dato2 resul END db 0FFh, 0FFh db 0FFh, 0FFh db 00, 00, 00 21) Ejecute la cuarta instrucción instrucciones qué cambios observó? 22) El bloque de instrucciones siguiente realizará una operación aritmética Cuál será el resultado de la operación? Cuál será el estado de las banderas al ejecutarse la operación? En qué dirección se almacena el resultado? 23) Ejecute la siguiente instrucción Qué dato se almacenó en la PILA? Cambió SP? 2) Ejecute hasta antes de hacer la comparación Cuál será el estado de las banderas? 25) Verifique su hipótesis realizando la instrucción. 26) Antes de ejecutar JC Se dará el salto o no? 27) Verifique su hipótesis realizando la instrucción. Se almacenaron datos en la PILA al ejecutar el salto? 28) Ahora se repetirá el bloque aritmético. Responda nuevamente a las preguntas del punto 22, para la situación actual 29) Compruebe su predicción. 30) Ejecute la instrucción PUSHF qué dato envío a la PILA? 31) El siguiente bloque involucra al salto condicional otra vez saltará de nuevo? Por qué? 32) Compruébelo. 33) Continúe el proceso hasta el final Cuál es el resultado de la operación? Qué proceso realiza el programa?

6 3) Modifique el programa para que opere los siguientes datos y verifique su funcionamiento. a) 1050h + 3020h b) EDCB + 2010h c) 2590h + F550h Análisis de resultados a) Primer programa. Por qué la Instrucción mov Mem[bx], al es desensamblada como la instrucción MOV [BX] + 0010D, AL? Cuántos datos contiene la cadena Mem? Qué indica la directiva DUP? Dónde se definió el número de veces que se ejecutaría el lazo? Si en el código inicial se cambia la segunda instrucción (mov bx,000ah) para cargar un 0000h el salto se ejecutaría inmediatamente? b) Segundo programa. Cuál es la bandera que se evalúa para realizar el salto? Si se cambia el dato inicial de CX por 00h qué ocurriría? c) Tercer programa. Qué función cumple la instrucción CLC? Qué información se gurda en la PILA al ejecutar PUSHF? Qué relación hay entre los datos que se al maceran en la PILA y el estado de las banderas, durante la ejecución del programa? Por qué es importante para el proceso del programa almacenar datos en la PILA? Qué relación entre el dato en SP y las instrucciones PUSHF y POPF? Qué ocurriría si las instrucciones PUSHF y POPF del programa se cambian por PUSH y POP respectivamente? Cómo se relacionan los datos que se almacenan en la PILA y el estado de las banderas? Explique por lo menos un ejemplo que observo en su programa. Al realizar un salto se almacena o extrae información de la PILA?

7 Investigación complementaria Analice el siguiente código y a continuación compare con el PRIMER PROGRAMA Qué conclusiones obtiene de la comparación? AL = 0FFh BX = 000Ah Inicio: mov al,0ffh mov bx,000ah ;Contador Z = 0 bucle: jz fin ;Salta si Z = 1 M[BX - 1] = AL mov Mem[bx-1],al BX = BX - 1 dec bx jmp bucle fin: Mem db 10 DUP ('x') ;Zona de memoria END Inicio Modifique el segundo programa para que maneje las bocales en mayúscula. Modifique el tercer programa para funcionar con LOOP en lugar de JC Usando las capacidades del 8086 escriba un programa que realice la misma función del tercer programa, pero sin saltos. Bibliografía Brey, B. B. Los Microprocesadores Intel. 8086 / 8088, 80186, 80286, 80386 y 8086. Arquitectura, programación e interfaces, Prentice Hall, México DF, 1995 3 Biblioteca UDB 001.60 B87 1997 Puede consultar el material en línea del EMU8086 sobre los temas de esta actividad. Se recomiendan: Program flow control http://www.emu8086.com/assembly_language_tutorial_assembler_reference/a sm_tutorial_07.html