COM: Difference between revisions

Jump to navigation Jump to search
21 bytes removed ,  5 years ago
m
Added a small amount of information and made nicer to read.
[unchecked revision][unchecked revision]
(added loading and see also sections)
m (Added a small amount of information and made nicer to read.)
Line 4:
==COM Files==
===Introduction===
COM files are extremely simple, makingexecutable themfiles. usefulThey ifare youuseful wantfor to loadloading programs butwithout you don't want to worrycomplications aboutlike relocating symbols, reading file headers, and other complicationsetc. However, their simplicity makescan make their usefulness limited, so you'll definitelymay want to support something more complex but useful, like [[ELF]], once your OS is advanced.
 
COM files were used by MS-DOS. They are raw binaries--, meaning there is no header data. Also, COM files are restricted to the size of one segment (a real-address mode segment, 64kb), minus 256 bytes. When a COM file is loaded, it is assumed that all code and data fits in one segment, and it is loaded to offset 0x100.
 
MS-DOS creates and stores an info structure starting at offset 0 and ending just before 0x100, called the Program Segment Prefix (PSP). The PSP is made just before starting the COM program. More info about the PSP can be found [http://heim.ifi.uio.no/~stanisls/helppc/program_segment_prefix.html here]. PSP Unlessis youonly planrequired onfor supporting actualrunning DOS programs, you don't need a PSP.
 
COM files usually terminate with a RET instruction. The operating system starts the COM program using a CALL instruction, so RET returns to the OS, allowing any cleanup (like restarting the command prompt) to be handled by the OS.
 
COM files usually terminate with a RET instruction. The operating system starts the COM program using a CALL instruction, so RET returns to the OS, allowing any cleanup (like restarting the command prompt).
===Loading===
To load a COM file you need to load it to a low memory location, setpoint ds and es to be pointing to the start of the file with an 0x100 org, and jump to the start, with offset 0x100.
==See also==
===Executables===
4

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.

Navigation menu