Адресация по базе с индексированием
При адресации по базе с индексированием исполнительный адрес вычисляется как сумма значений базового регистра, индексного регистра и, возможно, сдвига.
Так как в этом режиме адресации складывается два отдельных смещения, то он удобен при адресации двумерных массивов, когда базовый регистр содержит начальный адрес массива, а значения сдвига и индексного регистра суть смещения по строке и столбцу.
Предположим, например, что Ваша ЭВМ следит за шестью предохранительными клапанами на химическом предприятии. Она считывает их состояния каждые полчаса и запоминает в ячейках памяти. За неделю эти считывания образуют массив, состоящий из 336 блоков (48 считываний в течение семи дней) по шесть элементов в каждом, а всего — 2016 значений.
Если начальный адрес массива загружен в регистр ВХ, сдвиг блока (номер считывания, умноженный на 12) - в регистре DI, а номер клапана задан в переменной VALVE, то команда
MOV AX ,VALVE[BX][DI ]
загрузит требуемое считывание состояния клапана в регистр АХ. На рис. 5 изображен процесс извлечения результата третьего считывания (с номером 2) для клапана 4 из массива, у которого смещение в сегменте данных равно 100Н.
Приведем несколько допустимых форматов операндов, адресуемых по базе с индексированием:
MOVE AX,[BX+2+DI]
MOVE AX,[DI+BX+2]
MOVE AX,[BX+2][DI]
MOVE AX,[BX][DI+2]
Команды пересылки данных
| Мнемоника | Формат | Пояснение |
| Команды общего назначения | ||
| MOV | MOV приемник, источник | Переслать значение |
| PUSH | PUSH источник | Поместить в стек |
| POP | POP приемник | Извлечь из стека |
| XCHG | XCHG приемник, источник | Обменять значения |
| XLAT | XLAT таблица | Загрузить в AL байт из таблицы |
| Команды ввода-вывода | ||
| IN | IN аккумулятор, порт | Читать из порта |
| OUT | OUT порт, аккумулятор | Записать в порт |
| Команды пересылки адреса | ||
| LEA | LEA регистр 16, память 16 | Загрузить исполнительный адрес |
| LDS | LDS регистр 16, память32 | Загрузить в DS:регистр16 полный адрес |
| LES | LES регистр 16, память32 | Загрузить в ES:регистр16 полный адрес |
| Команды пересылки флагов | ||
| LAHF | LAHF | Загрузить флаги в АН |
| SAHF | SAHF | Установить флаги из АН |
| PUSHF | PUSHF | Поместить флаги в стек |
| POPF | POPF | Извлечь флаги из стека |
Арифметические команды
| Мнемоника | Формат | Комментарий |
| Команды сложения | ||
| ADD | ADD приемник, источник | Сложить |
| ADC | ADC приемник, источник | Сложить, добавить перенос |
| ААА | ААА | Скорректировать сложение для таблицы ASCII |
| DAA | DAA | Скорректировать сложение для двоично-десятичных чисел |
| INC | INC приемник | Увеличить на единицу |
| Команды вычитания | ||
| SUB | SUB приемник, источник | Вычесть |
| SBB | SBB приемник, источник | Вычесть с заемом |
| AAS | AAS | Скорректировать вычитание для таблицы ASCII |
| DAS | DAS | Скорректировать вычитание для двоично-десятичных чисел |
| DEC | DEC приемник | Уменьшить на единицу |
| NEG | NEG приемник | Обратить знак |
| СМР | СМР приемник, источник | Сравнить |
| Команды умножения | ||
| MUL | MUL источник | Умножить без знака |
| IMUL | IMUL источник | Умножить со знаком |
| AАМ | ААМ | Скорректировать умножение для таблицы ASCII |
| Команды деления | ||
| DIV | DIV источник | Делить без знака |
| IDIV | IDIV источник | Делить со знаком |
| AAD | AAD | Скорректировать деление для таблицы ASCII |
| Команды расширения знака | ||
| CBW | CBW | Преобразовать байт в слово |
| CWD | CWD | Преобразовать слово в двойное слово |
Их большое количество, подробнее на сайте: http://www.hardline.ru/selfteachers/Info/Programming/!TurboPascal/gl12/gl12_4.html
Команды условного и безусловного перехода
Безусловные переходы
Безусловный переход — это переход, который выполняется всегда. Безусловный переход осуществляется с помощью команды JMP. У этой команды один операнд, который может быть непосредственным адресом (меткой), регистром или ячейкой памяти, содержащей адрес. Существуют также «дальние» переходы — между сегментами, однако здесь мы их рассматривать не будем. Примеры безусловных переходов:
jmp metka ;Переход на метку jmp bx ;Переход по адресу в BX jmp word[bx] ;Переход по адресу, содержащемуся в памяти по адресу в BXУсловные переходы
Все команды условных переходов приведены в таблице:
| Команда | Переход, если | Условие перехода |
| JZ/JE | нуль или равно | ZF=1 |
| JNZ/JNE | не нуль или не равно | ZF=0 |
| JC/JNAE/JB | есть переполнение/не выше и не равно/ниже | CF=1 |
| JNC/JAE/JNB | нет переполнения/выше или равно/не ниже | CF=0 |
| JP | число единичных бит чётное | PF=1 |
| JNP | число единичных бит нечётное | PF=0 |
| JS | знак равен 1 | SF=1 |
| JNS | знак равен 0 | SF=0 |
| JO | есть переполнение | OF=1 |
| JNO | нет переполнения | OF=0 |
| JA/JNBE | выше/не ниже и не равно | CF=0 и ZF=0 |
| JNA/JBE | не выше/ниже или равно | CF=1 или ZF=1 |
| JG/JNLE | больше/не меньше и не равно | ZF=0 и SF=OF |
| JGE/JNL | больше или равно/не меньше | SF=OF |
| JL/JNGE | меньше/не больше и не равно | SF≠OF |
| JLE/JNG | меньше или равно/не больше | ZF=1 или SF≠OF |
| JCXZ | содержимое CX равно нулю | CX=0 |
http://asmworld.ru/uchebnyj-kurs/016-uslovnye-i-bezuslovnye-perexody/