Очень простой ассемблере Primer:
Во-первых, вы должны знать, что языки сборки по сравнению с конкретным процессором (ЦП) или семейства процессоров. Например, фрагмент, показанный в вопросе, представляется для архитектуры Intel x86. Это важно, потому что очень много инструкций на языке ассемблера действуют или на основе содержимого регистров процессора. Поэтому, прежде чем подробно разбираться в деталях отдельных инструкций, вы должны ознакомиться с архитектурой CPU , то есть именами и характеристиками доступных регистров, а также их ролями (некоторые из этих регистров носят общий характер, но другие имеют очень специфические роли). Кроме того, частью архитектуры является способ адресации внешней памяти.
Во-вторых, есть, но очень немногие виды инструкций ассемблера:
- инструкции управления потоком (испытаний, прыжками, возвращающих [из подпрограммы] и т.д.)
- копирования данных команд (движение содержимое памяти в/из реестра и/или памяти)
- инструкции по управлению стеком (это специальный вид инструкции копирования данных, который также действует на указатель стека oft с именем SP, специальный регистр).
- арифметические команды (сложение, вычитание, умножение и т.д.)
- булевы операции (сдвиг [зарегистрировать содержимое], побитовое и, побитовое или и т.д.)
В-третьих, то, что иногда может сделать вещи более (но также и то, что делает логику сборки довольно мощным): Режимы адресации. Режимы основной адресации используются для определения местоположения (ов) памяти для данной команды. Пример режимов адресации является прямым и косвенным, при этом первый предоставляет адрес, где можно читать/записывать непосредственно в качестве операнда команды, а второй - операнд адреса памяти, но эффективный адрес, используемый для чтения/записи, получается сначала прочитав содержимое адреса и использовал этот контент в качестве адреса, где должна выполняться операция.
С вышеуказанным основным пониманием вы, вероятно, можете начать получать руководство по эксплуатации процессора и сделать все более понятным.
Может быть, начать со следующими записями Википедии:
, а затем, возможно, документ, как this 8 pages introductory course notes (PDF)
А последнее слово предостережения: глядя прямо на код и пытаясь понять, что он делает, очень эффективный способ понять ssembly язык. Однако я отметил, что ваше первоначальное размещение (на пастебине) ссылалось на дизассемблер; будьте осторожны, что иногда дизассемблеры могут запутаться (например, когда они обрабатывают области данных так же, как они содержат код), и создают очень нечувствительные списки инструкций. Кроме того, прочитав реальный исходный код (скорее источник, созданный путем разборки), вы получаете выгоду от комментариев автора и хороших имен ярлыков, которые хорошо помогают в понимании логики.