;; (C) David Vajda
;; 2025-08-14
;; nasm linux/debian gnu i586/amd64/i386 sort characters in string excersize
global _start
section .data
toSortStr: db "adjasdhajsdaasdaksqweqwasdasdasjdasdjlajsdlasds", 10, 13, 0
toSortStrLen: dq 0x0000000000000000
section .text
_start:
mov rcx, 0x00
mov rsi, toSortStr
loop1:
inc rcx
mov ah, [rsi]
inc rsi
cmp ah, 0x00
jne loop1
mov [toSortStrLen], rcx
mov rdx, [toSortStrLen]
mov rcx, toSortStr
mov rax, 0x04
mov rbx, 0x01
int 0x80
mov rsi, toSortStr
loop2:
mov ah, [rsi]
cmp ah, 0x00
je loop2end
mov rdi, rsi
loop3:
inc rdi
mov al, [rdi]
cmp al, 0x00
je loop3end
mov ah, [rsi]
mov al, [rdi]
cmp ah, al
jle cond1
mov ah, [rsi]
mov al, [rdi]
mov [rsi], al
mov [rdi], ah
cond1:
jmp loop3
loop3end:
inc rsi
jmp loop2
loop2end:
mov rdx, [toSortStrLen]
mov rcx, toSortStr
mov rax, 0x04
mov rbx, 0x01
int 0x80
mov rax, 0x01
mov rbx, 0x00
int 0x80