; === 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