• No se han encontrado resultados

MICROPROGRAMACIÓN multiplicacion de suma

N/A
N/A
Protected

Academic year: 2020

Share "MICROPROGRAMACIÓN multiplicacion de suma"

Copied!
5
0
0

Texto completo

(1)

MICROPROGRAMACIÓN Y PROGRAMACIÓN EN LENGUAJE ENSAMBLADOR El lenguaje ensamblador, o asamblea (assembly lenguaje en inglés), es un lenguaje de programación de bajo nivel para los computadores, microprocesadores, micro controladores y otros circuitos integrados programables. Implementa una representación simbólica de los códigos de máquina binarios y otras constantes necesarias para programar una arquitectura dada de CPU y constituye la representación más directa del código máquina específico para cada arquitectura legible por un programador. Esta representación es usualmente definida por el fabricante de hardware, y está basada en los mnemónicos que simbolizan los pasos de procesamiento (las instrucciones), los registros del procesador, las posiciones de memoria y otras características del lenguaje. Un lenguaje ensamblador es por lo tanto específico de cierta arquitectura de computador física (o virtual). Esto está en contraste con la mayoría de los lenguajes de programación de alto nivel, que idealmente son portátiles.

Una vez que se establece la configuración de una computadora y su unidad de control micro programado, es tarea del diseñador generar el micro código para la memoria de control. Esta generación de código se llama microprogramación y es un proceso similar a la programación de lenguaje de máquina convencional. Para apreciar este proceso, aquí presentamos una computadora digital simple y cómo se programa.

El programa de bloque de una computadora consta de dos unidades de memoria: una memoria principal para almacenar instrucciones y datos y una memoria de control para almacenar el microprograma. Se asocian cuatro registros con la unidad del procesador y dos con la unidad de control. Los registros del procesador son el contador de programa PC, el registro de direccionamiento AR, el registro de datos DR y el registro acumulador AC. La unidad de control tiene un registro de direccionamiento de control CAR y un registro de subrutina SBR. La memoria de control y sus registros se organizan como una unidad de control microprograma da.

La transferencia de información entre los registros del procesador se realiza mediante multiplexores, no por el bus común. DR puede recibir información de AC, PC o de la memoria. AR puede recibir información de PC o DR. PC sólo puede recibir información de AR. La unidad aritmética, lógica y de corrimiento realiza micro operaciones con datos de AC y DR y coloca el resultado en AC. Nótese que la memoria recibe su dirección de AR. Los datos de entrada escritos en la memoria provienen de DR, y los datos que se leen en la memoria sólo pueden ir a DR.

El formato de instrucción de computadora aparece. Consta de tres campos: un campo de 1 bit para direccionamiento indirecto representado por 1, un código de operación de 4 bits y un campo de dirección de 11 bits. La lista de cuatro de las 16 instrucciones posibles de referencia a memoria. La instrucción ADD suma el contenido del operando que se encuentra en la dirección efectiva al contenido de AC. La instrucción BRANCH provoca un brinco a la dirección efectiva sí el operando en AC es negativo. El programa pasa a ejecutar la siguiente instrucción si AC no es negativo. AC es negativo si su bit de signo (el bit a la extrema izquierda del registro) es un 1. La instrucción STORE transfiere el contenido de AC a la palabra de memoria especificada por la dirección efectiva. La instrucción EXCHANGE intercambia los datos entre AC y la palabra de memoria especificada por la dirección efectiva.

Después se mostrará que cada instrucción de computadora debe micro programarse. Para no complicar el ejemplo de microprogramación, aquí sólo se consideran cuatro instrucciones. Debe recordarse que pueden incluirse otras 12 operaciones y cada instrucción debe micro programarse mediante el procedimiento que se muestra enseguida.

(2)

Los componentes básicos de una unidad de control microprograma da son la memoria y los circuitos que seleccionan la dirección siguiente. La parte de selección de dirección se llama secuenciador de microprograma. Puede construirse un secuenciador de microprograma con funciones digitales que se ajusten a una aplicación particular. Sin embargo, al igual que existen grandes unidades RQM disponibles en encapsulados de circuitos integrados, también hay secuenciadores de propósito general convenientes para la construcción de unidades de control de microprograma. Para garantizar un amplio rango de aceptabilidad, un secuenciador de circuitos integrados debe proporcionar una organización interna que pueda adaptarse a un amplio rango de aplicaciones.

Un conjunto de microinstrucciones es una microprograma encargada de ejecutar una determinada instrucción

El conjunto de microprogramas que ejecutan las instrucciones se llama firmware o micro código

Requisitos a tener en cuenta:

– Limitación del tamaño de la memoria de control a utilizar – Establecer una correspondencia entre cada instrucción máquina y

su microprograma correspondiente

– Control del secuencia miento

Multiplicación en lenguaje ensamblador con sumas sucesivas

Sumas sucesivas.

Antes de escribir el código siempre es recomendable resolver el problema sin pensar en la programación así que explicare las sumas sucesivas primero.

