
; Регистровой паре 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
Задание для лабораторной работы
-
Написать программу на языке Ассемблер, реализующей заданное выражение из таблицы. Номер варианта соответствует номеру по списку.
-
Проассемблировать программу.
-
Отладить и проследить пошаговое выполнение программы с помощью отладчика 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 и включает в себя:
-
Название и цель лабораторной работы.
-
Текст задания .
-
Алгоритм реализации задания.
-
Текст рабочей программы.
-
Таблицу выполнения команд в отладчике DEBUG.
-
Выводы по работе.
КОНТРОЛЬНЫЕ ВОПРОСЫ
-
Структура и применение регистров общего назначения.
-
Назначение и виды применения команды MOV.
-
Операция сложения двоичных чисел.
-
Операция вычитания двоичных чисел и какие у неё особенности?
-
В чём различие между знаковыми и беззнаковыми данными?
-
Операция умножения беззнаковых данных и её виды.
-
В чём отличие операции умножения знаковых данных?
-
Операция деления беззнаковых данных и её виды.
-
В чём отличие операции деления знаковых данных?
-
Как можно повысить эффективность умножения или деления на степень двойки?
ЛИТЕРАТУРА
-
Абель П. Язык Ассемблера для IBM PCи программирования / Пер. с англ. Ю.В. Сальникова. – М.: Высшая школа, 1992 – 447с.
-
Нортон П. Программно - аппаратная организация IBM PC / Пер. с англ. – М.: Радио и связь., 1991 –2 56с.
-
Персональный компьютер для всех/ Под ред. А.Я. Савельева. – М.: Высшая школа, 1991 – 347с.
ВРЕМЯ, ОТВЕДЁННОЕ НА ЛАБОРАТОРНУЮ РАБОТУ
Подготовка к работе 1,5ч.
Выполнение работы 2ч.
Оформление отчёта 0,5ч.