Как запросить в tasm'e память на время выполнения программы? То бишь, что бы у меня допустим buffer db 64000 dup(0) не занимал место в .exe-шнике. Спасибо.
Ну так я и пишу: .data buffer db 64000 dup(0) .... бла бла бла Только вот exe-файл в результате занимает 65кб. А если убрать обьявление buffer, то 1кб. Потому и спрашиваю.
В масме .data - инициализированные, а .data? - неинициализированные "?" в тасме тоже че нить должно быть с "?"
Для выделения памяти на 64к целесообразно использовать функции типа VirtualAlloc. А также не лишним будет почитать Рихтера, хотя бы разделы про использование памяти. А использовать виртуальную секцию под такие объемы по меньшей мере непрактично. Я в нее обычно пишу хэндлы кусков, но никак не сами куски.
Тогда скажите как это правильно называется? Я и так, если можно так выразится, "в первом классе". Потому и вопросы такие задаю.
Правильно называется как n0p сказал - это виртуальная секция. Но сама концепция в корне не верна. Память надо ЗАПРАШИВАТЬ у операционной системы по необходимости! Для этого служат специальные функции типа упомянутой уже VirtualAlloc.
mov ah,48h ;get memory mov bx, needed_size_in_para ; 16-bytes int 21h jc @@error ; ax -> SEGMENT of allocated memory block ptr mov [allocDataSeg], ax push ax pop es ... push [allocDataSeg] pop es mov ah,49h ; free memory int 21h ...
env0der есть такая штука - ralf braun's interrupt list - рулез неимоверный. А на русском есть отличная штука - thelp - типа теперешних chm-ок.