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:
- 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
Please Login to comment...