Wednesday, September 29, 2010

Program for to sort numbers into descending order

.MODEL SMALL
.STACK 100
.DATA
            NUM DW 0102H, 0154H, 0070H, 0005H
.CODE
            mov      ax, @data
            mov      ds, ax  
            mov      dx, 2   
loop2:   mov      cx, dx              
            dec       cx        
            mov      si, cx               
            add      si, si     
            mov      ax, num[si]
loop1:   cmp      num[si-2], ax   
            jae        next                 
            mov      di, num[si-2]    
            mov      num[si], di       
            dec       si                     
            dec       si                     
            dec       cx                    
                                               
                                               
            jnz        loop1              
                                               
next:     mov      num[si], ax       
                                               
                                               
            inc        dx                   
                                               
            cmp      dx, 4               
                                               
                                               
            jbe       loop2              
            mov      si, offset num
        mov          dh, 4
        mov          ch, 04h
l3:     mov     ax, num[si]
        inc            si                     
            inc        si
        dec ch
        jnz l3

            mov      ah, 4ch
            int         3h
end

Program for to sort numbers into ascending order

.MODEL SMALL
.STACK 100
.DATA
            NUM DW 0102H, 0154H, 0070H, 0005H
.CODE
            mov      ax, @data       
            mov      ds, ax  
            mov      dx, 2   
loop2 :  mov      cx, dx              
            dec       cx        
            mov      si, cx                           
            add      si, si     
            mov      ax, num[si]
loop1:   cmp      num[si-2], ax
                                               
            jbe       next                 
                                               
            mov      di, num[si-2]    
            mov      num[si], di       
            dec       si                     
            dec       si                     
            dec       cx                    
                                               
            jnz        loop1              
next:     mov      num[si], ax       
                                               
            inc        dx                   
                                               
            cmp      dx, 4               
                                               
            jbe       loop2              
            mov      si, offset num
           
        mov ch,04h
      
l3:        mov     ax, num[si]
        inc            si                     
            inc        si
        dec ch
        jnz l3
        
            mov      ah, 4ch            
            int         3h
end

Program for factorial using recursion.

.model small
data segment
            num      dw 08h                                                                        
data ends
code segment
assume cs:code,ds:data
            mov      ax,data            
            mov      ds, ax
            mov      ax, 01                          
            mov      bx, num                       
            call       fact                              
            mov      di, ax                           
            mov      bp, 2                           
            mov      bx, dx                          
            mov      bx, di                           
            dec       bp                               
            mov      ah, 4ch
            int         3h

fact       proc     near                             
            cmp      bx, 01             
            jz          l11                              
l12:       mul       bx                               
            dec       bx                               
            cmp      bx, 01                         
            jne        l12
            ret
l11:       mov      ax, 01                          
            ret                                           
            fact endp                                 
code ends
            end                   

Program for factorial

.model small
.data
a db 01H
b db 05H
.code

mov      ax, @data                   
mov      ds, ax
mov     al, a           
mov      bl, b                            
mov     bh, 0

x:mul bx

dec bl
jnz x
mov ah, 4cH
int 3H
end