Una multiplicación no es más que la suma de un mismo número N veces, por ejemplo.

Si multiplicamos 5 x 3 el 5 es el número que se va a sumar y el 3 es el número de veces que se realiza la suma si tomamos en cuenta que iniciamos en cero.

0+5= 5 //primera suma

5+5=10 // segunda suma

10+5=15 //tercer suma

Ahora al código.

Instrucciones en ensamblador

Como ya mencione tenemos que iniciar siempre en cero así que nos aseguramos que el acumulador este en 0 con la instrucción mvi.

(3)

Después necesitamos los números que se van a multiplicar (en este caso 5 y 3 como en el ejemplo anterior) los cuales también asignaremos con la instrucción mvi.

mvi b, 05

mvi c, 03

Podemos tomar cualquiera de los dos números para sumar y el otro para saber el numero de veces que se debe realizar la suma, así que uno se sumara al acumulador con add y el otro se le restara 1 con la instrucción dcr, así al llegar a 0 sabremos que hemos realizado las sumas necesarias.

add b

dcr c

Estas operaciones se deben hacer varias veces para poder llegar al resultado deseado así que necesitas un ciclo que repita las instrucciones, para esto usare una etiqueta que llamaremos salto y jnz como condición para que realice el salto siempre que la operación anterior sea diferente de 0.

salto:

add b

dcr c

jnz salto

El código completo quedaría así.

mvi b, 05h

mvi c, 03h

mvi a, 00h

salto:

add b

dcr c

(4)

Si queremos obtener los datos sin que los asignemos nosotros lo hacemos con la instrucción in y se lo asignamos a B y C de la siguiente forma.

in 00

mov b, a

in 00

mov c, a

mvi a, 00h

salto:

add b

dcr c

jnz salto

Espero que les sirva, Pueden dejarme sus comentarios y los responderé lo mas rápido que me sea posible.

Hasta la próxima.

MULTIPLICADOR POR SUMAS SUCESIVAS

DE DOS NÚMEROS DE CUATRO BITS CADA

UNO.

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

use ieee.std_logic_arith.all;

entity multsuma is

port (a,b : in integer range 0 to 15;

salida: out integer range 0 to 255);

end multsuma;

architecture algoritmo of multsuma is

begin

process (a,b)

variable temporal: integer :=0;

begin

temporal:=0;

(5)

if b >= veces then

temporal:=temporal + a;

else

temporal:=temporal + 0;

end if;

end loop;

salida<=temporal;

end process;

end algoritmo;

USANDO EL TEST BENCH GENERAMOS LA ONDA DE ENTRADA

El algoritmo de multiplicación por sumas sucesivas, es cuando uno de los factores

Indica cuantas veces tenemos que sumar el otro, por eso usamos una sentencia FOR (o

Sea un bucle) que comparará el número de veces que se ha sumado el primer factor

(multiplicando), con el segundo factor (multiplicador), y va a comparar, si el número de

veces es igual al multiplicador, entonces para completar el bucle le sumará cero (o

también no le puede sumar ningún número), y así hasta terminar el bucle, luego se le

asigna el valor resultante en la variable a la salida final, en Hardware, las entradas a

pesar de ser del tipo INTEGER se implementan en 4 bits (valor mínimo 0 hasta 15, tal

como se definió el rango de los números) y a salida será de 8 bits (el valor máximo que

se puede obtener multiplicando dos números de 4 bits cada unos es de 225, lo cual esta

cercano a 255, es decir a 8 bits).

Referencias

Documento similar

¿Cómo se traduce la incorporación de ésta en la idea de museo?; ¿Es útil un museo si no puede concebirse como un proyecto cultural colectivo?; ¿Cómo puede ayudar el procomún

Volviendo a la jurisprudencia del Tribunal de Justicia, conviene recor- dar que, con el tiempo, este órgano se vio en la necesidad de determinar si los actos de los Estados

&#34;No porque las dos, que vinieron de Valencia, no merecieran ese favor, pues eran entrambas de tan grande espíritu […] La razón porque no vió Coronas para ellas, sería

n que se contiene La Ordenanza que generalmente deberá observarse para el modo de.. cazar y pescar en estos rey nos, con señalamiento de los tiempos de veda, de una y

desarrollo del país y cumplir con la misión que se ha propuesto, tiene la intención de impulsar un Plan de Formación en Educación Financiera y Económica para mujeres cabeza de

El tercero tiene notas bajas pero la mayor es estadística, una de las temáticas trabajadas de forma más mecánica, asimismo el último arquetipo muestra que, aun con notas buenas,

“La unificación de la clasificación de empresas otorgada por las CC.AA.”, “La unificación de criterios en la acreditación de los servicios de prevención de riesgos

En cuarto lugar, se establecen unos medios para la actuación de re- fuerzo de la Cohesión (conducción y coordinación de las políticas eco- nómicas nacionales, políticas y acciones