bd

bd

Xalion

В прошлой статье мы закончили разбирать командные и стековые регистры компьютера. Всего их восемь: EAX, EBX, ECX, EDX, ESP, EBP, ESI, EDI.
Сегодня разберём команды условий и секции ассемблерного кода.

Секции

В коде nasm есть три секции: .data, .bss и .text.

section .data

В этой секции объявляем переменные.
Синтаксис объявления такой: имя_переменной размер для переменной значение_переменной.

Для переменной можно взять до 10 байт.

section .bss

В этой секции мы резервируем место для неизвестных переменных.
Их значения программы получит в процессе работы.
Объявляется так же, как и переменные в .data. Эту секцию мы начнём использовать позже.

section .text

В этой секции пишется код программы. Чтобы ассемблер понял, откуда должна начинаться программа, мы должны объявить глобальную метку _start. Она ставится перед началом кода.*постарайся придумать объяснение меткам*


Команды условий

CMP – сравнение.
Команда сравнивает два числа и записывает результат в флаговой регистр. В этом регистре хранится состояние процессора на данные моменты и результаты выполнения команд. После команды CMP пишутся команды условных переходов.

JG метка – переход на метку если первое число больше второго.

JL метка – переход на метку если первое число меньше второго.

JZ метка – переход на метку если числа равны.

Это часто встречающиеся команды условных переходов, но существует ещё семнадцать видов этих команд. Мы рассмотрим их, если они нам понадобятся.


JMP метка – безусловный переход.
Команда переходит на метку и продолжает выполнение оттуда.


Какой-то код для примера со сравнениями, я еще не придумал.


В следующей статье разберём команды циклов.

Report Page