print macro msg
        lea dx,msg
        mov ah,09h
        int 21h
endm
read macro n,j1,j2
    mov cx,0ah
j1:mov ah,01h
    int 21h                     
    cmp al,0dh
    je j2
    sub al,30h
    mov bl,al
    mov ax,n
    mul cx
    xor bh,bh
    add ax,bx
    mov n,ax
    jmp j1
j2 :nop
endm
.model small
.stack 100h
.data
    msg1 db 10,13,'Enter the number: $'
    msg2 db 10,13,'Fibonacci Series: $'
    space db ' $'
    n dw 0
    a dw 0
    b dw 1
    fib dw 0
    
.code
main proc
    mov ax,@data
    mov ds,ax
    print msg1
    
    ;reading 1st multidigit number
    read n,jump1,jump2
    
    print msg2
jump3:print space
    mov ax,fib
    call printmul
    mov ax,b
    mov a,ax
    mov dx,fib
    mov b,dx
    add ax,dx
    mov fib,ax
    
    cmp n,ax
    jnc jump3
    mov ah,4ch
    int 21h
main endp
printmul proc
    mov bx,000ah
    xor cx,cx
    
    ;push into stack
l2:xor dx,dx
    div bx
    push dx
    inc cx
    cmp ax,0000h
    jne l2
    ;pop from stack
l3:pop dx
    add dl,30h
    mov ah,02h
    int 21h
    loop l3
    ret
printmul endp
end
No comments:
Post a Comment