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

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

  1. xGOR

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

    Joined:
    25 Nov 2007
    Messages:
    83
    Likes Received:
    38
    Reputations:
    -5
    А чем 6.14 плох?
     
  2. izlesa

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

    Joined:
    3 Jan 2008
    Messages:
    112
    Likes Received:
    32
    Reputations:
    5
    2xGOR
    ничем, он наверное имел ввиду что masm < 6.11 использует masm.exe и link.exe
    а версии => 6.11 так как выше написано было через ml.exe
     
  3. *Van*

    *Van* Elder - Старейшина

    Joined:
    14 Aug 2005
    Messages:
    365
    Likes Received:
    19
    Reputations:
    12
    скачай asmed - полезная штука, и с компилятором проблем не будет, и удобно
     
  4. izlesa

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

    Joined:
    3 Jan 2008
    Messages:
    112
    Likes Received:
    32
    Reputations:
    5
    туплю не подецки

    bl = 1Ah, al = 69h

    div bl

    ax = 104h

    Почему? должно быть 4?

    ЗЫ ступил. там ведь остаток в ah?
     
    #364 izlesa, 28 Jul 2008
    Last edited: 28 Jul 2008
  5. iv.

    iv. Elder - Старейшина

    Joined:
    21 Mar 2007
    Messages:
    1,183
    Likes Received:
    438
    Reputations:
    107
    Деление "слова на байт". Делимое находится в регистре AX,
    а делитель - в байте памяти или а однобайтовом регистре.
    После деления остаток получается в регистре AH, а частное -
    в AL. Так как однобайтовое частное очень мало (максимально
    +255 (шест.FF) для беззнакового деления и +127 (шест.7F) для
    знакового), то данная операция имеет ограниченное
    использование.

    (с) ассемблер абель
     
  6. -=Vlad=-

    -=Vlad=- New Member

    Joined:
    11 Jul 2008
    Messages:
    2
    Likes Received:
    3
    Reputations:
    0
    объясните компилятор подбирают по разрядности процессора или по разрядности ОС.
    например у меня Amd +64
     
    1 person likes this.
  7. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Бери Fasm обычный 32-х битный под винду.
    В любом случае он будет поддерживаться 32\64-битными процами\ОС
    А там уже в самом фасме при компиляции проги выберишь под что компилить
     
  8. -=Vlad=-

    -=Vlad=- New Member

    Joined:
    11 Jul 2008
    Messages:
    2
    Likes Received:
    3
    Reputations:
    0
    благодарю,ни где толком не написано
     
    2 people like this.
  9. metaldisc

    metaldisc Banned

    Joined:
    6 Aug 2008
    Messages:
    9
    Likes Received:
    1
    Reputations:
    0
    что подключать в фасме, чтобы не прописывать вручную импортируемые функции
     
  10. w_2k

    w_2k New Member

    Joined:
    23 Jul 2008
    Messages:
    29
    Likes Received:
    1
    Reputations:
    0
    Приветствую! Кто может дать пример перехвата прерывания(желательно комментированый), а то теоретически понимаю как, а написать проблема...
     
  11. 0verbreaK

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

    Joined:
    30 Apr 2008
    Messages:
    318
    Likes Received:
    42
    Reputations:
    -3
    w_2k можешь подробнее DOS или Windows
     
  12. zl0y

    zl0y Banned

    Joined:
    13 Sep 2006
    Messages:
    371
    Likes Received:
    270
    Reputations:
    109
    А в винде прерывания разве есть?

    include '..\..\include\win32ax.inc'
    .code
    start:
    invoke MessageBox,0,0,0,0
    invoke ExitProcess,0
    .end start
     
  13. 0verbreaK

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

    Joined:
    30 Apr 2008
    Messages:
    318
    Likes Received:
    42
    Reputations:
    -3
    zl0y int 2eh
     
  14. zl0y

    zl0y Banned

    Joined:
    13 Sep 2006
    Messages:
    371
    Likes Received:
    270
    Reputations:
    109
    Вобще то это не виндовое sysenter никаким боком не относиться к ней,в винде все сделанно посредством хуков.
    тыб еще сказал out или int 21 :)
     
  15. w_2k

    w_2k New Member

    Joined:
    23 Jul 2008
    Messages:
    29
    Likes Received:
    1
    Reputations:
    0
    Под ДОС:)
     
  16. Juda

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

    Joined:
    2 Aug 2008
    Messages:
    48
    Likes Received:
    8
    Reputations:
    0
    как скрыть вызов АПИ ф-и?

    как скрыть вызов АПИ ф-и?

    пробовал использовать метод Криса(masm32):
    ------------------------------------------
    пример вызова MessageBox
    .data
    lib db "user32.dll",0
    f db "MessageBoxA",0

    .code
    invoke LoadLibrary, addr lib
    invoke GetProcAddress, eax, addr funk

    push MB_OK
    push NULL
    push NULL
    push NULL
    push 0E0FFh (опкод jmp eax)
    jmp esp

    ---------------------------------------------
    вроде работает, но если после jmp esp идет ret валится на стадии выполнения.
    в чем бок?
    и какие еще есть способы скрытого вызова АПИ?
     
  17. w_2k

    w_2k New Member

    Joined:
    23 Jul 2008
    Messages:
    29
    Likes Received:
    1
    Reputations:
    0
    Хорошо, я примерно тут подразобрался...Но у меня вопрос, как узнать адрес нужного прерывания, адрес функции, как подставить свой адрес и с какое по какое место прогу надо оставлять в памяти?
     
  18. Piflit

    Piflit Banned

    Joined:
    11 Aug 2006
    Messages:
    1,249
    Likes Received:
    585
    Reputations:
    31
    Juda скрытие таблицы импорта или речь идет о другом?
     
  19. zl0y

    zl0y Banned

    Joined:
    13 Sep 2006
    Messages:
    371
    Likes Received:
    270
    Reputations:
    109
    Естественно будет падать,так как ты должен занести в стек адрес возврата перед вызовом после чего,после вызова апи сделать ret либо retn в зависимости от апишки,да и на новых процах запрещенно аппаратно исполнение в стеке(могу ошибаться).
     
    #379 zl0y, 8 Aug 2008
    Last edited: 8 Aug 2008
  20. 0verbreaK

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

    Joined:
    30 Apr 2008
    Messages:
    318
    Likes Received:
    42
    Reputations:
    -3
    zl0y об int 2eh
    http://z0mbie.daemonlab.org/ntoskrnl.html

    Можно использовать адреса API функций:

    Code:
    
    mov eax, address_of_API
    push argument1
    push argument2
    ....
    push argumentn
    call eax