Tuesday, February 15, 2011

No. of words in a sentance

Share Orkut
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

Transfer a string from data segment to extra segment

Share Orkut
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

Share Orkut
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

Share Orkut
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

Share Orkut
.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)

Share Orkut
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

Wednesday, February 2, 2011

BCD Addition

Share Orkut
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