Tarea
comf NUM,f
incf NUM,w
movwf NUMC2
donde NUM es el registro en el que se encuentra el número que se quierepasar a complemento a dos y NUMC2 es el registro donde se guarda el complemento a dos del número. Hasta ahí todo bien, ahora pasemos al algorítmo.
Supongamos que queremos multiplicar dos números de8 bits, digamos que queremos multiplicar 5*(-6) donde 5 es el multiplicando y -6 es el multiplicador, con esos datos se forman 3 arreglos distintos de la siguiente manera:
A=0000 0101 0000 0000 0S=1111 1010 0000 0000 0
P=0000 0000 1111 1010 0
El byte superior de A está formado por el multiplicando, el siguiente byte se forma con ceros y se agrega un bit extra que también es 0.
Elbyte superior de S está formado por el complemento a dos del multiplicando, el siguiente byte al igual que el caso anterior se forma con ceros y al final se agrega un bit extra que es 0.
El bytesuperior de P está formado por ceros, el siguiente byte es el valor del multiplicador y por ultimo se tiene el bit extra.
Se puede observar que los tres números formados son de 17 bits cuando losnúmeros que se van a multiplicar son de 8 de modo que los números formados siempre serán de N+1 bits, siendo N el número de bits de los factores.
Sigamos entonces. Este algorítmo consiste encomparar los últimos dos digitos del número P y dependiendo de el caso que sea realizar un suma o no realizar ninguna acción. Luego de evaluar cada caso se debe realizar un corrimiento a la derecha,manteniendo el valor del bit más significativo y desechando el valor del bit menos significativo. Los cuatro casos que se tienen se pueden ver en la siguiente tabla:
0 0 -> No realizar ninguna acción0 1 -> P = P + A
1 0 -> P = P + S
1 1 -> No realizar ninguna acción
Veamos el algoritmo paso a paso usando los numeros A, S y P de arriba. Primero tenemos el numero P original:
0000 0000...
Regístrate para leer el documento completo.