Programa 8086 para imprimir un número decimal de 16 bits

Problema: escriba un programa 8086 para imprimir un número decimal de 16 bits.

Ejemplos: 

Input: d1 = 655
Output: 655

Input: d1 = 234
Output:234 

Explicación: 

  1. cargar el valor almacenado en el registro
  2. dividir el valor por 10
  3. empujar el resto en la pila
  4. aumentar el conteo
  5. repita los pasos hasta que el valor del registro sea mayor que 0
  6. hasta que el conteo sea mayor que cero
  7. revienta la pila
  8. agregue 48 al elemento superior para convertirlo en ASCII
  9. imprimir el carácter usando interrupción
  10. disminuye el conteo

Programa: 

ALP

;8086 program to print a 16 bit decimal number
.MODEL SMALL
.STACK 100H
.DATA
d1 dw 655
.CODE
MAIN PROC FAR
    MOV AX,@DATA
    MOV DS,AX   
     
    ;load the value stored
    ; in variable d1
    mov ax,d1      
     
    ;print the value
    CALL PRINT     
                    
    ;interrupt to exit              
    MOV AH,4CH
    INT 21H
 
MAIN ENDP
PRINT PROC          
     
    ;initialize count
    mov cx,0
    mov dx,0
    label1:
        ; if ax is zero
        cmp ax,0
        je print1     
         
        ;initialize bx to 10
        mov bx,10       
         
        ; extract the last digit
        div bx                 
         
        ;push it in the stack
        push dx             
         
        ;increment the count
        inc cx             
         
        ;set dx to 0
        xor dx,dx
        jmp label1
    print1:
        ;check if count
        ;is greater than zero
        cmp cx,0
        je exit
         
        ;pop the top of stack
        pop dx
         
        ;add 48 so that it
        ;represents the ASCII
        ;value of digits
        add dx,48
         
        ;interrupt to print a
        ;character
        mov ah,02h
        int 21h
         
        ;decrease the count
        dec cx
        jmp print1
exit:
ret
PRINT ENDP
END MAIN

Producción: 

655

Nota: El programa no se puede ejecutar en un editor en línea, use MASM para ejecutar el programa y use dos box para ejecutar MASM, puede usar cualquier emulador 8086 para ejecutar el programa
 

Publicación traducida automáticamente

Artículo escrito por andrew1234 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *