Справка по Ассемблерным инструкциям

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

Команда cmp

Команда cmp позволяет сравнивать между собой регистры. Результаты этой команды записиваются в флаги-регистры. Эта команда предназначена для выполнения условных переходов (jz,jg  и. т. д.)


cmp (первый регистр), (второй регистр)

Команда call

Команда call позволяет выполнить переход, при этом место до перехода помещается в стек


call (адрес, или label)

Команда ret

Команда ret "вытаскивает" из стека адрес (по техническому "возврат из ближней процедуры")(который появляется при помощи команды call) и  выполняет адрес который был до перехода + 1 шаг. Такую задачу также выполняют команды retf,retn

Команда push, pop

Эти команды позволяют взаимодействовать со стеком, push  - записывает значение, а pop - берёт значение из стека соотвественно.

Команда je, jz - перейти если равно

Команда jne,jnz - перейти если равно

Команда jo - Перейти если будет переполнение (в основном при используется для арефметических операций)

Команда mov  - Перенос регистра с одного места на другое (Не путайте с дубликацией регистра)


mov (в),(из)


Команда lea - Выполняет тоже самое что и mov, но появляется возможность изменять регистры


lea (регистр) [Регистр и арефметические действия (+,-)]

Команда syscall - Выполняет системный вызов. аргументы не требуется. Обычно не используется.

Команда sysenter - Тоже самое что и syscall, но эта команда не во всех системах может работать/

Команда int - Одна из извесных команд. генерирует программное прерывание


int (прерывание,например 21h)

Команда int3 - Может использоватся как пустышка, при вызове его программа останавливается и генерирует исключение.

Команда DB - По сути это не команда, предназначена для хранения данных. Может использоватся как пустышка.


DB (данные)

Обратите внимание что не все команды могут быть во всех версиях ассемблера. Например есть синтаксис (AT&T), который сильно отличается от того, что я написал.

Всем хорошего.