nasmi586amd6420250814sort.asm

;; (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