singlepost

Ассемблер – это просто?[решено] << На главную или назад  

Такая ситуация, владею Object Pascalи C++ в общих чертах , но думаю какой язык учить в совершенстве? Знаю что Ассемблер очень мощный язык, но реально ли на нем писать оконные программы такие как в делфи например?и если не трудно напишите пожалуйста код на асме, который просто саздает окно, такое как в делфи по стандарту в новом проэкте идет.

39 ответов в теме “Ассемблер – это просто?[решено]”

  1. 21
    Валерий Лаптев ответил:

    Автору. И всем остальным тоже полезно будет.
    Не ассемблер надо изучать, а АРХИТЕКТУРУ компьютера для программиста. Чтобы знать представление целых и дробных чисел, чтобы понимать, что такое регистры, сечь, что такое адрес и соответственно – что лежит в переменной-указателе. Какие методы адресации поддерживает процессор, и почему. Что такое CISC и RISC – и почему.
    Если будете сечь архитектуру, то с ассемблером проблем не будет.
    Ассемблер – это просто мнемоническая запись команды. И еще – почему нужны директивы-псевдокоманды.

  2. 20
    Алексей Романыч ответил:

    спасибо всем!

  3. 19
    Николай Матюшов ответил:

    а я контроллеры программирую.
    Там на ассемблере все хорошо (быстро, компактно, надежно) делается.
    Вот решил на Си переходить.
    Но наоборот… Ересь

  4. 18
    Юрий Чебышев ответил:

    .386

    .model flat,stdcall

    option casemap:none

    include \masm32\include\windows.inc

    include \masm32\include\user32.inc

    include \masm32\include\kernel32.inc

    includelib \masm32\lib\user32.lib

    includelib \masm32\lib\kernel32.lib

    WinMain proto :D WORD,:DWORD,:DWORD,:DWORD

    .data

    ClassName db "SimpleWinClass",0

    AppNamedb "Our First Window",0

    .data?

    hInstance HINSTANCE ?

    CommandLine LPSTR ?

    .code

    start:

    invoke GetModuleHandle, NULL

    mov hInstance,eax

    invoke GetCommandLine

    mov CommandLine,eax

    invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT

    invoke ExitProcess,eax

    WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD

    LOCAL wc:WNDCLASSEX

    LOCAL msg:MSG

    LOCAL hwnd:HWND

    movwc.cbSize,SIZEOF WNDCLASSEX

    movwc.style, CS_HREDRAW or CS_VREDRAW

    movwc.lpfnWndProc, OFFSET WndProc

    movwc.cbClsExtra,NULL

    movwc.cbWndExtra,NULL

    pushhInstance

    popwc.hInstance

    movwc.hbrBackground,COLOR_WINDOW+1

    movwc.lpszMenuName,NULL

    movwc.lpszClassName,OFFSET ClassName

    invoke LoadIcon,NULL,IDI_APPLICATION

    movwc.hIcon,eax

    movwc.hIconSm,eax

    invoke LoadCursor,NULL,IDC_ARROW

    movwc.hCursor,eax

    invoke RegisterClassEx, addr wc

    INVOKE CreateWindowEx,NULL,ADDR ClassName,ADDR AppName,\

    WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,\

    CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,\

    hInst,NULL

    movhwnd,eax

    invoke ShowWindow, hwnd,SW_SHOWNORMAL

    invoke UpdateWindow, hwnd

    .WHILE TRUE

    invoke GetMessage, ADDR msg,NULL,0,0

    .BREAK .IF (!eax)

    invoke TranslateMessage, ADDR msg

    invoke DispatchMessage, ADDR msg

    .ENDW

    moveax,msg.wParam

    ret

    WinMain endp

    WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM

    .IF uMsg==WM_DESTROY

    invoke PostQuitMessage,NULL

    .ELSE

    invoke DefWindowProc,hWnd,uMsg,wParam,lParam

    ret

    .ENDIF

    xor eax,eax

    ret

    WndProc endp

    end start

    выглядит огромно. НО. весь этот код – шаблонный.Самое интересное – дальше, когда дописывать разные кнопки итп.

    дада это не мой код. это третий пример из туториалов lczelion'a
    могу посоветовать wasm.ru lkдля начала обучения асму.

  5. 17
    Евгений Баталов ответил:

    А раз ассемблер мощный, может создадим окно без апи? ))) Я думал автор просит исходник, создающий окно (при этом представляется огромный текст…).

  6. 16
    Николай Митропольский ответил:

    Ну вообще исходник получить довольно просто:
    можно взять тот же делфи, скомпилировать программу – а потом ее дизасемблировать) В особенно в случае делфи желание таким образом разрабатывать ПО исчезает надолго)

  7. 15
    Евгений Малахов ответил:

    Согласен. По крайней мересоздание окон на асме не добавит скорости к вашему приложению. Не в ту сторону смотрит автор.

  8. 14
    Максим Рыбаков ответил:

    учебник для асма, хотя бы для начала: автор Абель

  9. 13
    Николай Митропольский ответил:

    Аффтар, вы обкурились? ))

    прогрессивное человечество думает в сторону декларативных языков для создания оконных приложений а вам приспичило на ассемблере их писать…

    Если вы не пишете собственно компилятор, то я честно не представляю зачем вам может понадобиться ассемблер.

    и более того неоправданное использование ассеблера- это проблемы с переносимостью в будущем

  10. 12
    Евгений Малахов ответил:

    Мой те совет..учи в совершенстве C++, а заодно и освой асм, безотказная связка. Чисто на асме щас практически не пишется, кроме пожалуй чего-нить термоядерного..например драйверов, отдельных системный функций и антивирусов. и опять же используют ассемблеровские вставки.
    Могу посоветовать книгу по асму Надежды Григорьевны Голубь "Искусство программирования на ассемблере".В электронке она есть. Думаю этого хватит.

  11. 11
    Миха Коробов ответил:

    В. И. Юров "Assembler. Учебник для вузов" (2-е издание) издательство "Питер"

  12. 10
    Алексей Романыч ответил:

    мне кажется это интереснее чем на языках высокого уровня… просто еще хочется овладеть дебагером в полной мере…

  13. 9
    Евгений Малахов ответил:

    Есть такая весчь Visual Assembler.

  14. 8
    Миха Коробов ответил:

    >>просто еще хочется овладеть дебагером в полной мере…
    догадываюсь, для чего ;)

  15. 7
    Алексей Романыч ответил:

    а код обычного окна может кто нить привести написсаный вручную?

  16. 6
    Алексей Романыч ответил:

    #5 именно для этого )

  17. 5
    Миха Коробов ответил:

    У Юрова есть примеры и консольных, и оконных приложений с использованием WinAPI.

  18. 4
    Алексей Романыч ответил:

    а можно точное название книжки?

  19. 3
    Леша Губарев ответил:

    лично мне ассемблер помог в плане большего понятия логики выполнения и заставил научиться экономнее использовать ресурсы системы

  20. 2
    Евгений Малахов ответил:

    Ну на вскидку я те не напишу, но окно создаётся несколькими апи функциями
    CreateWindow,RegisterClassEx, ShowWindow. Можешь посмотреть пустой проект с формой на VisualStudio и посмотреть структуры.

  21. 1
    Миха Коробов ответил:

    Писать-то реально, но стоит ли…

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.