как наиболее просто получить 128кб памяти под данные в мс дос ? как бы по идеи можно использовать два сегмента, но хотелось бы адресацию с использованием регистов edi,esi и при этом чтоб был реальный режим процессора.
XshStasX либо поставь перед тем местом, где планируется использовать edi, esi и т.д. .386 либо перед 16-разрядным кодом ставь db 66h то есть db 66h / mov ax,bx эквивалентно для 16-разрядного режима команде mov eax,ebx перед обращением к памяти ставь db 67h то есть db 67h / mov al,[si] соответствует mov al,[esi]
Mikl___ - как бы это ничего не даст т.к. в реальном режиме лимит сегмента равен 64К. Т.е. 32-битные регистры то использоваться будут, но при выходе за лимит получите исключение. А т.к. в реальном режиме исключения перекрываются в векторами прерываний, всё просто повиснет из-за того что в обработчик исключения передаётся код ошибки, а обработчик прерывания этого не ожидает -> несбалансированный стэк и зависание при выходе из обработчика. XshStasX почитай про Unreal Mode. Это тот же реальный режим, но лимиты сегментов увеличиваются до 4Гб. Если кратко - переходишь в PM, грузишь в сегментные регистры селекторы сегментов с лимитом 4Гб, возвращаешься в реальный режим. Лимиты сохраняются в теневой части сегментных регистров и получаешь реальный режим с сегментами в 4Гб.
XshStasX, Была такая малопопулярная модель памяти huge, там после любого подёргивания указателей они нормализировались (приводились к виду навроде xxxx:000y, хотя как когда — Zortech C умело предсказывал телодвижения и корректировал указатели только когда припирало).