Вопрос
В бэйсике есть такая вещь: динамические массивы, а как тоже самое реализовать на ассемблере?
Ответ
Есть такое хорошее прерывание — int 21h называется. А у этого прерывания есть такие хорошие функции:
(номер функци заносится в ah)
(параграф = 16 байт)
48h — выделение блока памяти:
bx — число выделяемых параграфов;
На выходе получаем: сf=1 — ошибка (код в ax)
cf=0 — нет ошибки. В ax — сегментный адрес памяти, bx — размер наибольшего свободного участка (в параграфах);
49h — освобождение блока памяти:
es — сегментный адрес освобождаемого блока;
на выходе cf=1 — ошибка (код в ax)
4ah — изменение длинны выделенного участка памяти:
es — сегментный адрес блока памяти; bx — нужное число параграфов на выходе: cf=1 — ошибка (код в ax)
Саму память ты можешь интерпретировать как душе пожелается — хоть массив байт, хоть массив слов и т.д.
Из конференции Expert_FAQ
Или если про мастдай то юзай HeapCreate, HeapAlloc, HeapReAlloc, HeapFree, HeapDestroy
Copyright 2000-2004 Сообщество Чайников
Контактная информация