如何在Nasm程序中替换特定字符

Ale*_*eev 5 assembly nasm x86-16

我想用'#'字符替换dbyte中的空格,并且db应该通过堆栈传递给过程。

我已经写了下一个代码片段,并且替换可以正常工作,但是我不明白如何func正确地将db传递给过程。

org 0x100 
    push array
    call func
    mov bp, sp 
    mov bx, [bp]
    ret 

loop:
    mov al, byte[bx+si]
    cmp al, 0
     jz func
    cmp al , ' '
     jnz loop
    mov byte[bx+si], '#'
    inc si
    jmp loop
    ret

func:  
    push bp  
    mov bp, sp  
    mov bx, [bp + 4]    
    call loop
    mov [bp + 4], bx
    pop bp  
    ret 4 

array db "a b c", 0
Run Code Online (Sandbox Code Playgroud)