3. Завдання
1.Виконується на самостійній підготовці перед виконанням дослідної роботи.
1.1.Скласти програму для виконання за прикладом 1 таких тотожностей:
1.Y=X1+35-2*X2
2.Y=2*X2+4*X1+7
3.Y=X2+3*X1-15
4.Y=X1-X2-40
5.Y=4*X1-3*X2+16
Значення чисел Х1,Х2 подані в таблиці 1 для вказаного викладачем варіанту (числа десяткові).
Таблиця 1
Числа |
ВАРІАНТИ |
||||
1 |
2 |
3 |
4 |
5 |
|
Х1 |
15;9 |
41;26 |
99;80 |
65;30 |
50;2 |
X2 |
21;11 |
39;14 |
66;75 |
45;15 |
29;2 |
4.Виконується в лабораторії
Приклад 1
Вирахувати Y=3*(X1-4+X2).Результат записати в комірку пам’яті за адресою 8052. Число Х2 зберігається в комірці 8051 , число Х1 - в комірці 8052.
Необхідно пам’ятати, що при записі адреси в машинному коді молодший байт вводиться другим байтом ,а старший-третім байтом команди.
Асемблер Машинний код
LDA 80 52 3А 52 80
1 байт 2 байт 3 байт 1 байт 2 байт 3 байт
де 52-молодший байт
80-старший байт
Приклад 2
Адреса |
Машинний код |
Асемблер |
Коментатор |
8080 |
3А 51 80 |
LDA 8051 |
Завантаження в А числа Х1 з комірки 8051 |
8003 |
D6 04 |
SUІ 04 |
Віднімання від вмісту А константи 4 (10)=4(16) |
8005 |
21 52 80 |
LXІ H,8052 |
Завантаження в регістри H,L адреси 8052 |
8008 |
86 |
ADD M |
Додавання до вмісту А вмісту комірки пам’яті, адреса якої зберігається в регістрах H,L |
8009 |
86 |
ADD M |
Те саме |
800A |
86 |
ADD M |
Те саме |
800В |
32 50 80 |
STA 8050 |
Завантаження вмісту А в комір ку 8050 |
800Е |
76 |
HLT |
Зупинка |
4.2. Скласти програму за прикладом 2, яка б демонструвала команди зсуву з використанням команд безумовного і умовного переходів. Скласти розгалужену програму контролю вмісту комірок пам'яті ОЗП за адресами Адр1=8030, Адр2=8031.
Якщо число Х1, яке зберігається за адресою Адр1, менше числа Х2 ( адреса Адр2 ) - зсунути вміст акумулятора вліво на одну позицію, Х1>Х2 - вправо на одну позицію, Х1=Х2 зсув вправо через перенос.
Приклад 2
Адреса |
Машинний код |
Асемблер |
Коментар |
8000 |
3A 30 80 |
LDA 8030 |
Завантаження в А числа Х1, з комірки Адр1 |
8003 |
21 31 80 |
LHІ,H8031 |
Завантаження в регістри H,L |
8006 |
BE |
CMPM |
Порівняння вмісту А з вмістом комірки пам'яті, адрес якої зберігається в регістрах H,L адреси Адр2 |
8007 |
DA 11 80 |
JC LAB |
Якщо вміст А менший вмісту комірки пам'яті за адресою Адр2, то перехід до виконання команди з мітками LAB RLG інакше виконується наступна команда. |
800А |
СА 15 80 |
JZ LAB1 |
Якщо вміст Х1=Х2, то перехід до виконання команди LAB1 RAR, інакше виконується наступна команда |
800D |
07 |
RLG |
Зсув вліво |
800Е |
C3 16 80 |
JMP END |
Перехід до команди HLT |
8011 |
OF |
LAB RRC |
Зсув вправо |
8012 |
C3 16 80 |
JMP END |
Перехід до команди HLT |
8015 |
1F |
LAB1 RAR |
Зсув вправо через перенос |
8016 |
32 50 80 |
STA 8050 |
Запис вмісту А в пам’ять за адресою 8050 |
8019 |
76 |
END HLT |
Зупинка |
4.3 Скласти програму для запису даних в регістри загального призначення B,C,D з записом вмісту відповідного регістру в акумулятор. Просумувати вміст А з регістром і виконати логічну операцію над регістром суми, результат занести в пам'ять.
Завдання виконувати за варіантом вказаним викладачем, за прикладом 3.
Таблиця 3
Варіант |
Регістри |
Число |
Логічна операція |
1 |
В , С |
17;99 |
Операція " 1 " |
2 |
D , B |
68;45 |
Операція " Виключне АБО " |
3 |
C , D |
10;4 |
Операція " АБО " |
4 |
D , C |
54;86 |
Порівняння регістру С з вмістом акумулятора |
Приклад 3.
Адреса |
Машинний код |
Асемблер |
Коментар |
8000 |
0604 |
MVІB,04 |
Записати число в регістр В 4(10)=4(16) |
8002 |
0Е06 |
MVІC,06 |
Записати число в регістр С С 6(10)=6(16) |
8004 |
78 |
MOV A,B |
Занести вміст регістру В в А |
8005 |
81 |
ADDC |
Сумування вмісту А і регістру С |
8006 |
2F |
СМА |
Інвертування суми (доповнення) |
8007 |
32 50 80 |
STA 8050 |
Записати результат в пам'ять |
800С |
76 |
HLT |
Зупинка |
