# 8086 program to Print a 16 bit Decimal number

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

Whether you're preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape, GeeksforGeeks Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we've already empowered, and we're here to do the same for you. Don't miss out - check it out now!