Pilas
Restador BCD
Introducción
Funcionamiento de la Pila (Stack). La pila es una zona de la memoria sobre la que se pueden escribir y leer datos de forma convencional esta tiene que ser modificada cada vez que se llame a un procedimiento para preservar cada uno de los registros que se vayan a utilizar en la función. Así mismo se tiene que volver a modificar ala hora de salir del procedimiento y dejarla tal cual estaba antes de la llamada al procedimiento.
Mecanismo de llamada a procedimientos (Intel). Como para cualquier programa los procedimientos te ayudan a resolver mejor un problema ya que puedes descomponerse en partes y ser resueltos mediante subproblemas mediante estos. Los procedimientos se llaman mediante la instrucción CALL y a la hora desalir es con la instrucción RET.
Resultado: el programa realiza lo especificado en la práctica. Este programa resta “sumando” ya que se le saca complemento a(2) al número negativo y luego se procede sumar y así se obtendría el resultado deseado.
Marco teórico
Planteamiento del problema:
* Desarrollar un programa en lenguaje Assembler 8051 para restar dos números decimales de
* 4dígitos cada uno.
* Los dos números a restar se suministrarán en código ASCII y se ubicarán en las localidades de memoria interna RAM.
* El resultado de la resta se calculará haciendo uso de los registros y se expresará en código
* ASCII en las localidades previstas e indicadas en la tabla.
* El programa deberá validar si el minuendo y el sustraendo son números BCD. Si alguno de los dosoperandos no es BCD se debe mostrar el mensaje “No BCD” en el campo previsto para mostrar el resultado.
* Si el minuendo es menor que el sustraendo debe mostrar el resultado con signo negativo.
* El programa realizado debe iniciar la pila al inicio, hará uso intensivo de llamadas a procedimientos, y de instrucciones de manejo de la pila.
Dirección(hex) | Campo | Rango |
24, 25, 26,27 | Minuendo | 0000 a 9999 |
2C, 2D, 2E, 2F | Sustraendo | 0000 a 9999 |
3C, 3D, 3E, 3F | Resultado | 0000 - 9999 |
Objetivos:
* Saber como modularizar el código en el lenguaje assembler 8051.
* Como movernos mediante la Pila (Stack)
Respuestas a preguntas formuladas en la práctica:
* Funcionamiento de la Pila (Stack). La pila es un array de posiciones de memoriacontiguas; una memoria LIFO (Last In, First Out: cuando se meten datos en la pila, se sacan en orden inverso). Las instrucciones para el manejo de la pila son PUSH para meter items, y POP para sacarlos. Un programa o un sistema operativo puede necesitar muchas pilas, pero está limitado por el número máximo de segmentos y de memoria física disponible. Cuando un sistema posee más de una pila sólo estádisponible una (la única contenida en el segmento referido al registro SS), no puede manejar más a la vez.
* Mecanismo de llamadas a procedimientos (Intel). El procesador soporta dos maneras de llamar a procedimientos: las instrucciones CALL y RET, y las instrucciones ENTER y LEAVE (éstas en conjunto con las anteriores).
La instrucción CALL permite llamar fácilmente a procedimientos. Guarda ladirección de la instrucción que se está ejecutando en la pila (con PUSH) para después poder recuperarla y seguir donde estaba, y salta con una instrucción de salto. La instrucción RET hace lo inverso; recupera la posición guardada en la pila (mediante POP) y salta a ella (a la posición de memoria) para seguir con lo que se estaba haciendo antes del procedimiento.
Los parámetros pueden ser pasadosentre los procedimientos de tres formas: mediante registros de propósito general (guardando los datos en registros antes de ejecutar CALL), en una lista de argumentos (es un método para pasar un número largo de parámetros, que consiste en guardarlos en una lista de argumentos en uno de los segmentos de datos en memoria; entonces al procedimiento se le pasará un puntero apuntando a esa lista), o...
Regístrate para leer el documento completo.