Как реализовать динамическую память в ассемблере, вроде есть в биосе есть 21 прерывание и какая-то функция что-ли для выделения блока памяти, вот функцию не помню Кто знает, поделитесь опытом
21-е это в досе. тебе сюда hттp://www.google.com/search?hl=ru&q=ralf+braun+interrupt+list&lr= или сюда hттp://www.defora.org/docs/hardware/x86/inter61/INTERRUP.1ST
если нуна именно в биосе (например бут вирь) то нужно откоцать кусок от - доступная память в параграфах mov ax,word ptr ds:[0413h] sub ax,0019h ;25k mov word ptr ds:[0413h],ax в ds - 0h
Короче проблема: выделяю память, читаю туда файл, записываю от туда файл , файлы отличаются - почему? может кто поможет? кусок кода ниже mov ax, 0x06 mov bx, ax mov ah, 48h int 21h jc err_mem mov word ptr cs:[handlemem],ax mov ds, ax mov ax, 3f00h mov bx, word ptr cs:[HandleOpen] xor dx, dx mov cx, word ptr cs:[Len+2] int 21h xor dx, dx mov ah, 40h mov bx, word ptr cs:[HandleCrea] mov ds, word ptr cs:[handlemem] mov cx, Word ptr cs:[Len+2] int 21h 1022812631__cript.asm
Зачем же тебе динамическую, не проще ли стеком обойтись типа sub esp,[количество нужных байтов / 2] или тебе из принципа?
neyron слушай мужик а четы собственно ожидал? ты указатель чтения записи переместил к концу файла дабы узнать размер. А кто будет возвращать его к началу!!! ты хоть проверяй ax после чтения в ax возвращается количество реально прочитаных байт и ты получаеш 0! потому что читать то нечего. вообще код очень плохой аллочить ты пытаешся больше памяти чем используеш. вообще то нужно файл читать кусочками а не сразу целым куском. прога маленькая можно было и пограмотней написать. прежде чем кричать караул помогите неплохо было бы пройтись по проге дебагом (для доса рекомендую degluck и avputil). извени что грозно отругал сам заслужил.