Tested with Asmc Version 2.31.17 :
.386
.model flat,stdcall
option casemap:none
MessageBoxA PROTO :DWORD,:DWORD,:DWORD,:DWORD
ExitProcess PROTO :DWORD
.data
soffptr db 'Hello',0
.code
start:
invoke MessageBoxA,0,soffptr,0,0
invoke ExitProcess,0
END start
Disassembling the object module with Agner Fog's objconv :
.386
option dotname
.model flat
public _start
extern _ExitProcess@4: near
extern _MessageBoxA@16: near
_text SEGMENT DWORD PUBLIC 'CODE' ; section number 1
_start PROC NEAR
push 0 ; 0000 _ 6A, 00
push 0 ; 0002 _ 6A, 00
movzx eax, byte ptr [_soffptr] ; 0004 _ 0F B6. 05, 00000000(d)
push eax ; 000B _ 50
push 0 ; 000C _ 6A, 00
call _MessageBoxA@16 ; 000E _ E8, 00000000(rel)
push 0 ; 0013 _ 6A, 00
; Note: Function does not end with ret or jmp
call _ExitProcess@4 ; 0015 _ E8, 00000000(rel)
_start ENDP
_text ENDS
_data SEGMENT DWORD PUBLIC 'DATA' ; section number 2
_soffptr label byte
db 48H, 65H, 6CH, 6CH, 6FH, 00H ; 0000 _ Hello.