![]() |
|
|
![]()
|
|
| joker332 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 26.10.2007 Репутация: нет Всего: нет |
Приведите код выделения сегмента оперативной памьяти.Этот код не работает.Всегда возвращает С=1.Плиз Помогите
|
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 7 Всего: 158 |
DOS пытается выделить программе памяти столько, сколько указано в заголовке .exe по смещению 0Ch(в параграфах) - называется поле 'Maximum memory'(в интерпретации программы hiew). по умолчанию там стоит FFFFh параграфов(1 параграф = 10h(16)байт). т.е. FFFFh*10h = FFFF0h = 1048560. максимум. дос выделяет самый большой непрерывный блок. в случае .com-файлов никакого заголовка нет, соответственно .com-программе сразу выделяется максимальный блок.
следовательно, чтобы иметь возможность выделять память, надо умерить аппетит своей программы. есть два пути: 1. меняем поле в .exe-заголовке на значение, которое стоит в предыдущем поле(Minimum memory). у тебя там должно быть 11h. 2. меняем размер выделенного блока "руками":
|
|||
|
||||
| joker332 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 26.10.2007 Репутация: нет Всего: нет |
А как выделить в com файле??Можно пожалусста код.ПЛИЗ
|
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 7 Всего: 158 |
|
|||
|
||||
![]()
|
| Правила форума "Asm для начинающих" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm для начинающих | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |