Problem: Write a 8086 program to Print a 16 bit Decimal number.
Examples:
Input: d1 = 655
Output: 655
Input: d1 = 234
Output:234
Explanation:
- load the value stored into register
- divide the value by 10
- push the remainder into the stack
- increase the count
- repeat the steps until the value of the register is greater than 0
- until the count is greater than zero
- pop the stack
- add 48 to the top element to convert it into ASCII
- print the character using interrupt
- 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!
Last Updated :
17 Jun, 2021
Like Article
Save Article