Memory Model Programming & Segment Information
Model TINY Data and code fit in one 64K segment. All code and data are accessed via near pointers. SMALL 64k data segment max and 64k code segment max. All code and data are accessed via near pointers. COMPACT 1Mb data segment max and 64K code segment max. Code is accessed via near pointers, data is accessed via far pointers. No array can be greater than 64K MEDIUM 64K data segment max and 1Mb code segment max. Code is accessed via far pointers, data is accessed via near pointers. LARGE 1Mb data segment max and 1Mb code segment max. All code and data are accessed via far pointers. No single element can be greater than 64K. HUGE 1Mb data segment max and 1Mb code segment max. All code and data are accessed via far pointers. This is the only model where arrays can be larger than 64K. In this mode is C will normalize all data pointers to avoid segment wrapping. Small Memory Model Directive Segment Alignment Combine Class .CODE _TEXT WORD PUBLIC 'CODE' .DATA _DATA WORD PUBLIC 'DATA' .CONST CONST WORD PUBLIC 'CONST' .DATA? _BSS WORD PUBLIC 'BSS' .STACK STACK PARA STACK 'STACK' Compact Memory Model Directive Segment Alignment Combine Class .CODE _TEXT WORD PUBLIC 'CODE' .FARDATA FAR_DATA PARA private 'FAR_DATA' .FARDATA? FAR_BSS PARA private 'FAR_BSS' .DATA _DATA WORD PUBLIC 'DATA' .CONST CONST WORD PUBLIC 'CONST' .DATA? _BSS WORD PUBLIC 'BSS' .STACK STACK PARA STACK 'STACK' Medium Memory Model Directive Segment Alignment Combine Class .CODE name_TEXT WORD PUBLIC 'CODE' .DATA _DATA WORD PUBLIC 'DATA' .CONST CONST WORD PUBLIC 'CONST' .DATA? _BSS WORD PUBLIC 'BSS' .STACK STACK PARA STACK 'STACK' Large or Huge Memory Models Directive Segment Alignment Combine Class .CODE name_TEXT WORD PUBLIC 'CODE' .FARDATA FAR_DATA PARA private 'FAR_DATA' .FARDATA? FAR_BSS PARA private 'FAR_BSS' .DATA _DATA WORD PUBLIC 'DATA' .CONST CONST WORD PUBLIC 'CONST' .DATA? _BSS WORD PUBLIC 'BSS' .STACK STACK PARA STACK 'STACK' - all segments fall into DGROUP except for ???_TEXT, FAR_DATA and FAR_BSS - see ASM DIRECTIVES