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