FLAT , USE32. USE32 FLAT , 64 , , , 32- , 16- . , CS. SEGMENT ASSUME CS:xxx, xxx - , FLAT ASSUME CS:FLAT.
ASSUME , , , . , 32- , 4 . , , FLAT , , , . , ASSUME DS:FLAT , DS. , ASSUME DS:_DATA , DS _DATA, .
, :
_DATA SEGMENT PUBLIC USE32
var DD ?
_DATA ENDS
_TEXT SEGMENT PUBLIC PARA 'CODE' FLAT
mov eax, [zero]
mov [var],eax
ASSUME DS:FLAT
mov eax, [zero]
mov [var],eax
ASSUME CS:_TEXT
ASSUME DS:_DATA
mov eax, [zero]
mov [var],eax
zero DD 0
_TEXT ENDS
END
, :
00000000: 2E A1 00 00 00 00 mov eax,dword ptr cs:[zero]
00000006: 2E A3 00 00 00 00 mov dword ptr cs:[var],eax
CS (2E), zero var. , , , CS , _TEXT _DATA, , .
, , ASSUME DS:_FLAT:
0000000C: A1 00 00 00 00 mov eax,dword ptr [zero]
00000011: A3 00 00 00 00 mov dword ptr [var],eax
, CS, DS . DS zero var , DS CS, .
, , ASSUME DS:_DATA ASSUME CS:_TEXT, , , FLAT :
00000016: 2E A1 00 00 00 00 mov eax,dword ptr cs:[zero]
0000001C: A3 00 00 00 00 mov dword ptr [var],eax
, CS _TEXT DS _DATA. zero CS, var DS, .
, FLAT USE32 SEGMENT , CS, :
error A2074:cannot access label through segment registers
, , , _TEXT CS, - , _DATA.
.MODEL FLAT , . USE32 FLAT , FLAT.