Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методические указания для выполнения лабораторных работ / 1-сложения, вычитания, умножения и деления двоичных чисел.DOC
Скачиваний:
72
Добавлен:
11.02.2014
Размер:
78.85 Кб
Скачать

; Регистровой паре dx:ax

DIV WERT2 ; остаток: частное в DX:AX

Команда DIV делит беззнаковые числа. Первый пример команды DIV делит 2000Н (8092) на 80Н (128). В результате остаток 00 получается в регистре AH, а частное 40Н (64) – в регистре AL. Второй пример генерирует остаток 1000Н в регистре DX и частное 0080Н в регистре AX. В третьем примере команды DIV сначала выполняется расширение слова WERT1 до двойного слова в регистровой паре DX:AX. После деления остаток 0000Н получится в регистре DX, а частное 0002Н – в регистре AX.

Команда IDIV выполняет деление знаковых чисел. Если в примере вместо команды DIV записать команду IDIV, то первый пример делит 2000Н (положительное число) на 80Н (отрицательное число). Остаток от деления получается в регистре AH, а частное 0С0Н (-64) – в регистре AL.

Таким образом, если делимое и делитель имеют одинаковый знаковый бит, то команды DIV и IDIV генерируют одинаковый результат. Но если делимое и делитель имеют разные знаковые биты, то команда DIV генерирует положительное частное, а команда IDIV– отрицательное.

Для более эффективного деления на степень двойки лучше использовать команду SHR сдвига вправо для беззнаковых полей и команду SAR - для знаковых.

Команда NEG обеспечивает преобразование знака двоичных чисел из положительного в отрицательное и наоборот. Практически команда устанавливает противоположные значения битов и прибавляет 1. Например:

NEG AX

NEG BL

NEG WERT1

Задание для лабораторной работы

  1. Написать программу на языке Ассемблер, реализующей заданное выражение из таблицы. Номер варианта соответствует номеру по списку.

  2. Проассемблировать программу.

  3. Отладить и проследить пошаговое выполнение программы с помощью отладчика DEBUG либо TURBO DEBUGER. Результат представить в виде таблицы:

Выполняемая команда

Значения регистров

Значения флагов

Задание для выполнения лабораторной работы:

№ варианта

Выражение

№ Варианта

Выражение

1

Y= (a*b – 5c) / (a+d)

16

Y = (a*d - c) / (b+6)

2

Y = (4*d – b*b) / (a+c)*2

17

Y = (a*4 – c*3) / (b+d)

3

Y = ((c - b)*4) / (b+d)

18

Y = ((a+d)*c) / (d -15)*2

4

Y = (a*b+d) / (7*c)

19

Y = ((a + c)*8 – b) / d*2

5

Y = ((a+b)*(d+c)) / 8

20

Y = ((a+5) - d) / (c+b)*8

6

Y = ((a - b)*4 ) / (d+c)*2

21

Y = (a*b+7) / (c – d)*6

7

Y = (a - b)*(d - c) / (b+d)

22

Y = ((a –b+c)*4) / (d*3)

8

Y = (a*c*4 - d) / (c*8)

23

Y = ((a*5 – b*4)*d) / c

9

Y = ((a+c - d)*6) / d*8

24

Y = ((a – b)*3+(c*2)) / d

10

Y = ((a -d)*3 - c) / (b-5)*2

25

Y = ((a*13 )- d*c)/ (b+12)

11

Y = (a*d - c) / (b+32)

26

Y = ((a+b)*4 – d) / (c*7)

12

Y = ((a+d)*3 )/ (d - b)*4

27

Y = ((a*6 +d)*4) / (c+b)

13

Y = ((a - b)*4 - d) / c

28

Y = (a*b – d*2) / (c+123)

14

Y = (a*2 - d*3) / (c+b)

29

Y = ((a -43)*4 +b) / (c- d)

15

Y = ((a - 5)*8-(c+b)) / d

30

Y = ((a+d –c + d)*2 ) / 8

В таблице : A - № по списку + дата рождения (0-31)

B - № по списку – месяц рождения (0-12)

C - № по списку

D - № по списку * 2

СОДЕРЖАНИЕ И ОФОРМЛЕНИЕ ОТЧЁТА

Отчёт выполняется на отдельных листах формата А4 и включает в себя:

  1. Название и цель лабораторной работы.

  2. Текст задания .

  3. Алгоритм реализации задания.

  4. Текст рабочей программы.

  5. Таблицу выполнения команд в отладчике DEBUG.

  6. Выводы по работе.

КОНТРОЛЬНЫЕ ВОПРОСЫ

  1. Структура и применение регистров общего назначения.

  2. Назначение и виды применения команды MOV.

  3. Операция сложения двоичных чисел.

  4. Операция вычитания двоичных чисел и какие у неё особенности?

  5. В чём различие между знаковыми и беззнаковыми данными?

  6. Операция умножения беззнаковых данных и её виды.

  7. В чём отличие операции умножения знаковых данных?

  8. Операция деления беззнаковых данных и её виды.

  9. В чём отличие операции деления знаковых данных?

  10. Как можно повысить эффективность умножения или деления на степень двойки?

ЛИТЕРАТУРА

  1. Абель П. Язык Ассемблера для IBM PCи программирования / Пер. с англ. Ю.В. Сальникова. – М.: Высшая школа, 1992 – 447с.

  2. Нортон П. Программно - аппаратная организация IBM PC / Пер. с англ. – М.: Радио и связь., 1991 –2 56с.

  3. Персональный компьютер для всех/ Под ред. А.Я. Савельева. – М.: Высшая школа, 1991 – 347с.

ВРЕМЯ, ОТВЕДЁННОЕ НА ЛАБОРАТОРНУЮ РАБОТУ

Подготовка к работе 1,5ч.

Выполнение работы 2ч.

Оформление отчёта 0,5ч.

7