Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- INCLUDE IO.ASM
- .286
- .MODEL SMALL
- .STACK 128
- .DATA
- ARR DW 128 DUP(?)
- N DW ?
- ELEM_SIZE DW TYPE ARR
- ARR_SIZE DW 0
- .CODE
- main PROC
- MOV AX, @data ; LOAD DATA SEGMENT
- MOV DS, AX
- inint N ; READ ARRAY
- MOV CX, N ;
- MOV BX, 0 ;
- _loop_read: ;
- inint ARR[BX] ;
- ADD BX, ELEM_SIZE ;
- LOOP _loop_read ;
- MOV BX, 0 ;
- MOV CX, N ;
- DEC CX ;
- MOV AX, N ; CALCULATE ARRAY SIZE
- MUL ELEM_SIZE ;
- MOV ARR_SIZE, AX ;
- _selection_sort:
- MOV DI, BX ; MIN IDX TO DI
- MOV SI, BX
- ADD SI ,ELEM_SIZE
- _loop_find_min:
- CMP SI, ARR_SIZE
- JGE _iter
- MOV AX, ARR[DI]
- CMP AX, ARR[SI]
- JL _skip_min_iter
- MOV DI, SI
- _skip_min_iter:
- ADD SI, ELEM_SIZE
- JMP _loop_find_min
- _iter:
- ; SWAP ARR[BX] AND MIN
- MOV AX, ARR[BX]
- XCHG AX, ARR[DI]
- MOV ARR[BX], AX
- ADD BX, ELEM_SIZE
- LOOP _selection_sort
- MOV BX, 0
- MOV CX, N
- _loop_print: ;
- outint ARR[BX], 3 ;
- ADD BX, ELEM_SIZE ;
- LOOP _loop_print ;
- MOV AX, 4c00h
- INT 21h
- main ENDP
- END main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement