Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЗФ / ВМСиС сборник лабораторных работ.docx
Скачиваний:
51
Добавлен:
06.11.2017
Размер:
457.26 Кб
Скачать

Лабораторная работа №3 Программирование арифметических операций.

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

Изучение арифметических команд микропроцессора семейства Intel х86 и выполнение программ арифметических операций.

  1. Задание.

    1. Предварительная часть.

      1. Изучить содержание, форму записи и последовательность выполнения целочисленных арифметических команд микропроцессора семейства Intel х86, в т.ч. INC, DEC, ADD, ADC, SUB, SBB, NEG пo [1,2].

      2. Ознакомиться со структурой и функциями регистра флагов в микропроцессоре семейства Intel х86 по [1].

      3. Разработать детальную схему алгоритма сложения двух чисел X и Y размером в двойное слово, используя команды ADD и ADC. Предполагается, что сумма не превышает 232-1 = 4294967295, т.е. также составляет двойное слово. Числа X и Y для каждой бригады приведены в таблице 3.

      4. Разработать детальную схему алгоритма получения разности X-Y используя команды SUB и SBB.

Таблица 3

Номер бригады

X

Y

K

1

21AF03B516

21AEFE6616

22010

2

111FABC816

111F984016

15010

3

3CC5763116

3CC49B3216

38010

4

12586B3816

1258694416

9010

5

24811D6716

248119A516

27110

6

3361DF1916

3361DA3916

8610

7

1F7C8AA316

1F7C892616

11010

8

178118DA16

17810ED116

27010

9

3C8A6F1116

3C8A674416

1110

10

22ADCF9616

22ADC24E16

30910

    1. Экспериментальная часть.

Написать программу на языке ассемблер в текстовом редакторе «Блокнот» реализующую следующие подпункты:

      1. Исследование команд INC и DEC. Для этого в регистр DL записать число F16. Посредством команды INC увеличить значение DL на 1, затем уменьшить на 1 с помощью команды DEC. Фиксировать значения всех используемых в программе регистров на каждом шаге выполнения программы. Фиксировать значения флагов AF и PF.

  1. Исследовать команду ADD. Используя регистры АХ и DX сложить два числа 463210 и 283910. Сложить числа 1276110 и -1554810. Сложить числа – 1238910 и -2018010. Фиксировать значения всех используемых в программе регистров на каждом шаге выполнения программы, также фиксировать значения флагов CF, AF, PF, SF.

  2. Исследовать команду ADC. Сложить два числа размером в двойное слово. Для этого взять числа X и Y в таблице 3 согласно номеру бригады. Условно разбиваем (переопределяем тип) каждое число на два слова с помощью оператора PTR. Сначала складываем младшие (правые) части исходных чисел используя команду ADD. Старшие части чисел нужно складывать по команде ADC. Использовать регистры АХ, BX, DX, СХ. Фиксировать значения всех используемых в программе регистров на каждом шаге выполнения программы, также фиксировать значения флагов CF, PF.

  1. Исследовать команду SUB. Вычесть из числа -1554810 число -2018010. Из полученного числа вычесть число 463210. Число -1554810 записать в регистр АХ, остальные числа использовать как непосредственные операнды. Фиксировать значения всех используемых в программе регистров на каждом шаге выполнения программы, также фиксировать значения флагов AF, PF, ZF.

  2. Исследовать команду SBB. Вычесть из числа X число Y. Для этого эти числа условно разбиваются на слова. Вначале вычитаются младшие части с помощью команды SUB, затем старшие части с помощью команды SBB. Результат разместить по адресу начального числа X. Использовать регистры АХ, DX, ВХ, СХ. Фиксировать значения всех используемых в программе регистров на каждом шаге выполнения программы, также фиксировать значения флагов CF, OF, SF, PF, AF, ZF.

  3. Исследовать команду NEG. С помощью команды NEG произвести вычитание из числа 40010 (непосредственный операнд - константа) числа К, взятого из таблицы 3. Использовать регистр АХ. Фиксировать значения всех используемых в программе регистров на каждом шаге выполнения программы, также фиксировать значения флагов CF, SF, AF.

  4. Произвести компоновку полученной программы, т.е. создать загрузочный модуль с опциями для tasm.exe - [/zi], а для tlink.exe - [/v].

  5. Загрузить отладчик TD и исследовать в нем работу программы в пошаговом режиме, нажимая клавишу F7.

  1. Содержание отчета.

    1. Список целочисленных арифметических команд микропроцессора семейства Intel х86.

    2. Детальная схема алгоритма вычислений для пунктов 2.2.3. и 2.2.5.

    3. Текст программы на языке ассемблер.

    4. Таблица состояния РОН и регистра флагов процессора на каждом шаге выполнения программы.

    5. Выводы.

  2. Контрольные вопросы.

    1. Какие целочисленные арифметические команды вы знаете?

    2. Что такое регистр флагов и зачем он нужен?

    3. Что такое дополнительный код?

    4. Как выполнять целочисленные арифметические операции над операндами большой размерности? Пояснить на примере.

    5. С какой целью в пункте 2.2.6. используется команда NEG ?

Соседние файлы в папке ЗФ