в основном для экзешников все писали заглушки-либы на 21 прерывание, которые и прилинковывали к прогам. ну или самый минималистичный вариан - минимум либо полное отсутствие библиотечных вызовов и последующее усечение ком прог на нужное число байтов :) единственным компиллером у которого было четкое разделение функций по этому признаку был ватком. у них все функии были четко описаны как Romable или System dependent. те что Romable гарантированно не совались в операциоку-биос.