print macro msg
lea dx,msg
mov ah,09h
int 21h
endm
.model small
.stack 100h
.data
s1 db 10,13,'Enter a sentance $'
s2 db 10,13,'The no of words in the string is $'
s3 db 50 dup('$')
.code
mov ax,@data
mov ds,ax
print s1
mov dx,offset s3
mov bx,00h
mov ah,3fh
int 21h
sub ax,02
mov si,00h
mov cx,ax
xor dx,dx
mov bl,32d
cmp cx,00
je prin
labl:cmp bl,s3[si]
jnz labl1
inc dx
labl1:inc si
loop labl
dec si
cmp bl,s3[si]
jz prin
inc dx
prin: mov bx,000ah
mov ax,dx
xor cx,cx
print1: xor dx,dx
div bx
push dx
inc cx
cmp ax,0000h
jne print1
print s2
display:pop dx
add dl,30h
mov ah,02h
int 21h
loop display
mov ah,4ch
int 21h
end
Tuesday, February 15, 2011
Transfer a string from data segment to extra segment

print macro msg
lea dx,msg
mov ah,09h
int 21h
endm
.model small
.stack 100h
.data
string1 db 'Enter a String $'
string2 dw 20 dup('$')
string4 db 'Moved String $'
extra segment
string3 dw 20 dup('$')
extra ends
.code
mov ax,@data
mov ds,ax
assume es:extra
mov ax,extra
mov es,ax
print string1
mov dx,offset string2
mov bx,00h
mov ah,3fh
int 21h
sub ax,2
mov cx,ax
print string4
cld
lea si,string2
lea di,string3
repe movs string3,string2
mov ax,extra
mov ds,ax
print string3
mov ah,4ch
int 21h
end
Monday, February 14, 2011
Check wheather the given number is prime or not

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,'Prime Number $'
msg3 db 10,13,'Not a Prime Number$'
msg4 db 10,13,'Invalid Entry$'
num dw 0
.code
main proc
mov ax,@data
mov ds,ax
print msg1
;reading 1st multidigit number
read num,jump1,jump2
mov ax,num
;if num=0
cmp ax,00
jne notzero
print msg4
jmp stop
notzero:;if num=1 or 2
cmp ax,03
jnc jump3
jmp prim
;check wheather num is prime or not
jump3:mov cx,02
div cx
mov cx,ax
mov bx,02
loop1:xor dx,dx
mov ax,num
div bx
cmp dx,00
je notprim
inc bx
loop loop1
prim:print msg2
jmp stop
notprim:print msg3
stop:mov ah,4ch
int 21h
main endp
end
Check wheather the given string is palindrome or not

print macro msg
lea dx,msg
mov ah,09h
int 21h
endm
.model small
.stack 100h
.data
s1 db 10,13,'Enter a string $'
s2 db 10,13,'palientrome $'
s4 db 10,13,'not palientrome $'
s3 db 50 dup('$')
f db 0
.code
mov ax,@data
mov ds,ax
print s1
mov dx,offset s3
mov bx,00h
mov ah,3fh
int 21h
sub ax,02
mov si,00h
mov cx,ax
mov di,ax
dec di
loop1: mov al,s3[si]
cmp al,s3[di]
jnz notp
dec di
inc si
loop loop1
print s2
jmp stop
notp:print s4
stop:mov ah,4ch
int 21h
end
Scrolling window up & down

