Динамическая память в Ассемблере

Тема в разделе "WASM.ASSEMBLER", создана пользователем BladeRunner, 23 авг 2005.

  1. BladeRunner

    BladeRunner New Member

    Публикаций:
    0
    Регистрация:
    23 авг 2005
    Сообщения:
    2
    Адрес:
    Russia
    Как реализовать динамическую память в ассемблере, вроде есть в биосе есть 21 прерывание и какая-то функция что-ли для выделения блока памяти, вот функцию не помню

    Кто знает, поделитесь опытом
     
  2. Loger

    Loger New Member

    Публикаций:
    0
    Регистрация:
    28 авг 2003
    Сообщения:
    71
    Адрес:
    Minsk
    Если под виндой, то

    VirtualAlloc (для больших блоков), HeapAlloc либо msvcrt.malloc
     
  3. infern0

    infern0 New Member

    Публикаций:
    0
    Регистрация:
    7 окт 2003
    Сообщения:
    811
    Адрес:
    Russia


    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
     
  4. BladeRunner

    BladeRunner New Member

    Публикаций:
    0
    Регистрация:
    23 авг 2005
    Сообщения:
    2
    Адрес:
    Russia
    в досе в досе я имел ввиду:)

    THX
     
  5. doctor_Ice

    doctor_Ice New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2005
    Сообщения:
    845
    Адрес:
    Russia
    если нуна именно в биосе (например бут вирь) то нужно откоцать кусок от - доступная память в параграфах



    mov ax,word ptr ds:[0413h]

    sub ax,0019h ;25k

    mov word ptr ds:[0413h],ax



    в ds - 0h
     
  6. neyron

    neyron New Member

    Публикаций:
    0
    Регистрация:
    23 дек 2004
    Сообщения:
    2
    Адрес:
    Russia
    Короче проблема: выделяю память, читаю туда файл, записываю от туда файл , файлы отличаются - почему? может кто поможет? кусок кода ниже

    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

    [​IMG] 1022812631__cript.asm
     
  7. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    Зачем же тебе динамическую, не проще ли стеком обойтись типа sub esp,[количество нужных байтов / 2] или тебе из принципа?
     
  8. doctor_Ice

    doctor_Ice New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2005
    Сообщения:
    845
    Адрес:
    Russia
    neyron

    слушай мужик а четы собственно ожидал? ты указатель чтения записи переместил к концу файла дабы узнать размер. А кто будет возвращать его к началу!!! ты хоть проверяй ax после чтения в ax возвращается количество реально прочитаных байт и ты получаеш 0! потому что читать то нечего. вообще код очень плохой аллочить ты пытаешся больше памяти чем используеш. вообще то нужно файл читать кусочками а не сразу целым куском. прога маленькая можно было и пограмотней написать. прежде чем кричать караул помогите неплохо было бы пройтись по проге дебагом (для доса рекомендую degluck и avputil). извени что грозно отругал :) сам заслужил.