Pelles C forum

Assembly language => Assembly discussions => Topic started by: Vortex on May 07, 2026, 09:33:49 PM

Title: Burst Sort sample
Post by: Vortex on May 07, 2026, 09:33:49 PM
Hello,

Inspired by zedd151 from the Masm Forum, here is a Poasm example using a C module to sort strings :

http://masm32.com/board/index.php?topic=13289.0

.386
.model flat,stdcall
option casemap:none

ExitProcess PROTO :DWORD
printf PROTO C :DWORD,:VARARG
BurstSortStrings PROTO C :DWORD,:DWORD,:DWORD

.data

s1      db 'lemon',0
s2      db 'apple',0
s3      db 'orange',0
s4      db 'banana',0
frmt    db '%s',13,10,0

strtabl dd OFFSET s1,OFFSET s2,OFFSET s3,OFFSET s4

.code

start:

    call    main
    invoke  ExitProcess,0

main PROC USES esi ebx

    invoke  BurstSortStrings,ADDR strtabl,4,0

    mov     ebx,4
    mov     esi,OFFSET strtabl
@@:
    invoke  printf,ADDR frmt,DWORD PTR [esi]
    add     esi,4
    dec     ebx
    jnz     @b
    ret

main ENDP

END start
Title: Re: Burst Sort sample
Post by: Vortex on May 10, 2026, 11:55:33 AM
Here is the 64-bit sample :

ExitProcess PROTO :QWORD
printf PROTO :QWORD,:VARARG
BurstSortStrings PROTO :QWORD,:QWORD,:QWORD

.data

s1      db 'lemon',0
s2      db 'apple',0
s3      db 'orange',0
s4      db 'banana',0
frmt    db '%s',13,10,0

strtabl dq OFFSET s1,OFFSET s2,OFFSET s3,OFFSET s4

.code

start:

    sub     rsp,8+4*8
    call    main
    invoke  ExitProcess,0

main PROC USES rsi rbx PARMAREA=4*SIZEOF QWORD

    invoke  BurstSortStrings,ADDR strtabl,4,0

    mov     rbx,4
    mov     rsi,OFFSET strtabl
@@:
    invoke  printf,ADDR frmt,QWORD PTR [rsi]
    add     rsi,SIZEOF QWORD
    dec     rbx
    jnz     @b
    ret

main ENDP

END start