nasm Assembler - Sort


    ;; (C) David Vajda
    ;; Sat Dec 28 2024
    ;; Assembler, nasm, x86/i386/amd64/i586, Sort

    global _start
    section .data
    toSortString: db "28312931932193281932123", 10, 13
    toSortStringLen: dw 0
    section .text
    _start:

    mov esi, toSortString

    toSortLoopOuter:
    mov ah, [esi]
    cmp ah, 10
    je toSortLoopOuterEnd
    mov edi, esi
    toSortLoopInner:
    inc edi
    mov al, [edi]
    cmp al, 10
    je toSortLoopInnerEnd
    mov ah, [esi]
    mov al, [edi]
    cmp ah, al
    jle NoExChange
    mov ah, [esi]
    mov al, [edi]
    mov [esi], al
    mov [edi], ah
    NoExChange:
    jmp toSortLoopInner
    toSortLoopInnerEnd:
    inc esi
    jmp toSortLoopOuter
    toSortLoopOuterEnd:


    mov esi, toSortString
    mov ecx, 0
    count:
    mov ah, [esi]
    cmp ah, 10
    je countend
    inc ecx
    inc esi
    jmp count
    countend:

    mov edx, ecx
    inc edx
    inc edx
    mov ecx, toSortString
    mov eax, 0x04
    mov ebx, 0x01
    int 0x80

    mov eax, 0x01
    mov ebx, 0x00
    int 0x80


david@work:~/nasm20241228$ ./nasm20241228sort001
11111222222333333889999
david@work:~/nasm20241228$