Skip to content
Related Articles

Related Articles

8086 program to Print a 16 bit Decimal number

View Discussion
Improve Article
Save Article
Like Article
  • Difficulty Level : Hard
  • Last Updated : 17 Jun, 2021

Problem: Write a 8086 program to Print a 16 bit Decimal number.

Examples: 

Input: d1 = 655
Output: 655

Input: d1 = 234
Output:234 

Explanation: 

  1. load the value stored into register
  2. divide the value by 10
  3. push the remainder into the stack
  4. increase the count
  5. repeat the steps until the value of the register is greater than 0
  6. until the count is greater than zero
  7. pop the stack
  8. add 48 to the top element to convert it into ASCII
  9. print the character using interrupt
  10. decrements the count

Program: 

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

Output: 

655

Note: The program cannot be run on an online editor , please use MASM to run the program and use dos box to run MASM , you might use any 8086 emulator to run the program
 


My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!