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.

Dejar respuesta

Please enter your comment!
Please enter your name here