標準の 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