1

私はこのような構造体を持っています:

struct MESGE
     TEXT db 'Message',0
     mLen db 8
ends 

そして、それをprocに送信する必要があります。これにより、画面に次の行が表示されます。

proc OutMes, pMESG:MESGE

  push 0
  push chrsWritten
  push [pMESG.mLen]
  push [pMESG.TEXT]
  push [hStdOut]
  call [WriteConsoleA]

  ret
endp

これどうやってするの?パラメータに MESGE 型を使用すると、fasm がエラーを報告します。(MESGE を ptr として送信するために) dword 型を使用する場合、この構造体のメンバーを取得する方法がわかりません (実際には、オフセットによって取得できますが、この方法は好きではありません - 中に多くのメンバーがある場合) struct、構造は非常に複雑になります)

MASM では、次のように実行できます。

ShowMessage PROC hMes: dword
mov ebx,hMes
assume ebx:ptr MESG
...

しかし、FASM建設では

assume ebx:ptr MESG
or 
assume ebx:[ptr MESG]

エラーとして報告されました。これどうやってするの?

4

1 に答える 1

2

おそらく、仮想ディレクティブを探しています。

struct MESGE
        TEXT db 'Message',0
        mLen dd 8
ends

.code
        mov     ebx,pMESGE
        call    OutMes
        ret


virtual at ebx
        oMESGE MESGE
end virtual

proc OutMes
        push 0
        push dummy
        push [oMESGE.mLen]
        lea  eax,[oMESGE.TEXT]
        push eax
        push [hout]
        call [WriteConsoleA]
        ret
endp

.data

pMESGE  MESGE
dummy   rd 1
hout    rd 1
于 2012-01-23T18:58:31.347 に答える