Наталья Юрьевна Добровольская , Олег Васильевич Гаркуша - Ассемблер в примерах и задачах
Название: | Ассемблер в примерах и задачах | |
Автор: | Наталья Юрьевна Добровольская , Олег Васильевич Гаркуша | |
Жанр: | Учебники и самоучители по компьютеру, Программирование: прочее, Assembler | |
Изадано в серии: | неизвестно | |
Издательство: | Кубанский государственный университет | |
Год издания: | 2022 | |
ISBN: | 978-5-8209-2052-3 | |
Отзывы: | Комментировать | |
Рейтинг: | ||
Поделись книгой с друзьями! Помощь сайту: донат на оплату сервера |
Краткое содержание книги "Ассемблер в примерах и задачах"
Изложены фундаментальные темы: организация современного компьютера, устройство процессоров семейства IA-32, синтаксис языка ассемблера, макросредства, программирование типовых управляющих структур, сложные структуры данных, оптимизация программ. Приведены многочисленные примеры, иллюстрирующие материал. Адресуется студентам факультета компьютерных технологий и прикладной математики, изучающим основы программирования.
Читаем онлайн "Ассемблер в примерах и задачах". [Страница - 15]
порядке, как они записаны в памяти.
Выполнение любой команды начинается с того, что
содержимое регистра EIP/IP увеличивается на длину текущей
команды и, таким образом, в регистре адресов команд оказывается
адрес следующей команды.
Если команда во время своего выполнения меняет
содержимое EIP/IP, то в результате за данной командой будет
выполняться не обязательно следующая команда.
Такие команды называются командами перехода, или
командами передачи управления.
Отметим, что команды перехода не изменяют флаги: какое
значение флаги имели до команды перехода, такое же значение
они будут иметь и после нее.
5.1. БЕЗУСЛОВНЫЙ ПЕРЕХОД
Команда
синтаксис:
JMP1 op
безусловного
перехода
имеет
следующий
; безусловный переход
Операнд op указывает адрес перехода. Существует два
способа указания этого адреса, соответственно различают прямой
и косвенный переходы.
5.1.1. Прямой переход
Если в команде перехода указывается метка команды, на
которую надо перейти, то переход называется прямым.
JMP
...
L: MOV
1
L
EAX, x
Jump – прыжок.
52
Команды сравнения и условного перехода
Вообще, любой переход заключается в изменении адреса
следующей исполняемой команды, т.е. в изменении значения
регистра EIP/IP.
Запись в команде перехода не абсолютного, а относительного
адреса перехода позволяет уменьшить размер команды перехода.
Абсолютный адрес должен быть 32-битным, а относительный
может быть и 8-битным, и 16-битным.
5.1.2. Косвенный переход
При косвенном переходе в команде указывается не адрес
перехода, а регистр или ячейка памяти, где этот адрес находится.
Содержимое как абсолютный адрес перехода. Косвенные
переходы используются в тех случаях, когда адрес перехода
становится известен только во время работы программы.
JMP
EBX
5.2. КОМАНДЫ СРАВНЕНИЯ И УСЛОВНОГО ПЕРЕХОДА
Команды условного перехода осуществляют переход,
который выполняется только в случае истинности некоторого
условия. Истинность условия проверяется по значениям флагов.
Поэтому обычно непосредственно перед командой условного
перехода ставится команда сравнения, которая формирует
значения флагов:
CMP1 op1, op2
Команда сравнения эквивалентна команде SUB за
исключением того, что вычисленная разность никуда не заносится.
Назначение команды CMP – установка и сброс флагов.
Все
команды
условного
перехода
записываются
единообразно:
Jxx
Все команды условного перехода можно разделить на три
группы.
1
Compare – сравнивать.
53
Ассемблер в примерах и задачах
В первую группу входят команды, которые обычно ставятся
после команды сравнения. В их мнемокодах указывается тот
результат сравнения, при котором надо делать переход.
Мнемокод
JE
JNE
JL/JNGE
JLE/JNG
JG/JNLE
JGE/JNL
JB/JNAE
JBE/JNA
JA/JNBE
JAE/JNB
Примечание
CMP op1, op2
op1
op1
op1
op1
op1
op1
op1
op1
op1
op1
=
≠
<
≤
>
≥
<
≤
>
≥
op2
op2
op2
op2
op2
op2
op2
op2
op2
op2
Для всех чисел
Для чисел со знаком
Для чисел без знака
Рассмотрим пример: даны две переменные X и Y, в
переменную Z нужно записать максимальное из чисел X и Y.
MOV EAX, X
CMP EAX, Y
JGE/JAE L
; JGE – для знаковых чисел и
; JAE – для беззнаковых
MOV EAX, Y
L: MOV Z, EAX
Во вторую группу команд условного перехода входят те,
которые обычно ставятся после команд, отличных от команды
сравнения, и которые реагируют на значение определенного
флага.
Мнемокод
JZ
JS
JC
JO
JP
ZF
SF
CF
OF
PF
Условие
перехода
= 1
= 1
= 1
= 1
= 1
Мнемокод
JNZ
JNS
JNC
JNO
JNP
54
ZF
SF
CF
OF
PF
Условие
перехода
= 0
= 0
= 0
= 0
= 0
Команды сравнения и условного перехода
Рассмотрим пример: пусть A, B и C – беззнаковые
переменные
размером
1
байт,
требуется
вычислить
C = A * A + B, но если результат превосходит размер байта,
передать управление на метку ERROR.
MOV
MUL
JC
ADD
JC
MOV
AL, A
AL
ERROR
AL, B
ERROR
C, AL
В третью группу входят две команды условного перехода,
проверяющие не флаги, а значение регистра ECX или CX:
JCXZ
JECXZ
; Переход, если CX = 0
; Переход, если ECX = 0
Отметим общую особенность команд условного перехода:
все они осуществляют только короткий переход, т.е. с их помощью
можно передать управление не далее, чем на 128 байтов --">
Книги схожие с «Ассемблер в примерах и задачах» по жанру, серии, автору или названию:
Арнольд Роббинс - Linux программирование в примерах Жанр: Другие языки и системы программирования Год издания: 2005 |
Коллектив авторов - Rust на примерах Жанр: Учебники и самоучители по компьютеру Год издания: 2011 |
Владислав Юрьевич Пирогов - Ассемблер и дизассемблирование Жанр: Учебники и самоучители по компьютеру Год издания: 2006 |
Андрей В. Жуков - Ассемблер Жанр: Assembler Год издания: 2002 |