.model small
.stack 100h
.data
str1 db 10,13,'$'
msg1 db 10,13,'Press 0 or 1 to scroll$'
msg2 db 10,13,'Press ENTER to finish$'
.code
mov ax,@data
mov ds,ax
xor cx,cx
mov dx,184fh
mov ah,07h
mov bh,07h
int 10h
; set cursor position to top
mov ah, 2
mov dh, 0
mov dl, 0
mov bh, 0
int 10h
;Hide Blinking cursor
mov ch, 32
mov ah, 1
int 10h
; print strings:
mov cx,07h
loop1:lea dx, str1
mov ah, 9
int 21h
loop loop1
lea dx, msg1
mov ah, 9
int 21h
lea dx, msg2
mov ah, 9
int 21h
; wait key press:
loop2:xor ax, ax
int 16h
cmp al,0dh
je exit
cmp al,31h
je up
cmp al,30h
jne loop2
; scroll window down:
mov ah, 07h
mov al, 1
mov bh, 07
mov cl, 0
mov ch, 0
mov dl, 50
mov dh, 50
int 10h
jmp loop2
up:; scroll window up:
mov ah, 06h
mov al, 1
mov bh, 07
mov cl, 0
mov ch, 0
mov dl, 50
mov dh, 50
int 10h
jmp loop2
exit:xor cx,cx
mov dx,184fh
mov ah,07h
mov bh,07h
int 10h
mov ah,4ch
int 21h
end
Thursday, February 3, 2011
Display a character-Attributes(Blinking,Reverse Video,Foreground & Background color)

print macro msg
lea dx,msg
mov ah,09h
int 21h
endm
.model small
.stack 100h
.data
menu db 10,13,'MENU',10,13,'1.Display ',10,13,'2.Blink ',
10,13,'3.Reverse Video',10,13,'4.Change foreground color',
10,13,'5.Change background color',10,13,'6.Exit$' str1 db 10,13,'Enter ur choice: $' str2 db 10,13,'Enter the character $' str3 db 10,13,'Enter the foreground color(1-9&A-F) $' str4 db 10,13,'Enter the background color(1-9&A-F) $' invalid db 10,13,'Invalid Entry $' newline db 10,13,'$' data1 db ? fcolor db 5 bcolor db 0fh .code main proc mov ax,@data mov ds,ax print str2 mov ah,01h int 21h mov data1,al loop1: print menu print str1 mov ah,01h int 21h cmp al,31h jne case2 jump1: call screen mov bl,bcolor call rotbl add bl,fcolor call display call hide call noblink call endscreen jmp loop1 case2: cmp al,32h jne case3 call screen mov bl,bcolor call rotbl add bl,fcolor call display call blink call hide call endscreen jmp loop1 case3: cmp al,33h jne case4 call screen mov bl,fcolor call rotbl add bl,bcolor call display call hide call endscreen jmp loop1 case4: cmp al,34h jne case5 print str3 mov ah,01h int 21h cmp al,3ah jc j2 sub al,07h j2: sub al,30h mov fcolor,al jmp jump1 case5: cmp al,35h jne case6 print str4 mov ah,01h int 21h cmp al,3ah jc j1 sub al,07h j1: sub al,30h mov bcolor,al jmp jump1 case6: cmp al,36h je stop print invalid jmp loop1 stop: 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 rotbl proc rol bl,1 rol bl,1 rol bl,1 rol bl,1 ret rotbl endp screen proc xor ax,ax xor bx,bx ;selecting screen mov ah,00 int 10h ;select mode 3 mov al,03h int 10h ret screen endp endscreen proc mov ah,00 int 16h mov ax,0003 int 10h ret endscreen endp display proc mov ah,09h mov al,data1 mov bh,00h mov cx,01h int 10h ret display endp blink proc ;for blinking mov ax, 1003h mov bx, 0001h int 10h ret blink endp noblink proc ;for not blinking mov ax, 1003h mov bx, 0000h int 10h ret noblink endp hide proc ;for hide the blinking cursor mov ch, 32 mov ah, 1 int 10h ret hide endp end
10,13,'3.Reverse Video',10,13,'4.Change foreground color',
10,13,'5.Change background color',10,13,'6.Exit$' str1 db 10,13,'Enter ur choice: $' str2 db 10,13,'Enter the character $' str3 db 10,13,'Enter the foreground color(1-9&A-F) $' str4 db 10,13,'Enter the background color(1-9&A-F) $' invalid db 10,13,'Invalid Entry $' newline db 10,13,'$' data1 db ? fcolor db 5 bcolor db 0fh .code main proc mov ax,@data mov ds,ax print str2 mov ah,01h int 21h mov data1,al loop1: print menu print str1 mov ah,01h int 21h cmp al,31h jne case2 jump1: call screen mov bl,bcolor call rotbl add bl,fcolor call display call hide call noblink call endscreen jmp loop1 case2: cmp al,32h jne case3 call screen mov bl,bcolor call rotbl add bl,fcolor call display call blink call hide call endscreen jmp loop1 case3: cmp al,33h jne case4 call screen mov bl,fcolor call rotbl add bl,bcolor call display call hide call endscreen jmp loop1 case4: cmp al,34h jne case5 print str3 mov ah,01h int 21h cmp al,3ah jc j2 sub al,07h j2: sub al,30h mov fcolor,al jmp jump1 case5: cmp al,35h jne case6 print str4 mov ah,01h int 21h cmp al,3ah jc j1 sub al,07h j1: sub al,30h mov bcolor,al jmp jump1 case6: cmp al,36h je stop print invalid jmp loop1 stop: 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 rotbl proc rol bl,1 rol bl,1 rol bl,1 rol bl,1 ret rotbl endp screen proc xor ax,ax xor bx,bx ;selecting screen mov ah,00 int 10h ;select mode 3 mov al,03h int 10h ret screen endp endscreen proc mov ah,00 int 16h mov ax,0003 int 10h ret endscreen endp display proc mov ah,09h mov al,data1 mov bh,00h mov cx,01h int 10h ret display endp blink proc ;for blinking mov ax, 1003h mov bx, 0001h int 10h ret blink endp noblink proc ;for not blinking mov ax, 1003h mov bx, 0000h int 10h ret noblink endp hide proc ;for hide the blinking cursor mov ch, 32 mov ah, 1 int 10h ret hide endp end
Wednesday, February 2, 2011
BCD Addition

