標準の COBOL 呼び出し規則に従うアセンブラー サブプログラムは、次のような形式をとります。
アセンブラー サブプログラムは、複数のコードとデータセグメントで構成できます。 初期コードのエントリポイントが最初のコードセグメントの開始点に定義されていることを確認するか、 End 指令の後に明示的にエントリポイントのラベルを定義しているかを確認する必要があります。
;--------------------------------------------------------- ; Example skeleton assembler subprogram ;--------------------------------------------------------- ;--------------------------------------------------------- ; Declare local data segment(s) ;--------------------------------------------------------- .386 .MODEL FLAT ; _DATA segment dword use32 public 'DATA' ... data used by subprogram ... _DATA ends ;--------------------------------------------------------- ; Declare local code segment(s) ;--------------------------------------------------------- _TEXT segment dword use32 public 'CODE' assume cs:flat, ds:flat, ss:flat, es:flat ;--------------------------------------------------------- ; Declare public entry point ;--------------------------------------------------------- PUBLIC EXAMPLE ;--------------------------------------------------------- ; Declare equates for accessing params(COBOL convention) ;--------------------------------------------------------- param1 equ ebp+8 param2 equ ebp+12 EXAMPLE proc near push ebp ; preserve ebp mov ebp,esp ; address params on stack push esi ; preserve esi, edi push edi ... program code ... mov esi,[param1] ; access parameter 1 ... mov esi,[param2] ; access parameter 2 ... mov eax,{return-code} ; set up ; return code ... pop edi pop esi ; restored esi,edi pop ebp ; restored ebp ret EXAMPLE endp _TEXT ends end