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

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

  1. AnGeI

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

    Joined:
    8 Dec 2008
    Messages:
    395
    Likes Received:
    79
    Reputations:
    16
    totenkopf
    Где находится метка @b?
     
  2. Ins3t

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

    Joined:
    18 Jul 2009
    Messages:
    939
    Likes Received:
    429
    Reputations:
    139
    учи матчасть. анонимные метки.
     
  3. NetAng

    NetAng Member

    Joined:
    29 Dec 2010
    Messages:
    75
    Likes Received:
    12
    Reputations:
    5
    Написал dll'ку, при её использовании с помощью FASM ошибок нет, но когда dll использую с VS то всё работает но выходит предупреждение:
    [​IMG]
    Code:
    format PE GUI 4.0 DLL
    entry DllEntryPoint
    
    include 'win32a.inc'
    
    section '.text' code readable executable
    
    proc DllEntryPoint hinstDLL,fdwReason,lpvReserved
    	mov	eax,TRUE
    	ret
    endp
    
    
    proc PrintMSG, param1, param2
      invoke MessageBox,0,[param1],[param2],MB_OK
    	ret
    endp
    
    section '.idata' import data readable writeable
        library user,'USER32.DLL'
    
      import user,\
    	 MessageBox,'MessageBoxA'
      
    
    section '.edata' export data readable
    
      export 'TEST.DLL',\
    	 PrintMSG,'PrintMSG'
    
    section '.reloc' fixups data discardable
    Code:
    format PE GUI 4.0
    entry start
    include 'win32a.inc'
    
    section '.text' code readable executable
    
      start:
    	invoke	PrintMSG, message, Title
    	invoke	ExitProcess,0
    
      Title db 'Title',0
      message db 'Hello, World!',0
      
    section '.idata' import data readable writeable
    
      library kernel,'KERNEL32.DLL',\
    	  msg,'testdll.DLL'
    
      import kernel,\
    	 ExitProcess,'ExitProcess'
    
      import msg,\
    	 PrintMSG,'PrintMSG'
    
    Заголовочный файл:
    Code:
    #ifndef  __DLL_H__
    #define  __DLL_H__
    #ifdef __cplusplus
        extern "C" {
    #endif
    
    void PrintMSG(char *, char*);
    
    #ifdef __cplusplus
        }
    #endif
    #endif
    
    
    main.cpp:
    Code:
    #pragma comment(lib, "testdll")
    #include "DllFunc.h"
    
    int main()
    {
        PrintMSG("Hello", "Title");
    	return 0;
    }
    Подскажите что я не правильно делаю?
     
  4. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    В fasm по умолчанию используется stdcall, в студии cdecl.
    Угадай в чем проблема
     
    _________________________
  5. NetAng

    NetAng Member

    Joined:
    29 Dec 2010
    Messages:
    75
    Likes Received:
    12
    Reputations:
    5
    а как заставить fasm использовать cdecl?
     
  6. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    В fasm есть соответствующие директивы, погугли.
    Можешь в студии попробовать вместо
    void PrintMSG(char *, char*);
    написать
    void __stdcall PrintMSG(char *, char*);
     
    _________________________
    1 person likes this.
  7. NetAng

    NetAng Member

    Joined:
    29 Dec 2010
    Messages:
    75
    Likes Received:
    12
    Reputations:
    5
    Пробовал, выдает ошибку: 1>main.obj : error LNK2001: unresolved external symbol _PrintMSG@8
     
  8. NetAng

    NetAng Member

    Joined:
    29 Dec 2010
    Messages:
    75
    Likes Received:
    12
    Reputations:
    5
    Проблема решилась добавлением "c" после имени процедуры.
    proc PrintMSG c, param1, param2
     
  9. Sams

    Sams Member

    Joined:
    18 Apr 2009
    Messages:
    247
    Likes Received:
    70
    Reputations:
    17
    Вопрос касается WinAPI, которое можно приписать к любому разделу кодинга. По этому спрашиваю в самом нужном разделе форума "Ассемблер".
    Есть два потока с абсолютно разными процедурами. Оба обращаются к одним и тем же глобальным переменным в секции данных. Для синхронизации мне нужно помещать работу с переменными в критическую секцию только в одном из потоков или в обоих?
     
    #1269 Sams, 12 Jun 2012
    Last edited: 12 Jun 2012
  10. 2serg2

    2serg2 New Member

    Joined:
    21 Aug 2007
    Messages:
    24
    Likes Received:
    1
    Reputations:
    0
    Как увидеть в памяти, какими программами, загруженный файл драйвера с расширением .sys? Можно ли к нему прикрепиться (Attach) при помощи OllyDbg?
     
  11. mironich

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

    Joined:
    27 Feb 2011
    Messages:
    733
    Likes Received:
    73
    Reputations:
    19
    В обоих.
     
  12. Flisk

    Flisk Member

    Joined:
    4 Aug 2010
    Messages:
    147
    Likes Received:
    8
    Reputations:
    -2
    Как сделать, чтобы масм выполнил инструкцию pshufw mm1,mm2,0xff ?
    Пишу .mmx после .model, Масм ругается что не поддерживает такое в текущем cpu mode.
    У меня масм32.
     
  13. DooD

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

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    .686
    .mmx
    .model flat,stdcall
    ....
     
  14. marginal

    marginal New Member

    Joined:
    23 Jul 2008
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    Здравствуйте. Начал изучать Ассемблер. Но вот возникла непонятка.
    Будьте добры, разжуйте мне команду DIV. Заранее спасибо.
     
  15. Ins3t

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

    Joined:
    18 Jul 2009
    Messages:
    939
    Likes Received:
    429
    Reputations:
    139
    а что там разжовывать:

    [​IMG]
     
  16. SHAG

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

    Joined:
    14 Jul 2007
    Messages:
    57
    Likes Received:
    17
    Reputations:
    2
  17. enzecoder

    enzecoder New Member

    Joined:
    29 Jul 2012
    Messages:
    45
    Likes Received:
    3
    Reputations:
    -1
    еммм, напишите значит перехват апишки
    вот карказ https://dl.dropbox.com/u/77070235/msimg32.asm
    вот из этой програмки http://rmansys.ru/
    Название окошка "RMS_WND_HID"
     
  18. marginal

    marginal New Member

    Joined:
    23 Jul 2008
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    Рожица на экране

    Здравствуйте. Представляю листинг программки которая выводит веселую рожицу в левый верхний угол. Скомпелировал com файл (ML.exe prog03.asm /AT. С компиляцией все получилось) Prog03 - моя программка. Но к сожалению вместо желаемого результата в сеансе DOS просто курсор. Вопрос, что не так?
    Вот собственно листинг:

    CSEG segment
    org 100h
    start:
    mov ax,0B800h
    mov es,ax
    mov di,0
    mov ah,31
    mov al,1
    mov es: [di],ax
    mov ah,10h
    int 16h
    int 20h
    CSEG ends
    end start
     
  19. Ins3t

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

    Joined:
    18 Jul 2009
    Messages:
    939
    Likes Received:
    429
    Reputations:
    139
    в каком еще сеансе дос? используй DOX-Box.
     
  20. marginal

    marginal New Member

    Joined:
    23 Jul 2008
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    Пробовал DOSbox. Результат тот же. (Мигает курсор) Перепроверял в DOSbox другие программы - работают. Буду признателен за ответ.