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