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

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

  1. TikTik

    TikTik Member

    Joined:
    20 Feb 2009
    Messages:
    241
    Likes Received:
    12
    Reputations:
    2
    На торренте для начинающих появилась классная раздача, сам ещё не смотрел только качаю

    http://rutracker.org/forum/viewtopic.php?t=3740249
     
  2. MTV

    MTV New Member

    Joined:
    16 Feb 2011
    Messages:
    180
    Likes Received:
    2
    Reputations:
    0
    Не могу додуматься...Ребят подскажите,как определить сколько в файле строк и сколько в каждой строке символов?
     
  3. DooD

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

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    442
    Reputations:
    288
    считать файл,посчитать кол-во байт 0dh,0ah.
     
  4. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Вопрос конкретнее надо задавать. На асме? Под винду?

    Если да, то вот самый простой вариант (но и медленный):
    Открываем файл, читаем его посимвольно до тех пор, пока не встретится символ "\n" (ASCII-код 10) (или можно отслеживать последовательность "\r\n"). Количество прочитанных символов до "\n" - это число символов в строке. Суммарное количество символов "\n" - это число строк.

    Для ускорения можно читать и обрабатывать файл блоками.
     
  5. DeepBlue7

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

    Joined:
    2 Jan 2009
    Messages:
    359
    Likes Received:
    50
    Reputations:
    12
    Простой вопрос - какими командами ассемблера можно записать значение на оффсет ?

    Т.е. на 00AD8200, к примеру, записать nop.
     
    #1145 DeepBlue7, 1 Oct 2011
    Last edited: 1 Oct 2011
  6. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    mov eax, 00AD8200h
    mov byte ptr[eax], 090h
     
    _________________________
    1 person likes this.
  7. MTV

    MTV New Member

    Joined:
    16 Feb 2011
    Messages:
    180
    Likes Received:
    2
    Reputations:
    0
    Что-то я не пойму.Почему завершается с ошибкой?У меня винда 7.Ребят,помогите :)
    Code:
    .386
    option casemap:none
    .model flat,stdcall
    ;######################################3
    includelib \masm32\lib\kernel32.lib
    include \masm32\include\kernel32.inc
    include \masm32\include\windows.inc
    ;######################################3
    .data
    _user db 'user32.dll',0
    _MessageBox db 'MessageBoxA',0
    buf db 'xD',0
    .code
    start:
    invoke LoadLibrary,addr  _user
    test eax,eax
    jz exit
    mov ebx,eax
    invoke GetProcAddress,ebx,addr _MessageBox
    push 0
    push 0
    push offset buf
    push 0
    call eax
    exit:
    invoke ExitProcess,0
    end start
    Все нашел ошибку,исправил...Отладчик мой любимый друг :)
     
    #1147 MTV, 1 Oct 2011
    Last edited: 1 Oct 2011
  8. web-magician

    web-magician New Member

    Joined:
    29 Sep 2011
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    народ у меня windows 7 64bit на нее пошел только FASMW и как мне кажется он отличается от MASM есть какие нибудь самоучители к нему???Хочу научиться и уже начал читать книгу Калашникова но MASM у меня не пашет...Подскажите что делать???
     
  9. DooD

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

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    442
    Reputations:
    288
    у меня тоже 7 х64 и я пишу на масме.скачай нормальный масм для винды.или вот попробуй мою http://splashed.ucoz.ru/setup.zip
     
    1 person likes this.
  10. Ins3t

    Ins3t Харьковчанин

    Joined:
    18 Jul 2009
    Messages:
    939
    Likes Received:
    429
    Reputations:
    139
    по фасму есть его же дока и даже на русском. а примеры калашникова переводятся на фасм за нефиг делать, достаточно прочесть пару тройку страниц официальной доки фасма.
     
  11. swt1

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

    Joined:
    16 Feb 2008
    Messages:
    306
    Likes Received:
    78
    Reputations:
    21
    http://msdn.microsoft.com/en-us/library/hb5z4sxd.aspx
     
    #1151 swt1, 4 Oct 2011
    Last edited: 4 Oct 2011
  12. bad_boy

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

    Joined:
    30 Dec 2004
    Messages:
    187
    Likes Received:
    33
    Reputations:
    3
    web-magician
    Тут http://wasm.ru/doclist.php?list=6#133 - Руководство к FASM на русском
    И тамошний форум читай.
     
    1 person likes this.
  13. Flisk

    Flisk Member

    Joined:
    4 Aug 2010
    Messages:
    147
    Likes Received:
    8
    Reputations:
    -2
    http://fasm.su - русскоязычний сайт по фасм, есть уроки. Правда, пока что очень мало инфы.

    Подскажите по примерам из книги Кип Ирвин по Масм.
    Есть такой пример, самый простой
    Я скопировал инклуд этот (Irvine32.inc и другие) в папку masm32\includes, скопировал либы. Но ничего не работает - если запускать как есть (т.е. с инклудом ), то идет ошибка:
    error LNK2001: unresolved external symbol _ExitProcess@4

    Если добавить (логично же) Irvine32.lib, то появляется огромная куча таких ошибок, вида
    error LNK2001: unresolved external symbol _ExitProcess@4
    irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _CloseHan
    dle@4
    irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _CreateFi
    leA@28
    irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _FormatMe
    ssageA@28
    irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _FlushCon
    soleInputBuffer@4
    irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _GetComma
    ndLineA@0
    irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _GetConso

    Что я делаю не так? помнится, d_x учился по этой книге. Или тут надо использовать "обычный" масм, а не масм32?

    upd. Извиняюсь, вопрос снят! надо добавить инклуды либ кернел32 и юзер32. Сообщение можете удалить, или оставить, вдруг кому пригодится.
     
    #1153 Flisk, 10 Oct 2011
    Last edited: 11 Oct 2011
  14. SkyLoader

    SkyLoader New Member

    Joined:
    5 Oct 2011
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Приветствую всех.
    Работаю в ida и в хексе этой программы. У меня есть такой вопрос:
    У меня есть проверка, при которой происходит действие jz loc_1000115D. Обычно я встречаю проверки, состоящие из двух ячеек в хексе (например 74 57), однако в этом случае у меня там стоит шесть ячеек (0F 84 A2 00 00 00).
    Когда мне надо заменить jz на jmp, то я меняю на EB (74 57 -> EB 57). Как мне поступить в случае с шестью ячейками? Я пробовал менять 0F на EB, то это приводит к ошибке.
     
  15. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Я библиотеку irvine из книги не использовал. Учил только команды, макросы, WinAPI, которого там немного было. То, что DOS'а там касалось, вообще не читал.
     
  16. Flisk

    Flisk Member

    Joined:
    4 Aug 2010
    Messages:
    147
    Likes Received:
    8
    Reputations:
    -2
    А почему так? Библиотека же упрощает ввод-вывод. Или ее минус в том, что приучает к посторонним либам, отучая от апи?

    Хотел еще спросить. Я нашел в Масм интересную либу, msvcrt.lib. Подскажите, как вызвать с нее какие-то функции? Нет ли какого-нибудь примера? Например, открытие и запись в файл? Я пробовал вызывать их через Call или Invoke, но не получается ничего.
     
  17. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Не использовал, потому что сам через АПИ все делал, да. Преимущественно GUI.

    msvcrt.lib - это старая библиотека рантаймов CRT (C, C++). Какие там интерфейсы вызовов, не знаю.
     
  18. DooD

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

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    442
    Reputations:
    288
    я юзаю сторонние либы когда средствами апи дольше получается.
    msvcrt это либа содержащая функции с.
    через инвок не вызываются там функции на сколько я помню,вызываются через пуш к примеру
    Code:
    push offset mode
    push offset fname
    call fopen
    + после вызова желательно выровнять стэк
    Code:
    add	esp, 8
    mov	[hFile], eax
    хэндл файла в eax.
     
  19. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    invoke это вообще-то макрос, который и раскрывается в push-push-...-call. Но в crt, скорее всего, действительно cdecl-функции, поэтому надо будет выравнивать стек руками.
     
  20. DooD

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

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    442
    Reputations:
    288
    я знаю что макрос,по идее если указать прототипы функции то возможно будет его применить.