I am creating a simple function that prints a character to the screen
STD_OUTPUT_HANDLE   equ -11
NULL                equ 0
global Start
extern ExitProcess, GetStdHandle, WriteConsoleA
section .bss
msg     resb    1
section .text
Start:
    push 'b'
    call Print
Print:
    ; Function Start
    push    ebp 
    mov     ebp,esp
    
    ; accepting the argument 
    mov     ebx , [esp + 8]
    mov     [msg],ebx
    
    ; eax = handle
    push    STD_OUTPUT_HANDLE
    call    GetStdHandle
    
    ; WriteConsoleA System call 
    push    NULL
    push    1
    push    msg
    push    eax
    call    WriteConsoleA 
    
    
    ; Funcion end
    mov     esp, ebp
    pop     ebp
    ret
When I remove the ret instruction the output is as expected is b but when I add it back the output changes to b., what's Happening ????
I am using the Nasm Assembler and the golink link
