Skip to content

11. Арифметические команды.

Alexey Romanov edited this page Apr 3, 2020 · 5 revisions

Арифметические команды.

ADD и ADC

ADD <приемник>, <источник> — сложение. Не делает различий между знаковыми и беззнаковыми числами.

ADC <приемник>, <источник> — сложение с переносом. Складывает приёмник, источник и флаг CF.

SUB и SBB

SUB <приемник>, <источник> — вычитание. Не делает различий между знаковыми и беззнаковыми числами.

SBB <приемник>, <источник> — вычитание с займом. Вычитает из приёмника источник и дополнительно - флаг CF.

Флаг CF можно рассматривать как дополнительный бит у результата.

carry flag.

Можно использовать ADC и SBB для сложения вычитания и больших чисел, которые по частям храним в двух регистрах.

Пример: Сложим два 32-битных числа. Пусть одно из них хранится в паре регистров DX:AX (младшее двойное слово - DX, старшее AX). Другое в паре BX:CX

add ax, cx
adc dx, bx

Если при сложении двойных слов произошел перенос из старшего разряда, то это будет учтено командой adc.

Эти 4 команды (ADD, ADC, SUB, SBB) меняют флаги: CF, OF, SF, ZF, AF, PF

MUL и IMUL

MUL <источник> — выполняет умножение чисел без знака. <источник> не может быть число (нельзя: MUL 228). Умножает регистр AX (AL), на <источник>. Результат остается в AX, либо DX:AX, если не помещается в AX.

IMUL — умножение чисел со знаком.

  1. IMUL <источник>. Работает так же, как и MUL
  2. IMUL <приёмник>, <источник>. Умножает источник на приемник, результат в приемник.
  3. IMUL <приёмник>, <источник1>, <источник2>. Умножает источник1 на источник2, результат в приёмник.

Флаги: OF, CF

DIV и IDIV

DIV <источник> — выполняет деление чисел без знака. <источник> не может быть число (нельзя: DIV 228). Делимое должно быть помещено в AX (или DX:AX, если делитель больше байта). В первом случае частное в AL, остаток в AH, во втором случае частное в AX, остаток в DX.

IDIV <источник> — деление чисел со знаком. Работает так же как и DIV. Окруление в сторону нуля, знак остатка совпадает со знаком делимого.

INC, DEC, NOT

INC <приемник> — увеличивает примник на 1.

DEC <приемник> — уменьшает примник на 1.

Меняют флаги: OF, SF, ZF, AF, PF

NEG <применик> — меняет знак приемника.

Экзамен:

  1. Архитектура фон Неймана. Принципы фон Неймана

  2. Структурная схема ЭВМ. Виды памяти. Системная шина.

  3. Процессор 8086. Разрядность. Регистры.

  4. Процессор 8086. Регистр флагов.

  5. Процессор 8086. Шина адреса. Сегментная модель памяти.

  6. Выполнение программы. Машинный код. Исполняемые файлы. Язык ассемблера.

  7. Классификация команд процессора x86.

  8. Команда пересылки данных.

  9. Команды целочисленной арифметики.

  10. Команды побитовой арифметики.

  11. Команды передачи управления.

  12. Структура программы на языке ассемблера. Модули. Сегменты.

  13. Директивы выделения памяти. Метки.

  14. Директива SEGMENT.

  15. Директива ASSUME.

  16. Директива END. Точка входа.

  17. Виды переходов. Условные, безусловные переходы. Короткий, ближний, дальний переход.

  18. Способы адресации.

  19. Команда сравнения.

  20. Команды условных переходов.

  21. Команда XLAT/XLATB.

  22. Команда LEA.

  23. Команды десятичной арифметики.

  24. Команды сдвига.

  25. Команда организации цикла.

  26. Строковые операции. Префиксы повторения.

  27. Стек. Регистры, связанные со стеком. Команды записи/извлечения из стека.

  28. Стек. Использование при вызове подпрограмм. Команды вызоваподпрограммы и возврата.

  29. Прерывания. Назначение, виды прерываний. Таблица векторов прерываний.

  30. Срабатывание прерывания. Обработчик прерывания в реальном режиме. Возврат из обработчика прерывания.

  31. Процессор 80386. Разрядность, регистры.

  32. Защищённый режим работы процессора. Многозадачность.

  33. Модели памяти в защищённом режиме. Регистры управления памятью. Страничное преобразование.

  34. Процессоры x86-64. Регистры. Режимы работы.

  35. Математический сопроцессор. Типы данных. Представление вещественных чисел.

  36. Математический сопроцессор. Регистры.

  37. Математический сопроцессор. Особые числа.

  38. Математический сопроцессор. Классификация команд.

  39. Расширение MMX. Назначение. Типы данных.

  40. Расширение MMX. Регистры. Классификация команд.

  41. Расширение SSE. Назначение. Типы данных. Регистры.

  42. Макроопределения. Назначение.

  43. Макроопределения. Директивы присваивания и отождествления.

  44. Макроопределения. Макрооперации.

  45. Макроопределения. Блоки повторения.

  46. Макроопределения. Директивы условного ассемблирования.

Clone this wiki locally