Advertisement
Guest User

Untitled

a guest
Apr 18th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .186        
  2. assume   cs:code, ds:data, es:data
  3. code   segment para public 'code'
  4. start:
  5.    mov   ax, data
  6.    mov   ds, ax
  7.    mov   es, ax    
  8.  
  9.    mov   N, 0      
  10.    
  11.    
  12. GetStrLoop:        
  13.    lea   dx, sString
  14.    mov   ah, 9
  15.    int   21h      
  16.  
  17.    lea   dx, bNum
  18.    mov   ah, 0ah
  19.    int   21h      
  20.  
  21.    xor   bx, bx
  22.    mov   bl, bCount  
  23.  
  24.    test   bx, bx      
  25.    jz   Sort      
  26.    mov   bBuf[bx], 0  
  27.  
  28.  
  29.    mov   ax, 80
  30.    mul   N      
  31.    mov   di, ax
  32.    lea   si, bBuf  
  33. CopyLoop:
  34.    lodsb
  35.    mov   bStr[di], al
  36.    inc   di
  37.    cmp   al, 0
  38.    jne   CopyLoop  
  39.    inc   N      
  40.    mov   al, 0ah      
  41.    int   29h
  42.    jmp   GetStrLoop  
  43.  
  44. Sort:            
  45.    mov   cx, N    
  46.    dec   cx      
  47.    xor   si, si    
  48. SortLoop:        
  49.    lea   di, [si+1]
  50.    push   cx      
  51. SearchMinLoop:        
  52.    push   di    
  53.    push   si    
  54.    call   StrCompare  
  55.    jbe   SortNext  
  56.  
  57.    push   di      
  58.    push   si      
  59.    call   StrChange  
  60. SortNext:
  61.    inc   di      
  62.    loop   SearchMinLoop    
  63.    inc   si      
  64.    pop   cx      
  65.    loop   SortLoop
  66.  
  67.  
  68.    lea   dx, sResult
  69.    mov   ah, 9
  70.    int   21h
  71.  
  72.    mov   cx, N      
  73.    lea   bx, bStr  
  74. StrLoop:
  75.    mov   si, bx      
  76.    add   bx, 80      
  77. PrintLoop:
  78.    lodsb        
  79.    cmp   al, 0      
  80.    je   Next
  81.    int   29h      
  82.    jmp   PrintLoop
  83. Next:
  84.    mov   al, 0dh      
  85.    int   29h
  86.    mov   al, 0ah
  87.    int   29h
  88.    loop   StrLoop    
  89.  
  90.    lea   dx, sPress  
  91.    mov   ah, 9
  92.    int   21h
  93.  
  94.    mov   ah, 0      
  95.    int   16h
  96.  
  97.    mov   ax, 4c00h
  98.    int   21h      
  99.  
  100.  
  101. num1   equ   word ptr [bp+4]  
  102. num2   equ   word ptr [bp+6]  
  103. StrCompare   proc  
  104.    push   bp      
  105.    mov   bp, sp      
  106.    push   si di      
  107.    mov   ax, 80      
  108.    mul   num1
  109.    mov   si, ax      
  110.    mov   ax, 80
  111.    mul   num2
  112.    mov   di, ax      
  113. CmpLoop:
  114.    mov   al, bStr[si]
  115.    cmp   al, bStr[di]
  116.    jne   StrCmpRet  
  117.    inc   di
  118.    inc   si      
  119.    cmp   al, 0      
  120.    jne   CmpLoop    
  121. StrCmpRet:        
  122.    pop   di si      
  123.    pop   bp
  124.    ret   4    
  125. StrCompare   endp
  126.  
  127.  
  128. num1   equ   word ptr [bp+4]
  129. num2   equ   word ptr [bp+6]
  130. StrChange   proc  
  131.    push   bp      
  132.    mov   bp, sp  
  133.    push   cx si di
  134.    mov   ax, 80  
  135.    mul   num1
  136.    mov   si, ax  
  137.    mov   ax, 80
  138.    mul   num2
  139.    mov   di, ax  
  140.    mov   cx, 40  
  141. ChgLoop:
  142.    mov   ax, word ptr bStr[si]  
  143.    xchg   ax, word ptr bStr[di]
  144.    mov   word ptr bStr[si], ax
  145.    inc   si      
  146.    inc   si
  147.    inc   di
  148.    inc   di
  149.    loop   ChgLoop      
  150.    pop   di si cx
  151.    pop   bp
  152.    ret   4
  153. StrChange   endp
  154.  
  155. code   ends
  156.  
  157. data   segment   para public 'data'
  158. N   dw   0      
  159. sString   db   'Enter string: $'
  160. sResult   db   0ah,0ah,'Sorted strings: ',0dh,0ah,'$'
  161. sPress   db   0dh,0ah,'Press any key$'
  162.  
  163. bNum   db   80      
  164. bCount   db   ?      
  165. bBuf   db   80 dup (?)  
  166. bStr   label   byte      
  167. data   ends
  168.  
  169.    end   start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement