Advertisement
Guest User

Untitled

a guest
Nov 3rd, 2018
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. INCLUDE IO.ASM
  2.  
  3. .286
  4.  
  5. .MODEL SMALL
  6.  
  7. .STACK 128
  8.  
  9. .DATA
  10.     ARR         DW 128 DUP(?)
  11.     N           DW ?
  12.     ELEM_SIZE   DW TYPE ARR
  13.     ARR_SIZE    DW 0
  14.  
  15. .CODE
  16. main    PROC
  17.     MOV     AX, @data               ; LOAD DATA SEGMENT
  18.     MOV     DS, AX
  19.  
  20.     inint   N                       ; READ ARRAY
  21.     MOV     CX, N                   ;
  22.     MOV     BX, 0                   ;
  23. _loop_read:                         ;
  24.         inint   ARR[BX]             ;
  25.         ADD     BX, ELEM_SIZE       ;
  26.     LOOP _loop_read                 ;
  27.  
  28.     MOV     BX, 0                   ;
  29.     MOV     CX, N                   ;
  30.     DEC     CX                      ;
  31.    
  32.     MOV     AX, N                   ; CALCULATE ARRAY SIZE
  33.     MUL     ELEM_SIZE               ;
  34.     MOV     ARR_SIZE, AX            ;
  35. _selection_sort:
  36.         MOV     DI, BX              ; MIN IDX TO DI
  37.        
  38.         MOV     SI, BX
  39.         ADD     SI ,ELEM_SIZE
  40.        
  41.         _loop_find_min:
  42.         CMP     SI, ARR_SIZE
  43.         JGE      _iter
  44.  
  45.             MOV     AX, ARR[DI]
  46.             CMP     AX, ARR[SI]
  47.             JL      _skip_min_iter
  48.            
  49.             MOV     DI, SI
  50.  
  51.             _skip_min_iter:
  52.             ADD     SI, ELEM_SIZE
  53.         JMP     _loop_find_min
  54.    
  55.     _iter:    
  56.         ; SWAP ARR[BX] AND MIN
  57.  
  58.         MOV     AX, ARR[BX]
  59.         XCHG    AX, ARR[DI]
  60.         MOV     ARR[BX], AX
  61.  
  62.         ADD     BX, ELEM_SIZE
  63.     LOOP    _selection_sort
  64.  
  65.     MOV     BX, 0
  66.     MOV     CX, N
  67. _loop_print:                        ;
  68.         outint   ARR[BX], 3         ;
  69.         ADD     BX, ELEM_SIZE       ;
  70.     LOOP _loop_print                ;
  71.  
  72.     MOV     AX, 4c00h
  73.     INT     21h
  74. main    ENDP
  75.         END main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement