División Binaria

Anuncio
División Binaria Algoritmo 1. El bit más significativo es aislado del numero binario por medio de una rotación dentro de la bandera del carry 2. El bit más significativo es dividido por medio de substraer el numero binario a. Si la bandera del carry esta en alto, significa que el numero es mayor que el bit más significativo, por lo tanto el cociente es 0 b. De lo contrario el cociente es 1 y el residuo debe ser pasado a la siguiente operación 3. El proceso es repetido hasta realizarlo 8 veces (para un numero de 8‐bits) Programa DIVIDE: NEXTBIT: ;Esta subrutina divide dos números enteros de 8‐bits ; Entrada: Dividendo en D y divisor en E ; Salida: Cociente en L y residuo en C ; Registros modificados: B,C, y L ; Llama a subrutinas DIV8 y RESULT LD B,08H ; Contador de rotaciones LD L,0 ; L tendrá el cociente LD C,L ; C tendrá el residuo parcial CALL DIV8 ; Divide dos números de 8 bits CALL RESULT ; Almacena los resultados DEC B ; Decrementa el contador de rotaciones JP NZ,NEXTBIT ; Si no todos los bits han sido checado, salta al siguiente RET ; bit DIV8: ;Esta subrutina obtiene un bit del dividendo para formar un dividendo parcial ; y resta el divisor del dividiendo parcial y paso el resultado en la bandera ; del Carry y el residuo en la subrutina RESULT ; Entrada: Dividendo en D y divisor en E, ; Salida: Residuo en A y CY, residuo parcial en C ; Registros modificados: A,C, y D LD A,D ; Guarda el dividendo RLCA ; Envía el bit al carry LD D,A ; Guarda el resto del dividendo RLA ; Combine el bit CY con el residuo CP E ; Checa si el divisor > dividendo parcial RET C ; Si CY=1, divisor > dividendo parcial DEC B ; Resta el divisor del dividendo parcial RET ; Termina RESULT: ;Esta subrutina guarda el residuo y ajusta el cociente de acurdo a los ; resultados de la rutina previa ; Entrada: Residuo en el acumulador y Carry ; Salida: Cociente en L y residuo en C ; Registros modificados: B,C, y L LD C,A ; Guarda residuo parcial CCF ; Pone CY=1 o 0 según sea el cociente LD A,L ; Obtiene el cociente previo RLA ; Suma el cociente de la bandera CY LD L,A ; Guarda el cociente parcial RET Instrucciones Especiales •
•
•
CCF o Complementa la bandera del Carry (CY) o Si CY = 0 entonces después de la ejecución de esta instrucción será CY=1 o Si CY = 1 entonces después de la ejecución de esta instrucción será CY=0 SBC HL, RegisterPair o Realiza la resta de un numero de 16 bits de HL y almacena su resultado en HL (HL = HL ‐ RegisterPair ) o El operando default es HL, se puede operar con cualquier par de registros, BC, DE, HL o SP o Afecta todas las banderas SBC A,op o Resta el operando del acumulador y toma en cuenta la bandera de carry (CY), es decir A = A‐op‐CY o El operando op puede ser un registro (B,C,D,E,H,L), un numero de 8‐bits, o una localidad de memoria apuntada por HL, IX o IY o Ejemplo: ƒ SBC A, D ƒ SBC A,20 ƒ SBC A,(HL) ƒ SBC A,(IX+10H) 
Descargar