print macro msg
lea dx,msg
mov ah,09h
int 21h
endm
read macro msg1,l1,j1
xor cx,cx
mov si,offset msg1
l1: mov ah,01
int 21h
cmp al,0dh
je j1
sub ax,30h
mov [si],al
inc si
inc cx
jmp l1
j1: nop
endm
printnum macro msg2,msg3,l2
xor cx,cx
mov cx,msg3
mov si,offset msg2
mov al,[si]
cmp al,00
jne l2
inc si
dec cx
l2: mov dl,[si]
add dl,30h
mov ah,02h
int 21h
inc si
loop l2
endm
.model small
.stack 100h
.data
str1 db 10,13,'Enter a number(BCD) $'
str2 db 10,13,'Sum(BCD): $'
num1 db 20 dup(0)
num2 db 20 dup(0)
sum db 20 dup(0)
len1 dw 0
len2 dw 0
len3 dw 0
.code
mov ax,@data
mov ds,ax
print str1
read num1,loop1,jump1
mov len1,cx
print str1
read num2,loop2,jump2
mov len2,cx
mov si,len1
mov di,len2
mov ax,len1
cmp ax,len2
jc jump3
mov bx,len1
mov cx,len2
jmp jump4
jump3: mov bx,len2
mov cx,len1
jump4: inc bx
mov len3,bx
clc
loop3: dec si
dec di
dec bx
mov al,num1[si]
adc al,num2[di]
aaa
mov sum[bx],al
loop loop3
mov al,00
rcl al,01
mov cx,si
cmp cx,00
je jump5
rcr al,01
loop4: dec si
dec bx
mov al,num1[si]
adc al,00
aaa
mov sum[bx],al
loop loop4
jmp jump6
jump5: mov cx,di
cmp cx,00
je jump7
rcr al,01
loop5: dec di
dec bx
mov al,num2[di]
adc al,00
aaa
mov sum[bx],al
loop loop5
jump6: mov al,00
rcl al,01
jump7: dec bx
mov sum[bx],al
print str2
printnum sum,len3,loop6
mov ah,4ch
int 21h
end
Subscribe to:
Posts (Atom)