Введение в ассемблер - PullRequest
       11

Введение в ассемблер

2 голосов
/ 20 марта 2012

Я относительно новичок в ассемблере.Я нашел так много учебников, которые объясняют, как создать приложение HelloWorld, используя ML64 и MASM32, но ни один из них не объясняет программу подробно.Например, взгляните на приведенный ниже пример, который я нашел в Интернете и выполняю компиляцию (64 бита):

main proc
sub rsp, 68h      ; space for 4 arguments + 16byte aligned stack
xor r9d, r9d        ; 4. argument: r9d = uType = 0
lea r8, [caption]   ; 3. argument: r8  = caption
lea rdx, [text]     ; 2. argument: edx = window text
xor rcx, rcx        ; 1. argument: rcx = hWnd = NULL
call MessageBoxA
xor ecx, ecx        ; ecx = exit code
call ExitProcess
main endp

end

Я могу выполнить это до конца.Я понимаю, что существуют регистры общего назначения и регистры сегментов, но как вы решаете, какой из них использовать.Например, почему 'r8' содержит заголовок вместо r9?Есть ли ссылка на сборку для WinAPI?Я понимаю, что это основной вопрос.Я выбрал тег MASM32, так как это общий вопрос с 64-битным примером.

Ответы [ 2 ]

2 голосов
/ 20 марта 2012

Соглашение о вызовах Windows x64 описано, например, здесь .

Чтобы узнать порядок аргументов, ищите, например, MessageBoxA здесь.

0 голосов
/ 20 марта 2012

Я предлагаю несколько вещей, сначала отдельное изучение ассемблера и изучение вызовов операционной системы. Второй - не начинайте с x86 в качестве первого языка ассемблера. Сделайте это третьим, четвертым или последним, который вы изучите. Если вы чувствуете, что должны, я рекомендую начать с 8088/8086 и получить основу в x86, прежде чем углубляться в то, чем он стал.

arm / thumb / msp430 / mico8 / avr - все это хорошие наборы команд первый, второй, третий и т. Д. По второму или третьему (из другого семейства), если не по первому, у вас будет хорошая основа в работе компьютеров. pcemu не мое. Я раздвоил версию и удалил операционную систему, чтобы использовать ее для изучения языка ассемблера. За несколько долларов вы можете получить хорошие использованные копии руководства 8088/8086 от intel

http://www.amazon.com/gp/product/1555120814

Опять же, хорошая основа того, что стало сегодня x86.

Когда все это будет сделано, начните просматривать вызовы операционной системы из asm ... конечно, вам может понадобиться несколько из asm, чтобы начать, печатать что-то вроде, например, чтобы увидеть, как работает ваша программа.

...