- •1. Регистры общего назначения:
- •Добавление элемента в стек
- •9. Вычитание двоичных чисел без знака
- •10.Вычитание двоичных числе со знаком
- •11. Умножение двоичных чисел без знака
- •12. Деление двоичных чисел без знака
- •13.Умножение двоичных чисел со знаком
- •Пример программы
- •Безусловные переходы
- •19.Команда сравнения, усл переход для ком-ды сравнения.
- •20.Команды условного перехода по состоянию флагов
- •21.Организация циклов
- •Команда loop
- •Cmp eax, ebx; {сравниваем eax с ebx} je @IfNot; {если равны, то переходим на иначе} используются команды сравнения
- •Епочечные команды
- •Ins адрес_приемника,номер_порта insb insw insd
1. Регистры общего назначения:
Регистры общего назначения - EAX, EBX, ECX, EDX. Они 32-х битные и делятся еще на две части, нижние из которых AX, BX, CD, DX - 16-ти битные, и деляется еще на два 8-ми битных регистра. Так, АХ делится на AH и AL, DX на DH и DL и т.д. Буква "Н" означает верхний регистр.
Так, AH и AL каждый по одному байту, АХ - 2 байта (или word - слово), ЕАХ - 4 байта (или dword - двойное слово). Эти регистры используются для операций с данными, такими, как сравнение, математические операции или запись данных в память.
Регистр СХ чаще всего используется как счетчик в циклах.
АН в DOS программах используется как определитель, какой сервис будет использоваться при вызове INT.
2.Сегментные регистры
Регистры сегментов - это CS, DS, ES, FS, GS, SS. Эти регистры 16-ти битные, и содержат в себе первую половину адреса "оффсет:сегмент".
CS - сегмент кода (страница памяти) исполняемой в данный момент программы.
DS - сегмент (страница) данных исполняемой программы, т.е. константы, строковые ссылки и т.д.
SS - сегмент стека исполняемой программы.
ES, FS, GS - дополнительные сегменты, и могут не использоваться программой.
3.Регистр флагов
EFLAG и FLAG
Флаги состояния (биты 0, 2, 4, 6, 7 и 11) отражают результат выполнения арифметических инструкций
16-разрядный (16-битовый) и содержит всю необходимую информацию о состоянии процессора 8086(286) и результатах последних инструкций. Каждый бит у него флаг.
O флаг переполнения OF
D флаг направления DF
I флаг прерывания IF
T флаг перехвата TF
S флаг знака SF
Z флаг нуля ZF
A флаг дополнительного переноса AF
P флаг четности PF
C флаг переноса CF
4.Команды пересылки данных. Команды для работы с адресами памяти.
К этой группе относятся следующие команды:
mov <операнд назначения>,<операнд-источник>
xchg <операнд1>,<операнд2>
mov -это основная команда пересылки данных. Она реализует самые разнообразные варианты пересылки.
Отметим особенности применения этой команды:
!!! командой mov нельзя осуществить пересылку из одной области памяти в другую. Если такая необходимость возникает, то нужно использовать в качестве промежуточного буфера любой доступный в данный момент регистр общего назначения.
!!!нельзя загрузить в сегментный регистр значение непосредственно из памяти. Поэтому для выполнения такой загрузки нужно использовать промежуточный объект. Это может быть регистр общего назначения или стек. В начале сегмента кода две команды mov, выполняющие настройку сегментного регистра ds. При этом из-за невозможности загрузить впрямую в сегментный регистр значение адреса сегмента, содержащееся в предопределенной переменной @data, приходится использовать регистр общего назначения ax;
!!! нельзя переслать содержимое одного сегментного регистра в другой сегментный регистр. Это объясняется тем, что в системе команд нет соответствующего кода операции. Но необходимость в таком действии часто возникает. Выполнить такую пересылку можно, используя в качестве промежуточных все те же регистры общего назначения. Вот пример инициализации регистра es значением из регистра ds:
Для двунаправленной пересылки данных применяют команду xchg. Для этой операции можно, конечно, применить последовательность из нескольких команд mov, но из-за того, что операция обмена используется довольно часто, разработчики системы команд микропроцессора посчитали нужным ввести отдельную команду обмена xchg.
Схема команды: xchg операнд_1,операнд_2
Назначение: обмен двух значений между регистрами или между регистрами и памятью.
Алгоритм работы: обмен содержимого операнд_1 и операнд_2.
Состояние флагов после выполнения команды: выполнение команды не влияет на флаги
Применение:
Команду xchg можно использовать для выполнения операции обмена двух операндов с целью изменения порядка следования байт, слов, двойных слов или их временного сохранения в регистре или памяти. Альтернативой является использование для этой цели стека.
!! операнды должны иметь один тип.
!! Не допускается (как и для всех команд ассемблера) обменивать между собой содержимое двух ячеек памяти.
5.Команды для работы со стеком
Для стека существуют всего две основные операции:
добавление элемента на вершину стека (PUSH);
извлечение элемента с вершины стека (POP);
