Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .186
- assume cs:code, ds:data, es:data
- code segment para public 'code'
- start:
- mov ax, data
- mov ds, ax
- mov es, ax
- mov N, 0
- GetStrLoop:
- lea dx, sString
- mov ah, 9
- int 21h
- lea dx, bNum
- mov ah, 0ah
- int 21h
- xor bx, bx
- mov bl, bCount
- test bx, bx
- jz Sort
- mov bBuf[bx], 0
- mov ax, 80
- mul N
- mov di, ax
- lea si, bBuf
- CopyLoop:
- lodsb
- mov bStr[di], al
- inc di
- cmp al, 0
- jne CopyLoop
- inc N
- mov al, 0ah
- int 29h
- jmp GetStrLoop
- Sort:
- mov cx, N
- dec cx
- xor si, si
- SortLoop:
- lea di, [si+1]
- push cx
- SearchMinLoop:
- push di
- push si
- call StrCompare
- jbe SortNext
- push di
- push si
- call StrChange
- SortNext:
- inc di
- loop SearchMinLoop
- inc si
- pop cx
- loop SortLoop
- lea dx, sResult
- mov ah, 9
- int 21h
- mov cx, N
- lea bx, bStr
- StrLoop:
- mov si, bx
- add bx, 80
- PrintLoop:
- lodsb
- cmp al, 0
- je Next
- int 29h
- jmp PrintLoop
- Next:
- mov al, 0dh
- int 29h
- mov al, 0ah
- int 29h
- loop StrLoop
- lea dx, sPress
- mov ah, 9
- int 21h
- mov ah, 0
- int 16h
- mov ax, 4c00h
- int 21h
- num1 equ word ptr [bp+4]
- num2 equ word ptr [bp+6]
- StrCompare proc
- push bp
- mov bp, sp
- push si di
- mov ax, 80
- mul num1
- mov si, ax
- mov ax, 80
- mul num2
- mov di, ax
- CmpLoop:
- mov al, bStr[si]
- cmp al, bStr[di]
- jne StrCmpRet
- inc di
- inc si
- cmp al, 0
- jne CmpLoop
- StrCmpRet:
- pop di si
- pop bp
- ret 4
- StrCompare endp
- num1 equ word ptr [bp+4]
- num2 equ word ptr [bp+6]
- StrChange proc
- push bp
- mov bp, sp
- push cx si di
- mov ax, 80
- mul num1
- mov si, ax
- mov ax, 80
- mul num2
- mov di, ax
- mov cx, 40
- ChgLoop:
- mov ax, word ptr bStr[si]
- xchg ax, word ptr bStr[di]
- mov word ptr bStr[si], ax
- inc si
- inc si
- inc di
- inc di
- loop ChgLoop
- pop di si cx
- pop bp
- ret 4
- StrChange endp
- code ends
- data segment para public 'data'
- N dw 0
- sString db 'Enter string: $'
- sResult db 0ah,0ah,'Sorted strings: ',0dh,0ah,'$'
- sPress db 0dh,0ah,'Press any key$'
- bNum db 80
- bCount db ?
- bBuf db 80 dup (?)
- bStr label byte
- data ends
- end start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement