dos_compilers/Microsoft Cobol v5/SAMPLES/ASMDEMO/ADDEM.ASM
2024-06-30 15:35:16 -07:00

60 lines
1.4 KiB
NASM

;
; (C) Micro Focus Ltd, 1989
;
; This routine is called by the cobol program ADD.CBL
; To assemble and link the routine to a .EXE file simply type:
;
; MASM ADDEM;
; LINK ADDEM;
;
public addem ;module id
cseg segment para public 'CODE'
assume cs:cseg
first_param equ dword ptr [bp+6] ;pointer to first parameter
second_param equ dword ptr [bp+10] ;pointer to second parameter
res_ult equ dword ptr [bp+14] ;pointer to third parameter
addem proc far
push bp ;preserve bp
mov bp,sp ;put current stack pointer in bp
push ds ;preserve ds,si,di,flags
push si
push di
pushf
mov ax,dseg ;initialize ds
mov ds,ax
; THE NEXT 6 STATEMENTS ARE THE VARIABLE PART
; OF THIS ROUTINE. MOST EVERYTHING ELSE IS NEEDED
; FOR EVERY ASSEMBLER ROUTINE CALLED BY COBOL.
les di,first_param ;get address of first parameter
mov al,es:[di] ;get value of first parameter
les di,second_param ;get address of second parameter
add al,es:[di] ;add value of 2nd param to first
les di,res_ult ;get address of res_ult
stosb ;return result to cobol program
xor ax,ax ;set return code, 0 in ax = success
popf ;restore registers
pop di
pop si
pop ds
pop bp
ret ;far return
addem endp
cseg ends
dseg segment para public 'DATA'
your_data db 'data'
; INCLUDE YOUR DATA HERE
dseg ends
end