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 метка – безусловный переход.
Команда переходит на метку и продолжает выполнение оттуда.
Какой-то код для примера со сравнениями, я еще не придумал.
В следующей статье разберём команды циклов.