Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Контрольная по ЭВМ / 3-МУ_Асс-арифм.doc
Скачиваний:
15
Добавлен:
20.02.2016
Размер:
169.98 Кб
Скачать

Практическая работа 2 программирование арифметических задач

    1. Цель работы

Изучение команд, применяемых при решении арифметических задач (сложения, вычитания, умножения, деления знаковых и беззнаковых целых чисел, безусловных и условных переходов).

    1. Условные обозначения

При описании команд используются следующие обозначения:

  • op1, op2операнды;

  • imm или im – непосредственный операнд (операнд, указанный в самой команде);

  • reg – регистр;

  • mem – память.

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

MOV op1, op2

Алгоритм: на место первого операнда пересылается (копируется) значение второго: ор1 := ор2. Флаги не меняются. Размеры операндов должны быть одинаковы.

Допустимые комбинации операндов перечислены в таблице 2.1

Таблица 2.1 - Допустимые комбинации операндов

ор1

ор2

reg

im, reg, mem

mem

im, reg

Запрещены пересылки:

  • из одной ячейки памяти в другую;

  • из одного сегментного регистра в другой;

  • непосредственного операнда в сегментный регистр;

  • адреса в сегментный регистр.

Обойти запреты можно, использовав промежуточный регистр.

    1. Команды сложения и вычитания

В ПК делается различие между целыми числами без знака (неотрицательными) и со знаком. Знаковые числа записываются в дополнительном коде.

Сложение и вычитание беззнаковых и знаковых чисел производится по одним и тем же алгоритмам, при этом возможны особые случаи, когда настоящий (в математическом смысле) результат выходит за диапазон представимых чисел, и результат искажается. Этот факт фиксируется во флагах CF и OF.

Сложение: ADD op1, op2

Вычитание (subtract): SUB op1, op2

Алгоритм: ор1:=ор1ор2.

Размеры операндов должны быть одинаковыми. Допустимые комбинации операндов – такие же, как у команды пересылки (см. таблицу 2.1). Меняются флаги переноса CF, переполнения OF, знака SF нуля ZF, вспомогательного переноса AF и паритета PF.

Увеличение на 1 (increment): INC op

Уменьшение на 1 (decrement): DEC op

Операнд op может быть reg или mem. В отличие от команд сложения и вычитания указанные команды не меняют флаг переноса CF.

Изменение знака (negative): NEG op

Команда NEG рассматривает свой операнд как число со знаком и меняет его знак на противоположный: ор := -ор.

Операнд op может быть reg или mem. Меняются флаги, перечисленные при описании команды сложения.

Особый случай: если ор – байт и равен -128 (80h), то операнд не меняется (байтовое знаковое число +128 не существует). Аналогично для чисел другого размера, например, для чисел-слов: если значение операнда равно минимальному отрицательному числу -32768 (8000h), то команда не меняет операнд. В этом особом случае флаг OF получает значение 1 (при других операндах OF=0). При нулевом операнде флаг CF равен 0, при других 1. Флаги SF и ZF меняются, как обычно.

    1. Команды умножения

Умножение беззнаковых и знаковых чисел выполняется по разным алгоритмам, в связи с чем имеются две команды умножения.

Умножение целых без знака (multiply): MUL ор

Умножение целых со знаком (integer multiply): IMUL ор

Операнд op может быть reg или mem (не может быть imm !!!). Команда воздействует на флаги CF и OF.

Регистры, которые используются в этих операциях, представлены в таблице 2.2.

Таблица 2.2 - Регистры, используемые в операциях умножения

Множимое

Множитель

Результат

AL

ор8

AX

AX

ор16

DX:AX

EAX

ор32

EDX:EAX

Примечание - Обозначения ор8, ор16 и ор32 – соответственно операнды размером байт, слово и двойное слово.

Под результат умножения отводится в два раза больше места, чем под сомножители. Это связано с тем, что умножение n-значных чисел в общем случае дает произведение из 2n цифр. В то же время не всегда величине произведения нужен удвоенный формат. О фактической величине произведения судят по флагам. Если CF=OF=1 - произведение занимает двойной формат. Если CF=OF=0 - достаточен формат сомножителей. В последнем случае можно считать, что произведение байтов занимает только регистр AL, а произведение слов - только регистр АХ.

Соседние файлы в папке Контрольная по ЭВМ