[ Assembler ] — начинающим: задаем вопросы

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by !_filin_!, 25 May 2007.

  1. [n]-c0der

    [n]-c0der Member

    Joined:
    3 Feb 2009
    Messages:
    83
    Likes Received:
    24
    Reputations:
    -1
    Code:
    format PE GUI 4.0
    entry _start
    section '.code' code readable executable import writeable
    _start:
            mov eax,5
            add eax,4
                       
    FASM. =) переходи на него, он лучший.
     
  2. 0verbreaK

    0verbreaK Elder - Старейшина

    Joined:
    30 Apr 2008
    Messages:
    318
    Likes Received:
    42
    Reputations:
    -3
    diznt Создай файл с расширением bat со следующим кодом и запусти его
    Code:
    ;@echo off
     ;goto make
    
    
     .386 
    .model flat,stdcall 
    option casemap: none
    .code 
     start: 
     mov eax, 2 
     add eax, 3 
     ret 
     end start 
    
     :make
     
     \masm32\bin\ml /c /Cp /coff proj1.bat
     \masm32\bin\link  /subsystem:windows proj1.obj
    
     del proj1.obj
    
     echo.
     pause
    
    
     
  3. diznt

    diznt Elder - Старейшина

    Joined:
    31 Jan 2008
    Messages:
    432
    Likes Received:
    164
    Reputations:
    -19
    Создал, пишет это

    Code:
    Microsoft (R) Macro Assembler Version 6.14.8444
    Copyright (C) Microsoft Corp 1981-1997.  All rights reserved.
    
     Assembling: proj1.bat
    MASM : fatal error A1000: cannot open file : proj1.bat
    Microsoft (R) Incremental Linker Version 5.12.8078
    Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
    
    LINK : fatal error LNK1181: cannot open input file "proj1.obj"
    Не удается найти D:\masm32\bin\proj1.obj
    
    Для продолжения нажмите любую клавишу . . .
     
  4. 0verbreaK

    0verbreaK Elder - Старейшина

    Joined:
    30 Apr 2008
    Messages:
    318
    Likes Received:
    42
    Reputations:
    -3
    Незнаю, из-за чего проблема, но может переустановка MASM'а, поможет или же перерегестрация переменных окружения
     
  5. De2Z

    De2Z New Member

    Joined:
    1 Jun 2009
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Скорее пути неправильно настроены или не из того каталога компилируете
     
  6. t1to

    t1to Banned

    Joined:
    5 Jun 2009
    Messages:
    5
    Likes Received:
    1
    Reputations:
    -5
    нубский вопрос по ассаблеру у меня masm32 как там компелировать код?
     
    1 person likes this.
  7. zeppe1in

    zeppe1in Elder - Старейшина

    Joined:
    12 Jul 2006
    Messages:
    343
    Likes Received:
    66
    Reputations:
    18
    MASM32\BIN\Ml.exe /c /coff test.asm
    MASM32\BIN\Link.exe /SUBSYSTEM:WINDOWS test.obj
    а вобще посмотри в примерах всякие батники для компиляции.
     
  8. swt1

    swt1 Elder - Старейшина

    Joined:
    16 Feb 2008
    Messages:
    306
    Likes Received:
    78
    Reputations:
    21
    2 t1to click'z

    ещё мб вариант компиляции
    bat.
    если
    Code:
    @echo off   if exist %1.obj del %1.obj
    где 1.название сохряняемого файла,то попробуй сохранить именно под 1, т.к. изначально настройки батника идут такие.

    zeppe1in,прав смотри батники для компл.
     
    #548 swt1, 16 Jun 2009
    Last edited: 16 Jun 2009
  9. t1to

    t1to Banned

    Joined:
    5 Jun 2009
    Messages:
    5
    Likes Received:
    1
    Reputations:
    -5
    не понял .......................
    вот у меня есть файл test.asm
    мне надо чтобы он стал test.exe
     
  10. KaZ@NoVa

    KaZ@NoVa Elder - Старейшина

    Joined:
    5 Jul 2008
    Messages:
    368
    Likes Received:
    438
    Reputations:
    -16
    Кхм, а гугл на что? "masm32 как там компилировать код" > http://www.hack-info.ru/showthread.php?t=26661
    Сам лично не юзал (либо слишком кратковременно). Из ассемблеров в основном работал в эмуляторе, юзал встроенный в С/Delphi, и недавно пришлось поюзать fasm. У него в комплекте относительно удобная средa разработки идёт. По крайней мере, кнопочка "Compile" там есть :) :D
     
    1 person likes this.
  11. oleandr

    oleandr New Member

    Joined:
    27 Apr 2009
    Messages:
    6
    Likes Received:
    2
    Reputations:
    -1
    Люди( а мб и нелюди :) ) помогите с подготовкой к экзамену сижу уже третий день читаю книги выучил вродь все билеты, не могу разобратся с "плоской памятью" что за херь и с чем ее едят. только на пальцах а не компьтерным языком ) т.к что то очень замутно...
     
  12. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    ну что что это просто придумали программисты
    что у тебя не сектора разные типа сектор данных сектор кода
    а все это расплющено в памяти на протяжении 4 гигабайт ) че хочешь и пихай все плоооско и пофиг как бы ))

    но на самом деле это не так ))) (но это тебе знать не надо за это винда отвечает)
     
    _________________________
  13. oleandr

    oleandr New Member

    Joined:
    27 Apr 2009
    Messages:
    6
    Likes Received:
    2
    Reputations:
    -1
    во во да это то самое я к преподу подошел он говорит тима каждая прога считает что ей 4 памяти дают, на самом деле это нет так, вот надо сказать про эту фигню поподробнее))
     
  14. KaZ@NoVa

    KaZ@NoVa Elder - Старейшина

    Joined:
    5 Jul 2008
    Messages:
    368
    Likes Received:
    438
    Reputations:
    -16
    В википедии есть определение. Также нашёл инфу по ссылке: http://mf.grsu.by/UchProc/livak/kursi/po/lections/le...
    Там написано:
    Если считать, что задача состоит из одного сегмента, который, в свою очередь, разбит на страницы, то фактически мы получаем только один страничный механизм работы с виртуальной памятью.

    Это подход называется плоской памятью.

    Чем оно отличается от страничной памяти - не ясно. Плоская память, это (наверное) - не сегментно-страничная. Т.к. сегментно-страничная трёхмерная: номер сегмента, номер страницы, смещение относительно начала страницы
     
  15. oleandr

    oleandr New Member

    Joined:
    27 Apr 2009
    Messages:
    6
    Likes Received:
    2
    Reputations:
    -1
    про эту страничную херь читал нихера не понял )) т.к незнаю даже что это за страничная фиготень)) вообще полнейшая опа :)
     
  16. oleandr

    oleandr New Member

    Joined:
    27 Apr 2009
    Messages:
    6
    Likes Received:
    2
    Reputations:
    -1
    а вот кстати еще вопросик, модификация адресов, тут про что рассказывать )) только щас заметил этот вопрос
     
  17. KaZ@NoVa

    KaZ@NoVa Elder - Старейшина

    Joined:
    5 Jul 2008
    Messages:
    368
    Likes Received:
    438
    Reputations:
    -16
    С памятью всё доволно просто. Приведу аналогии с массивами:
    Пускай у тебя есть линейный массив от 1 до n - это и будет линейная память.
    Если массив двумерный - страничная или сегментная (физически они будут расположены всё-равно в одну строку, т.е. следовать друг за другом, однако адресация для программиста становится двумерной)
    Трёхмерный - сегмент, страница, смещение.
     
  18. KaZ@NoVa

    KaZ@NoVa Elder - Старейшина

    Joined:
    5 Jul 2008
    Messages:
    368
    Likes Received:
    438
    Reputations:
    -16
    хз :) сходу этот термин вспомнить не могу. Вероятно, относится к какой-то конкретной модели?
    :rolleyes:
     
  19. oleandr

    oleandr New Member

    Joined:
    27 Apr 2009
    Messages:
    6
    Likes Received:
    2
    Reputations:
    -1
    спасибо за помощь :) незнаю как такой дуб как я сдал на 4, вообщем экзамен комплитед )) про модификацию надо было вообщем рассказать про "lea" и регистры модификаторы, ну еще что то я не стал уточнять :)
     
    1 person likes this.
  20. e4key

    e4key New Member

    Joined:
    24 Jul 2009
    Messages:
    24
    Likes Received:
    1
    Reputations:
    0
    Привет всем. Изучаю асм (компилятор fasm), буду иногда задавать здесь ламерские вопросы :)

    Итак 1 из них:

    Допустим есть ip. Нужно его обработать функцией inet_addr:

    invoke inet_addr, ip_addr

    Как теперь результат поместить в другую переменную?

    mov [ip], eax

    не получается - компилятор говорит, что размеры приемника и источника не совпадают. как я понял в таких случаях переменную ip нужно задавать так:

    ip dd ?

    правильно?