- •МІнІстерство оСвІти і науКи УкраЇни
- •Двоичные числа
- •Шестнадцатеричные числа
- •1.2.4. Числа со знаком.
- •Знаковый бит
- •Дополнение до двух.
- •1.2. Представление данных.
- •00001001 (Инверсия бит)
- •Максимальные и минимальные значения
- •Лабораторная работа №2
- •Трансляция программы
- •Компоновка программы
- •Отладка программы
- •Лабораторная работа №3
- •Теоретическая часть Упрощенные директивы сегментации
- •I этап.
- •Лабораторная работа №4
- •Лабораторная работа №5
- •Лабораторная работа №7
- •Вариант №1. (*)
I этап.
Создать программу со стандартными директивами (3 сегмента, меткой входа и т.д.) в которой:
В сегменте данных описать следующие переменные:
А) Длиной в байт:
PRDB1 – не инициализированную
PRDB2 – символьная строка
PRDB3 – десятиричная константа
PRDB4 – шест. константа
PRDB5 – двоич. константа
PRDB6 – таблица
PRDB7 – символьное число
PRDB8 – семь единиц
А) Длиной в слово:
PRDW1 – шест. константа
PRDW2 – двоич. константа
PRDW3 – четыре разные константы
PRDW4 – восемь нулей
Объявить сегмент стека длиной 256 байт
В сегменте кода:
Настроить DS
Очистить АХ и ВХ
Загрузить PRDB4 в AX
Загрузить PRDW2 в BX
Сложить АХ и ВХ
Загрузить АХ в стек
Выгрузить стек в ВХ
Завершить программу
Лабораторная работа №4
Цель работы: изучить правила работы с арифметическими командами Ассемблера.
Методические указания
В дальнейшем предполагается, что а, в и с – однобайтовые числа без знака.
Перед выполнением работы, необходимо оценить максимальное значение результата. Например:
1) А*В-С; Максимальное значение: 255*255 – 0=65 025 -> для сохранения результата необходимо место в памяти размером в слово. Поэтому нужно зарезервировать переменную (DW) или две (DB) для хранения результата.
2) А*(В+С); Максимальное значение: 255 * (255 + 255) =130 050 -> для сохранения результата необходимо место в памяти размером в двойное слово (DD). Поэтому нужно зарезервировать две переменные (DW) для хранения результата.
Кроме того, если результат может быть отрицательным, то для фиксирования этого предусмотреть переменную в памяти размером в байт в которую, если знак (+) занести 0, и, если знак (-)-занести FF. Сам результат представить по абсолютной величине.
Вариант №1. (3)
у=а*с+в
Проверка:
-
а
в
с
Ответ
Десятиричн.
Шестнадцатиричн
Число
y_h
(DB)
y_l
(DB)
4
3
2
11
B
00
0B
4
3
255
1023
3FF
03
FF
4
255
2
263
107
01
07
255
255
255
65280
FF00
FF
00
Вариант №2 (3).
у=(а+в)/(с+1)
Проверка:
-
а
в
с
Ответ
Десятиричн.
Шестнадцатиричн
Число
y_h (остаток)
(DB)
y_l
(частное)
(DB)
4
3
2
2
2
01
02
250
50
99
3
3
00
03
Вариант №3. (3)
у=а+в*с
Проверка:
-
А
в
с
Ответ
Десятиричн.
Шестнадцатиричн
Число
y_h
(DB)
y_l
(DB)
3
4
2
11
B
00
0B
3
4
255
1023
3FF
03
FF
255
4
2
263
107
01
07
255
255
255
65280
FF00
FF
00
Вариант №4 (3).
у=(а+в)/с
Проверка:
-
а
в
с
Ответ
Десятиричн.
Шестнадцатиричн
Число
y_h (остаток)
(DB)
y_l
(частное)
(DB)
4
3
2
3
3
01
03
250
50
100
3
3
00
03
250
50
1
300
Ошибка
(почему?)
-
-
Вариант №5. (3)
у=а/b+c
Проверка:
-
а
в
с
Ответ
Десятиричн.
Шестнадцатиричн
Число
y_h
(DB)
y_l
(DB)
8
3
2
4
4
00
04
25
5
255
260
144
01
44
Вариант №6. (3)
у=а/b+c+64
Проверка:
-
а
в
с
Ответ
Десятиричн.
Шестнадцатиричн
Число
y_h
(DB)
y_l
(DB)
8
3
2
68
44
00
44
25
5
255
324
104
01
04
Вариант №7. (3)
у=а*а+в
Проверка:
-
а
в
Ответ
Десятиричн.
Шестнадцатиричн
Число
y_h
(DB)
y_l
(DB)
4
3
19
13
00
13
4
255
271
10F
01
0F
255
255
65280
FF00
FF
00
Вариант №8. (4)
у=c-а/b
Проверка:
-
а
в
с
Ответ
Десятиричн.
Шестнадцатиричн
Число
y_h (знак)
(DB)
y_l
(модуль
результата)
(DB)
8
2
3
1
1
00
01
8
3
1
-1
1
FF
01
255
1
1
-254
FE
FF
FE
Вариант №9. (4)
у=(в-a)/с
Проверка:
а |
в |
с |
Ответ | ||||
Десятиричн. |
Шестнадцатиричн | ||||||
Число |
y_h (остаток) (DB) |
y_l (частное) (DB) |
y_z (знак) (DB) | ||||
3 |
10 |
2 |
3 |
3 |
01 |
03 |
00 |
10 |
3 |
2 |
-3 |
3 |
01 |
03 |
FF |
Вариант №10. (4)
у=в/с+a*c
Проверка:
-
А
в
с
Ответ
Десятиричн.
Шестнадцатиричн
Число
y_h
(DB)
y_l
(DB)
10
10
3
33
21
00
21
255
255
255
65026
FE02
FE
02
Вариант №11 (4).
у=a*в-с
Проверка:
а |
в |
с |
Ответ | ||||
Десятиричн. |
Шестнадцатиричн | ||||||
Число |
y_h (DB) |
y_l (DB) |
y_z (знак) (DB) | ||||
2 |
3 |
4 |
2 |
2 |
00 |
02 |
00 |
255 |
255 |
2 |
65023 |
FDFF |
FD |
FF |
00 |
2 |
3 |
8 |
-2 |
2 |
00 |
02 |
11 |
Вариант №12. (4)
у=a*в-с/b
Проверка:
а |
в |
с |
Ответ | ||||
Десятиричн. |
Шестнадцатиричн | ||||||
Число |
y_h (DB) |
y_l (DB) |
y_z (знак) (DB) | ||||
4 |
3 |
7 |
10 |
2 |
00 |
02 |
00 |
255 |
255 |
2 |
65025 |
FE01 |
FE |
01 |
00 |
2 |
1 |
255 |
-253 |
FD |
00 |
FD |
11 |
Вариант №13. (4)
у=(а+в)*с
Проверка:
-
а
в
с
Ответ
Десятиричн.
Шестнадцатиричн
Число
y_h
(DW)
y_l
(DW)
4
3
2
14
E
0000
000E
250
50
100
30000
7530
0000
7530
250
250
250
125000
1Е848
0001
Е848
Вариант №14.(4)
у=(а-в)*с
Проверка:
а |
в |
с |
Ответ | ||||
Десятиричн. |
Шестнадцатиричн | ||||||
Число |
y_h (DB) |
y_l (DB) |
y_z (знак) (DB) | ||||
10 |
5 |
3 |
15 |
F |
00 |
0F |
00 |
5 |
10 |
3 |
-15 |
F |
00 |
0F |
FF |
1 |
251 |
250 |
62500 |
F424 |
F4 |
24 |
FF |
Вариант №15 .(4)
у=а/с-b
Проверка:
-
а
в
с
Ответ
Десятиричн.
Шестнадцатиричн
Число
y_z (знак)
(DB)
y
(модуль
результата)
(DB)
8
3
2
1
1
00
01
8
3
3
-1
1
FF
01
25
255
25
-254
FE
FF
FE
Вариант №16. (4)
у=а/(b*b)-c
Проверка:
а |
в |
с |
Ответ | ||||
Десятиричн. |
Шестнадцатиричн | ||||||
Число |
y_h (DB) |
y_l (DB) |
y_z (знак) (DB) | ||||
8 |
2 |
1 |
1 |
1 |
00 |
01 |
00 |
20 |
3 |
10 |
-8 |
8 |
00 |
08 |
FF |
Вариант №17. (4)
у=в/с+a*а
Проверка:
-
А
в
с
Ответ
Десятиричн.
Шестнадцатиричн
Число
y_h
(DB)
y_l
(DB)
10
10
3
103
67
00
67
255
255
255
65026
FE02
FE
02
Вариант №18. (4)
у=а/b+(c-4)
Проверка:
а |
в |
с |
Ответ | ||||
Десятиричн. |
Шестнадцатиричн | ||||||
Число |
y_h (DB) |
y_l (DB) |
y_z (знак) (DB) | ||||
8 |
3 |
2 |
0 |
0 |
00 |
00 |
00 |
25 |
5 |
255 |
256 |
100 |
01 |
00 |
00 |
1 |
1 |
1 |
-2 |
2 |
00 |
02 |
FF |
Вариант №19. (4)
у=(1+c)-а/b
Проверка:
а |
в |
с |
Ответ | ||||
Десятиричн. |
Шестнадцатиричн | ||||||
Число |
y_z (знак) (DB) |
y_h (модуль результата) (DB) |
y_l (модуль результата) (DB) | ||||
8 |
2 |
4 |
1 |
1 |
00 |
00 |
01 |
8 |
3 |
3 |
-1 |
1 |
FF |
00 |
01 |
255 |
1 |
0 |
-254 |
FE |
FF |
00 |
FE |
0 |
255 |
255 |
256 |
100 |
00 |
01 |
00 |
Вариант №20. (4)
у=в/с-a*255
Проверка:
А |
в |
с |
Ответ | ||||
Десятиричн. |
Шестнадцатиричн | ||||||
Число |
y_h (DB) |
y_l (DB) |
y_z (знак) (DB) | ||||
0 |
10 |
3 |
2 |
2 |
00 |
02 |
00 |
255 |
255 |
5 |
-64974 |
FDCE |
FD |
CE |
FF |
Вариант №21. (5)
у=(в-1)/с+a*а
Проверка:
А |
в |
с |
Ответ | ||||
Десятиричн. |
Шестнадцатиричн | ||||||
Число |
y_h (DB) |
y_l (DB) |
y_h (знак) (DB) | ||||
10 |
10 |
3 |
103 |
67 |
00 |
67 |
00 |
255 |
255 |
255 |
65025 |
FE01 |
FE |
01 |
00 |
1 |
0 |
5 |
1 |
1 |
00 |
01 |
00 |
0 |
0 |
1 |
-1 |
1 |
00 |
01 |
FF |
Вариант №22. (5)
у=(в*2)/с+a*а
Проверка:
А |
в |
с |
Ответ | ||||
Десятиричн. |
Шестнадцатиричн | ||||||
Число |
y_h (DB) |
y_l (DB) |
y_h (знак) (DB) | ||||
10 |
10 |
3 |
106 |
6A |
00 |
6A |
00 |
255 |
255 |
255 |
65535 |
FFFF |
FF |
FF |
00 |
255 |
255 |
1 |
Ошибка (почему?) |
|
|
|
|
Вариант №23. (5)
у=в/2-a*а*c
Проверка:
А |
в |
с |
Ответ | ||||
Десятиричн. |
Шестнадцатиричн | ||||||
Число |
y_h (DW) |
y_l (DW) |
y_z (знак) (DB) | ||||
2 |
100 |
3 |
88 |
58 |
0000 |
0058 |
00 |
5 |
40 |
2 |
-30 |
1E |
0000 |
001E |
FF |
200 |
200 |
2 |
-79990 |
1381C |
0001 |
381C |
FF |
Вариант №24. (5)
у=(c*4+28/b)/(a*b-c-1)
Вариант №25. (5)
у=(c*2++a-21)/(c/a*b+1)
Вариант №26. (5)
у=(c*b+23)/(a/2-4*b-1)
Вариант №27. (5)
у=(b/2-53/c)/(b-a*c+1)
Вариант №28. (5)
у=(8*b+1-c)/(a/2+b*c)
Вариант №29. (5)
у=(a-b/4-1)/(c/31+a*b)
Вариант №30. (5)
у=(2*c-b+23)/(a/4-1)