print macro msg
        lea dx,msg
        mov ah,09h
        int 21h
    endm
    read macro n,j1,j2
    j1:mov ah,01h
        int 21h                     
        cmp al,0dh
        je j2
        sub al,30h
        mov bl,al
        mov ax,n
        mov dx,0ah
        mul dx
        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,'Enter the limit: $'
        msg4 db 10,13,'$'
        msg5 db ' * $'
        msg6 db ' = $'
        msg7 db 10,13,'Multiplication table$'
        num dw 0
        limit dw 0
        pro dw 0
        m dw 1
    
    .code
    main proc
        mov ax,@data
        mov ds,ax
        print msg1
    
        ;reading 1st multidigit number
        read num,jump1,jump2
    
        print msg2
        ;reading 2nd multidigit number
        read limit,jump3,jump4
    
        ;printing multiplication table
        mov cx,limit
        print msg7  
    loop1:mov bx,m
        mov ax,num
        mul bx
        push cx
        mov pro,ax
        print msg4
        mov ax,num
        call printmul
        print msg5
        mov ax,m
        call printmul
        print msg6
        mov ax,pro
        call printmul
        inc m
        pop cx
        loop loop1
    
        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