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
Sunday, December 12, 2010
Saturday, December 11, 2010
Largest of 10 numbers
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 a number: $'
msg2 db 10,13,'Largest= $'
num dw 10 dup(0)
larg dw 0
.code
main proc
mov ax,@data
mov ds,ax
;read 10 elements
mov cx,0ah
lea si,num
loop1:print msg1
;read a multidigit number
read [si],jump1,jump2
add si,02
loop loop1
;asign 1st element as largest
lea si,num
mov ax,[si]
mov larg,ax
mov cx,09h
;compare larg with other elements
loop2:add si,02
mov ax,[si]
cmp larg,ax
jnc notlarg
mov larg,ax
notlarg:loop loop2
;printing largest
mov bx,000ah
mov ax,larg
xor cx,cx
;push into stack
p1:xor dx,dx
div bx
push dx
inc cx
cmp ax,0000h
jne p1
print msg2
;pop from stack
display:pop dx
add dl,30h
mov ah,02h
int 21h
loop display
mov ah,4ch
int 21h
main endp
end
Sum of two multidigit digit number
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 Sum= $'
num1 dw 0
num2 dw 0
.code
main proc
mov ax,@data
mov ds,ax
print msg1
;reading 1st multidigit number
read num1,jump1,jump2
print msg2
;reading 2nd multidigit number
read num2,jump3,jump4
;finding sum
mov ax,num1
add ax,num2
;printing number
mov bx,000ah
xor cx,cx
;push into stack
p1:xor dx,dx
div bx
push dx
inc cx
cmp ax,0000h
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
Sum of two single digit number
print macro msg
lea dx,msg
mov ah,09h
int 21h
endm
read macro
mov ah,01h
int 21h
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,'Sum= $'
.code
mov ax,@data
mov ds,ax
;read first number
print msg1
read
mov bl,al
;read second number
print msg2
read
;find sum
add bl,al
;display sum
print msg3
mov dl,bl
sub dl,30h
mov ah,02
int 21h
mov ah,4ch
int 21h
end
Hello World
.model small
.stack 100h
.data
mg db "Hello World $"
.code
mov ax,@data
mov ds,ax
lea dx,mg
mov ah,09h
int 21h
mov ah,4ch
int 21h
end
Subscribe to:
Posts (Atom)