8086 program to find the factor of a single digit number Edit
Here is an 8086 assembly language program to find the factor of a single-digit number. Full explanation is given in the code below.
Sample Code
.model tiny .code org 100h main proc near loop_readnumber: mov ah,09h mov dx,offset messageenternumber int 21h mov ah,01h ; dos function to read a character with echo from keyboard ; result (character entered) is stored in al int 21h ; dos interrupt 21h cmp al,30h ; check if input character is less then 0, ; here we are validating user input to check if entered character is betwen 0 and 9 jl loop_readnumber ; jump to display invalid character cmp al,39h ; check if input character is great then 9 jg loop_readnumber ; jump to display invalid character sub al,30h ; subtract 30h character code of character 0 from input to get numeric value mov ah,00h mov num,ax mov cx,ax mov bl,1 mov si,offset factors2 ; memory location of factor2 for displaying the output loop2: push cx mov ax,num div bl cmp ah,0 ; after division ah will have the reminder jg notfactor; If there is a reminder then then its not a factor push bx ; temp save bx add bl,30h ; have to add 30h to convert from number to ascii character mov [si],bl ; store the number in factors2 memory location pop bx ; restore the oreiginal value of bx pushed inc si inc si notfactor: inc bl pop cx loop loop2 mov ah,09h mov dx,offset factors int 21h mov ah,4ch ; dos function 4ch to terminate and return to dos mov al,00 int 21h ; dos interrupt 21h endp messageenternumber db 0ah,0dh,'Please input a single digit number $' num dw 0; factors db 0ah,0dh,'The Factors are ' factors2 db ' $' end main