Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки України
Національний Університет «Львівська політехніка»
Розрахункова робота №1
З дисципліни: «Мікропроцесорні засоби та системи»
Варіант №7
Завдання №1
Підняти число 10.5 до квадрату за допомогою засобів Assembler
Будемо вважати що число записане в комірці адреса якої 008F
Адреса
Машинний код
Мнемокод
Пояснення
шістнадцятковий
двійковий
8200
21
00100001
LXI H,008F
HL←008F
8201
8F
10001111
8202
820
00
00000000
8203
3A
00111010
LDA, 0000
A←0000
8204
00
00000000
8205
00
00000000
8206
86
10000110
ADD M
A←A+HL
8207
11
00010001
LXI D, 0000
DE←0000
8208
00
00000000
8209
00
00000000
820A
EB
11101011
XCHG
(H)↔(D) (L)↔(E)
820B
0E
00001110
MVI C,08
C←08
820C
08
00001000
820D
29
00101001
DAD H
HL← HL+HL
820E
07
00000111
RLC
Зсув ліворуч вмісту акумулятора
820F
D2
11010010
JNC 8213
Аналіз розряду множника (Сбіт=0) то на 8213
8210
13
00010011
8211
82
10000010
8212
19
00011001
DAD D
HL← HL+DE
8213
0D
00001101
DCR C
C←С-1
8214
C2
11000010
JNZ 820D
Перехід на 820D
8215
0D
00001101
8216
82
10000010
8217
76
01110110
HLT
Кінець
Задання №2
Реалізувати часову затримку у розмірі 10∙
10
−3
секунд
Частота процесора f=2 МГц, час одного такту
1
2∙
10
6
=0,5∙
10
−6
Кількість тактів для забезпечення часу затримки
10∙
10
−3
0,5∙
10
−6
=20000
Отож, для забезпечення часової затримки необхідно, 20000 тактів.
Отже: команда MVI D, FF займає 7 тактів
команда MVI C, A6 займає 7 тактів
Цими командами в рестри D і С відповідно завантажуємо значення FF та A6, це кількість циклів які має виконати програма.
В першому циклі:
Команда DCR C займає 5 тактів
Команда LDA 8500 займає 13 тактів
Команда JNZ 8204 займає 10 тактів
В сумі весь цикл займає 5+10+13=28 тактів, і виконується A6h→166d виходить що даний цикл займає 166*28=4648 тактів.
У другому циклі:
Команда DCR D займає 5 тактів
Команда LHLD 8500 займає 16 тактів
Команда SHLD 8500 займає 16 тактів
Команда LDA 8500 займає 13 тактів
Команда JNZ 820B займає 10 тактів
В сумі весь цикл займає 5+16+16+13+10=60 тактів, і виконується FFh→255d виходить що даний цикл займає 255*60=15300 тактів.
Решту тих тактів що залишилося займаємо командами:
Команда LDAX D займає 7 тактів (використовуємо двічі)
Команда STAX D займає 7 тактів
Команда NOP займає 5 тактів (використовуємо двічі)
Команда HLT займає 7 тактів
Підсумовуючи отримуємо: 7+7+4648+15300+7+7+7+5+5+7=20000, тим самим забезпечуємо витримку часу у 0,01 с.
Адреса
Машинний код
Мнемокод
Пояснення
шістнадцятковий
двійковий
8200
16
00010110
MVI D,FF
D←FF
7
8201
FF
11111111
8202
820
0E
00001110
MVI C, A6
C←0E
7
8203
A6
10100110
8204
0D
00001101
DCR C
C←C-1
5
8205
3A
00111010
LDA 8500
A←8500
13
8206
00
00000000
8207
85
10000101
8208
C2
11000010
JNZ 8204
Умова переходу
10
8209
04
00000100
890A
82
10000010
820B
15
00010101
DCR D
D←D-1
5
820C
2A
00101010
LHLD 8500
L←(B3)(B2)
H←((B3)(B2)+1)
16
820D
00
00000000
820E
85
10000101
820F
8211
22
00100010
SHLD 8500
(B3)(B2) ←L
((B3)(B2)+1) ←H
16
8210
00
00000000
8211
85
10000101
8212
3A
00111010
LDA 8500
A←8500
13
8213
00
00000000
8214
85
10000101
8215
C2
11000010
JNZ 820B
Умова переходу
10
8216
0B
00001011
8217
82
10000010
8218
1A
00011010
LDAX D
A←DE
7
8219
12
00010010
STAX D
DE←A
7
821A
1A
00011010
LDAX D
A←DE
7
821B
00
00000000
NOP
Порожня команда
5
821C
00
00000000
NOP
Порожня команда
5
821D
76
01110110
HLT
Зупинка
7