Skip to content
Related Articles

Related Articles

Improve Article

8086 program to convert a 16 bit decimal number to binary

  • Last Updated : 03 Jun, 2021

Problem: We are given a 16 bit decimal number we have to print the number in binary format

Examples: 

Attention reader! Don’t stop learning now. Get hold of all the important CS Theory concepts for SDE interviews with the CS Theory Course at a student-friendly price and become industry ready.

 

Input: d1 = 16
Output: 10000

Input: d1 = 7
Output: 111 

Explanation:  



  1. Load the value stored into register
  2. Divide the value by 2 to convert it to binary
  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: 




;8086 program to convert a 16 bit decimal number to binary
    .MODEL SMALL
    .STACK 100H
    .DATA
        d1 dw 16
    .CODE
        MAIN PROC FAR
            MOV AX,
    @DATA
        MOV DS,
    AX
  
;load the value stored;
in variable d1
    mov ax,
    d1
  
;convert the value to binary;
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 2 mov bx, 2
  
;divide it by 2
;to convert it to binary
    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: 

10000

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 :