Библиотека knigago >> Компьютеры: Языки и системы программирования >> Assembler >> Ассемблер в примерах и задачах


СЛУЧАЙНЫЙ КОММЕНТАРИЙ

# 1741, книга: Дикие собаки
автор: Владимир Васильевич Коркош (Korkosh)

Книга "Дикие собаки" Владимира Коркоша — это захватывающий и беспощадный взгляд на жизнь в постапокалиптическом мире, где беззаконие и насилие стали нормой. Коркош создает сложный и реалистичный мир, в котором рухнуло общество, а оставшиеся в живых вынуждены бороться за выживание всеми возможными способами. Главный герой, бывший военный по имени Александр, становится лидером группы выживших, которые пытаются найти убежище и построить новую жизнь в раздираемом войной мире. Однако на...

Наталья Юрьевна Добровольская , Олег Васильевич Гаркуша - Ассемблер в примерах и задачах

Ассемблер в примерах и задачах
Книга - Ассемблер в примерах и задачах.  Наталья Юрьевна Добровольская , Олег Васильевич Гаркуша  - прочитать полностью в библиотеке КнигаГо
Название:
Ассемблер в примерах и задачах
Наталья Юрьевна Добровольская , Олег Васильевич Гаркуша

Жанр:

Учебники и самоучители по компьютеру, Программирование: прочее, Assembler

Изадано в серии:

неизвестно

Издательство:

Кубанский государственный университет

Год издания:

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 байтов --">

Оставить комментарий:


Ваш e-mail является приватным и не будет опубликован в комментарии.