Розраха Білецький (Моцьо)
.docxМіністерство освіти і науки України
Національний Університет «Львівська політехніка»
Розрахункова робота №1
З дисципліни: «Мікропроцесорні засоби та системи»
Варіант №7
Виконав: Моцьо В.І
Група: ЕКТ - 31
Викладач: Білецький Ю.О.
Завдання №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
Реалізувати часову затримку у розмірі секунд
Частота процесора f=2 МГц, час одного такту
Кількість тактів для забезпечення часу затримки
Отож, для забезпечення часової затримки необхідно, 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 |
Львів-2018