Sunday, December 12, 2010

LCM of two numbers

Share Orkut
        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 1st number: $'         msg2 db 10,13,'Enter the 2nd number: $'         msg3 db 10,13,'The LCM= $'         data1 dw 0         data2 dw 0         dat1 dw 0         dat2 dw 0     .code     main proc         mov ax,@data         mov ds,ax         print msg1         ;reading 1st multidigit number         read data1,jump1,jump2         print msg2         ;reading 2nd multidigit number         read data2,jump3,jump4         ;copy the data1 and data2 to dat1& dat2         mov bx,data1         mov dat1,bx         mov cx,data2         mov dat2,cx         ;Algorithm for finding lcm         ;if(dat1=dat2) then finish, lcm=dat1 or dat2         ;elseif(dat1<dat2) then dat1=dat1+data1         ;else dat2=dat2+data2         ;repeat     loop1:mov ax,dat1         cmp ax,dat2         je jump5         jc jump6         mov ax,dat2         add ax,cx         mov dat2,ax         jmp loop1     jump6:mov ax,dat1         add ax,bx         mov dat1,ax         jmp loop1         ;printing LCM     jump5:mov bx,0ah         xor cx,cx         ;push into stack     p1:xor dx,dx         div bx         push dx         inc cx         cmp ax,00h         jne p1         print msg3         ;pop from stack     display:pop dx         add dl,30h         mov ah,02h         int 21h         loop display         mov ah,4ch         int 21h     main endp     end

No comments:

Post a Comment