Поиск:

Ответ в темуСоздание новой темы Создание опроса
> выделение памяти 
:(
    Опции темы
joker332
Дата 8.12.2007, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 26.10.2007

Репутация: нет
Всего: нет



У меня не получается выделить сегмент оперативной память.При выделении мне возвращает СF=1
Код

.model small
.stack 100h
.data

msg_s db 'Enter any symbol  $'
msg_r db 'Error  $'

.code
    mov ax, @data
    mov ds, ax


    mov ah, 0
    mov al, 3
    int 10h
;memory
mov ah, 48h
mov bx, 40
int 21h
jc error
jmp rt
error:
    mov ah, 09h
    lea dx, msg_r
    int 21h
rt:
mov ah, 1
int 21h
mov ah, 4ch
int 21h
end
 
PM MAIL   Вверх
JAPH
Дата 8.12.2007, 14:15 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 8.1.2007
Где: Ленобласть

Репутация: 1
Всего: 23



Надо в заголовке exeшника в слове по файловому смещению 0Ch поставить слово по файловому смещению 0Ah, то есть приравнять максимально и минимально необходимый объём дополнительной памяти.


--------------------
Что непонятно - спрашиваем smile
PM MAIL ICQ   Вверх
joker332
Дата 8.12.2007, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 26.10.2007

Репутация: нет
Всего: нет



Можно по подродней пожалуста, а то я ничего не понял
PM MAIL   Вверх
JAPH
Дата 9.12.2007, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 8.1.2007
Где: Ленобласть

Репутация: 1
Всего: 23



DOS - однозадачная ОСь. Поэтому, когда выполняется ваша программа, ей уже распределена вся память. Поэтому попытка выделить ещё кусочек ни к чему не приводит.
Варианты: указать, что программе не нужно столько памяти - количество параграфов миниально и максимально необходимой дополнительной памяти оговорено в заголовке экзешника, по умолчанию максимум стоит 0FFFFh, то есть "распределить мне всё". Как это убрать в TASM`е, я не нашёл, а этот способ проще.
Есть и другой, он встречается в коде резидентных программ: прога изменяет размер занимаемой ею памяти (4Ah) на реальный. Тогда после выхода из неё (TSR) некоторое кол-во памяти остаётся свободным, и туда можно загрузить другую прогу. В вашем случае после 4Ah можно будет потихоньку распределять освобожденную память.



--------------------
Что непонятно - спрашиваем smile
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.3558 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.