Algoritmo para multiplicar dos enteros en el sim8085

Algoritmo para multiplicar dos enteros en el sim8085

Hoy voy a seguir con la serie de algoritmos realizados en el simulador 8085. En ésta ocasión os voy a dejar el algoritmo para multiplicar dos números enteros.

Como siempre, podéis descargar el algoritmo desde mi cuenta personal de github.

Algoritmo de multiplicación de dos enteros en el sim8085

CPU "8085.TBL"
HOF "INT8"
ORG 1000h

 
       LDA 1800H   ; (1800) -> A   
       MOV B,A     ; A -> B        
       LDA 1801H   ; (1801) -> A   
       MOV C,A     ; A -> C        

       LDA 1900H   ; (1900) -> A   
       MOV D,A     ; A -> D        
       LDA 1901H   ; (1901) -> A   
       MOV E,A     ; A -> E        
      
       MVI H, 00h  ; 00H -> H      
       MVI L, 00h  ; 00H -> L      

       XRA A       ; 00H -> A      
       STA 1700h   ; A -> (1700)   
       XRA A       ; 00H -> A      
       STA 1701h   ; A -> (1701)   

MULT:  DAD D       ; HL+DE -> HL   

       JNC SALTO   ; 

       LDA 1701h   ; (1701) -> A   
       INR A       ; A+1 -> A      
       STA 1701h   ; A -> 1701H    
 
       CPI 00h     ; A-00H         
                                   
                                   

       JNZ SALTO   ; SI NO CERO SALTO  

       LDA 1700h   ; (1700) -> A   
       INR A       ; A+1 -> A      
       STA 1700h   ; A -> (1700)   

SALTO: DCX B       ; BC-1 -> BC    

       XRA A       ; 00H -> A          
       CMP B       ; COMPARACION B 00H 

       JNZ MULT    ; SI NO CERO MULT   
                                       
  
       XRA A       ; 00H -> A          
       CMP C       ; COMPARACION C 00H 

       JNZ MULT    ; SI NO CERO MULT   
                                       

       JZ FINAL    ; SI CERO FINAL     
                                       

FINAL: MOV A, H    ; H -> A       
       STA 1702h   ; A -> (1702)  
       MOV A, L    ; L -> A       
       STA 1703h   ; A -> (1703)  

       END
        

;  MULTIPLICACION DE 16 BITS
;  LOS ELEMENTOS DE LA MULTIPLICACION ESTA EN LAS POS. MEM. 1900-01H Y  
;  1800-01H EL RESULT. SE DEJA EN 1700-01-02-03 (LA DOS PRIMERAS POS.
;  MEM. SON PARA EL ACARREO DEL RESULTADO 
;  EJEM: 1234H * 4321H = 4C5F4B4
;  OBS: TENER CUIDADO AL INTRODUCIR LOS DATOS CON LOS ELEM. DE MAYOR Y
;       MENOR PESO

Conclusión

Os invito a dejarme en la sección de comentarios vuestras opiniones, aportaciones o código alternativo al producto de dos números enteros. Nos vemos en el siguiente artículo de ésta publicación.

No Comments

Post a Comment