wei@tiger.Princeton.EDU (P Wei) (10/21/87)
I am using IBM MASM 2.0 and MSC 4.0.
The problem is that I want to make a COM program written in assembly
language in which I call some comercial library routines written in C.
The first naive intuition is the following:
_text segment byte public 'code'
_text ends
_data segment word public 'data'
_data ends
dgroup group _text, _data ; forcing _text and _data to be
; in the same segment
_text segment byte public 'code'
assume cs:dgroup, ds:dgroup, ss:dgroup
extrn croutines:near
public _main
org 100h
_main proc near
call _croutines
int 20h
_main endp
_text ends
end _main
AND this doesn't work. The linker gave me three 'fixup overflow...'
messages.
It looks like I have to work on the start up code for MSC.
Well, can somebody give me some hints or suggestions ?
thanks
HP wei@princeton.UUCPrwhite@nusdhub.UUCP (10/23/87)
In article <200@tiger.Princeton.EDU>, wei@tiger.Princeton.EDU (P Wei) writes: > I am using IBM MASM 2.0 and MSC 4.0. > The problem is that I want to make a COM program written in assembly > language in which I call some comercial library routines written in C. [ Code that crashed the linker [etc] deleted. My version of Microsoft C came with a program to make it's executables into .COM programs. My other question is WHY? everythign you can do with .COM you can do with .EXE. The load is a fraction longer to accomidate runtime relocation but the memory usage, speed, terminate and stay resident abilities [etc] are all equally effective. [This is now also true for device driver and etc. If the program you are writing is excessively small, the libraries are gonna grow it without mercy, making it just as wasy to call the asm routines from main() durring the first execution.] Remember, the relocation information is removed durring load so the in memory cost is comprable even though the disk space used is larger. Rob.
wei@tiger.Princeton.EDU (P Wei) (10/23/87)
Since many people asked why COM ? Here is the reason: I want to interface STSC APL with C. STSC APL can call assembly language rouines in COM form. I think I have to go through the start up code to change something there in order to get COM program and to be called from APL. HP wei@princeton.UUCP
fbaube@note.nsf.GOV (10/28/87)
>My other question is WHY? everythign you can do with .COM you can do >with .EXE. And, trying to make an .EXE out of a .COM is a pain. MIX C makes only .COM's, so I (will soon) have some monster-file management routines for whomever is similarly afflicted :-).