Ничем по сути. Адресация понимается как "сегмент:смещение". DS - Data Segment, хранит в себе селектор сегмента данных. Если не указано явно, по умолчанию считается, что сегмент DS. RTFM wasm.ru/publist.php?list=24
ответ может быть не полным сори сам недавно учу В старых моделях памяти до 32 разрядных виндов ds это сегментный регистр в современных виндах модель памяти плоская cмоти заголовок файла asm .586 .model flat,stdcall ---flat это плоская модель памяти option casemap:none ....................... для прикладного програмиста это означает что между call XXX и сall ds:XXXX разницы нет другое дело если приходится работать с разными процессами в этом случае приходится учитывать значение этого регистра в разных процесах он разный.Почитай о моделях памяти например В уроках Iczelion'a удачи d51
а как записать что то в ds или считать? ds это часть edi или нет? или это отдельный регистр? сколько в ds бит?
понятно... то есть если call X попадает туда куда надо, то можно считать, что это еквивалентно записи call ds:X? там никакой подставы с какими нибудь данными нет?
call X эквивалентен call cs:X (команды, связанные с EIP по умолчанию связывают данные с сегментным регистром CS). В общем случае call X = call cs:X != call ds:X, потому что это будут разные ВИРТУАЛЬНЫЕ адреса. Но в винде база cs = базе ds, так что ЛИНЕЙНЫЕ адреса будут одинаковые. [added] Упс, не заметил, уже сказали...
shob_vas Приведи реальный пример, что идёт на месте X, т.к. от контекста очень зависит использование сегментных регистров.