| ; === INICIO DEL PROGRAMA ===
|
|
|
| ; Leer el dividendo (A) desde el puerto 00h
|
| IN 00h ; A = dividendo
|
|
|
| MOV B, A ; Guardamos el dividendo original en B
|
| MVI C, 00h ; C será el cociente parcial (inicialmente 0)
|
| IN 01h ; A = divisor
|
| MOV D, A ; D = divisor
|
| MVI A, 00h ; A = residuo parcial (R), inicialmente 0
|
|
|
| ; === INICIO DEL BUCLE DE 4 ITERACIONES ===
|
|
|
| LOOP: RLC ; Desplazar R (A) una vez a la izquierda
|
| MOV E, A ; Guardar R parcial en E para comparar
|
|
|
| ; R = R - D
|
| MOV A, E
|
| SUB D
|
|
|
| ; Verificamos si el resultado fue negativo (con JC)
|
| JC RESTORE ; Si fue negativo, restauramos y agregamos 0 al cociente
|
|
|
| ; Si fue positivo, agregamos 1 al cociente (desplazando C)
|
| RLC ; Simular desplazamiento del cociente e inserción de 1
|
| MOV C, A ; Guardamos el nuevo cociente
|
| JMP CONT
|
|
|
| RESTORE:
|
| MOV A, E ; Restauramos el valor original del residuo (R)
|
| RLC ; Simular desplazamiento del cociente e inserción de 0
|
| MOV C, A ; Guardamos el nuevo cociente
|
|
|
| CONT:
|
| DCR B ; Usamos B como contador de iteraciones (decrementamos)
|
| JNZ LOOP ; Repetimos mientras no se cumplan 4 iteraciones
|
|
|
| ; === RESULTADO FINAL ===
|
| MOV A, C ; A = cociente final
|
| OUT 02h ; Mostrar resultado por puerto 02h
|
|
|
| HLT
|