You're trying to build a DOS program right? Since DOS programs run in 16-bit mode there's a limitation of 64 KB per segment (unlike 32-bit or 64-bit which are limited to 4 GB and 16 EB respectively). In order to overcome this limitation it is possible to create .EXE files with multiple segments (COM files do not support this) and use far pointers and function to access data or code in different segments. Most compilers expose this in the form of a memory model:
- TINY: One segment for code and data
- SMALL: One segment for code, one segment for data, the default setting for most DOS compilers
- MEDIUM: One segment for data, multiple segments for code
- COMPACT: One segment for code, multiple segments for data
- LARGE: Multiple segments for code, multiple segments for data
- HUGE: Multiple segments for code, multiple segments for data, support for arrays that are larger than 64 KB.