GUIA DE LABORATORIO 3: INTRUCCIONES DE SALTOS Y PROCEDIMIENTOS
LuisDiaz200Informe26 de Febrero de 2019
1.280 Palabras (6 Páginas)215 Visitas
GUIA DE LABORATORIO 3: INTRUCCIONES DE SALTOS Y PROCEDIMIENTOS
OBJETIVOS
- Conocer y aplicar las instrucciones de salto disponibles en los procesadores 8086.
- Programar en ensamblador pequeños programas que lleven instrucciones de salto.
- Practicar el uso de ciclos, subrutinas o procedimientos.
- Comprender la utilidad que representa el uso del stack.
INTRODUCCION
Las instrucciones de salto son llamadas instrucciones de control de programa, que dirigen el flujo de un programa y permiten que este cambie. A menudo, un cambio de flujo ocurre después de que una decisión que ha sido tomada con las instrucciones CMP o TEST, es seguida de una instrucción de salto condicional.
Las instrucciones de salto JMP permite al programador omitir secciones de un programa y saltar hacia cualquier parte de la memoria para la siguiente instrucción. Existen saltos condicionales e incondicionales.
Subrutinas
Muy a menudo se encuentra que una sección del programa debe realizar una operación que es muy frecuente. Si el programador recibe esta sección cada vez que se va a utilizar, el programa se vuelve largo y tedioso de escribir. Para optimizar el uso de memoria en programas largos, se hace uso de subrutinas, las subrutinas pueden ser ejecutadas condicional o incondicionalmente.
La instrucción CALL es usada para llamar a la subrutina, su función consiste en dos operaciones:
CALL 1800H
RET
La instrucción RET debe escribir al final de cada subrutina y su función es devolver al programa en el punto donde la subrutina fue llamada.
La pila o STACK
En el diseño de programas, el Stack (pila) se considera como una sección de memoria que tiene un sólo puerto de entrada y uno de salida. Los datos son introducidos y sacados del Stack por medio de esta vía. La pila está organizada bajo lógica LIFO (LAST-IN FIRST-OUT). Podemos la pila como un grupo de objetos que se apilan verticalmente.
En el CPU 8086 las operaciones con la pila se realizan con las instrucciones
PUSH coloca datos en la pila
POP saca datos de la pila
Siempre que se haga uso de la pila en algún programa, el puntero de pila SP debe de inicializarse con la dirección más alta disponible en RAM de esta manera teóricamente toda la memoria puede usarse como Pila.
PROCEDIMIENTO
- Abra el simulador emu8086 haciendo doble clic en el ícono.
- A continuación se muestra un programa que suma los diez números guardados en la dirección de memoria: Lista.
mov si,0h
mov ax,0h
mov cx,10
mov bx,offset lista
salto: mov dl,[bx+si]
add ax,dx
inc si
dec cx
jnz salto
ret
Lista db 10h,20h,30h,11h,22h,33h,40h,50h,44h,55h,0h
- Investigue la instrucción LOOP y utilícela en el programa anterior. Verifique que los resultados del programa sean los mismos.
- En el siguiente programa, un ciclo pequeño se encuentra dentro de un ciclo más largo. La función del programa es la de rotar 4 veces el contenido de los datos diseccionados por el arreglo LIST. Note que el registro CL es usado tanto para controlar el ciclo pequeño como el grande. Explique la razón por la que CL puede ser usado en ambos ciclos. ¿En qué sentido se han hecho las rotaciones? ¿Cuál es la instrucción, dentro del programa, que realiza la función de rotación? ¿Es entonces la rotación equivalente a alguna operación aritmética? Explique.
MOV SP, 0400h
MOV SI, 0000h
MOV DI, 0401h
MOV CL, 06h
MOV BX, OFFSET LIST
CICLO1: PUSH CX
MOV AL, [BX+SI]
MOV CL, 04h
CICLO2: ADD AL, AL
DEC CL
JNZ CICLO2
...