Команда приращения значения приемника на единицу
Команда INC (increment - прирастить) добавляет 1 к содержимому регистра или ячейки памяти, но в отличие от команды ADD не воздействует на флаг переноса CF. Команда INC удобна для приращения значений счетчиков в циклах команд. Ее можно использовать и для приращения значения индексного регистра или указателя при доступе к последовательно расположенным ячейкам памяти.
Приведем несколько примеров:
INC CX ;Прирастить значение 16-битового
INC AL ;или 8-битового регистра
INC MEM_ВYТЕ ;Прирастить значение байта
INC MEM_WORD[BX] ;или слова памяти
Как ни странно, приращение значения 8-битового регистра отнимает у микропроцессора 8x86 больше времени, чем приращение значения 16-битового регистра. Это вызвано тем, что разработчики фирмы Intel предполагали, что программисты будут чаще пользоваться счетчиками размером в слово, а не байт, и предусмотрели специальную однобайтовую версию команды INC для 16-битовых регистров.
Команды вычитания. Выполнение вычитания микропроцессором 8086.
Внутри микропроцессора 8x86, как и любого другого микропроцессора общего назначения, нет устройства вычитания. Однако он имеет устройство сложения (сумматор) и может вычитать числа путем сложения. Хотя это и может показаться странным, тем не менее это концепция, как сказал бы Шерлок Холмс, "элементарна".
Чтобы понять, как можно вычитать путем сложения, посмотрим, как вычесть 7 из 10. В начальной школе учат записывать это как
10-7,
но в старших классах (скажем, в курсе алгебры) учат и другому способу записи:
10+(-7).
Первым способом (непосредственное вычитание) вычитание может быть выполнено микропроцессором, имеющим устройство вычитания. Так как микропроцессор 8x86 его не имеет, то он вычитает в два приема. Сначала он меняет знак у вычитаемого (у второго числа), т.е. обращает его, а затем складывает уменьшаемое и обращенное вычитаемое. Так как микропроцессор 8x86 оперирует двоичными числами, то обращение знака числа производится путем так называемого дополнения до двух.
Чтобы выполнить дополнение до двух, берется исходная форма двоичного числа и значение каждого его бита обращается (каждый 0 заменяется на 1, а 1 — на 0), а затем к полученному числу добавляется 1.
Применяя это к нашему примеру, получаем 8-битовые представления чисел 10 и 7: 00001010В и 00000111В соответственно. Затем дополним двоичное представление 7 до двух:
1111 1000 (обратить все биты)
+_____1 (добавить 1)
1111 1001 (дополнение до двух числа 7, или - 7).
Теперь операция вычитания примет следующий вид:
0000 1010 (10)
+1111 1001 (-7)
0000 0011 (Ответ: 3)
Эврика! Мы получили правильный ответ!
Так как микропроцессор 8x86 выполняет дополнение до двух автоматически, то Вам эта операция понадобится в редких случаях. Позже в этом разделе мы рассмотрим команду NEG, посредством которой можно выполнить дополнение до двух, если оно когда-либо Вам понадобится.