Курсовая работа: Проектування комп'ютера
біти
24-22: код операції
біти
21-0: не використовуються (=0)
\
Роз'яснення та аналіз основних принципів
побудови комп'ютерів на прикладі визначених на реалізацію інструкцій
Структура СК після модифікації:

Рис 1. Функціональна схема СК після модифікації
В СК було додано 13 інструкцій, внаслідок чого
поле КОП збільшилося на 2 біти до 5 біт (максимально 32 інструкції з яких використано
21). Решта частина коду операції не зазнала зміни. Був доданий стек глибиною 32
слова по 32 біти, покажчик вершини стеку, прапорець стану ZF.
Перевірка правильності роботи
реалізованих команд у прикладах
1. div: 45/5=9.
Програма:
lw 0 1 num1
lw 0 2 num2
div 1 2 3
done halt
num1 .fill 45
num2 .fill 5
Машинний
код:
8454148
8519685
34209795
25165824
45
5
Кінцевий
стан:
@@@
state:
pc 4
ZF
= 0
stack:
memory:
mem[
0 ] 8454148
mem[
1 ] 8519685
mem[
2 ] 34209795
mem[
3 ] 25165824
mem[
4 ] 45
mem[
5 ] 5
registers:
reg[
0 ] 0
reg[
1 ] 45
reg[
2 ] 5
reg[
3 ] 9
reg[
4 ] 0
reg[
5 ] 0
reg[
6 ] 0
reg[
7 ] 0
end
state
2.
imul: 3*(-4)=-12.
Програма:
lw
0 1 num1
lw
0 2 num2
imul 1 2 3
done
halt
num1
.fill 3
num2
.fill -4
Машинний
код:
8454148
8519685
34209795
25165824
3
-4
Кінцевий
стан:
@@@
state:
pc 4
ZF
= 0
stack:
memory:
mem[
0 ] 8454148
mem[
1 ] 8519685
mem[
2 ] 38404099
mem[
3 ] 25165824
mem[
4 ] 3
mem[
5 ] -4
registers:
reg[
0 ] 0
reg[
1 ] 3
reg[
2 ] -4
reg[
3 ] -12
reg[
4 ] 0
reg[
5 ] 0
reg[
6 ] 0
reg[
7 ] 0
end
state
3.
xidiv: 30/(-5)=-6, обміняти операнди місцями.
Програма:
lw 0 1 num1
lw 0 2 num2
xidiv 1 2 3
done halt
num1 .fill 30
num2 .fill -5
Машинний
код:
8454148
8519685
42598403
25165824
30
-5
Кінцевий
стан:
@@@
state:
pc 4
ZF
= 0
stack:
memory:
mem[
0 ] 8454148
mem[
1 ] 8519685
mem[
2 ] 42598403
mem[
3 ] 25165824
mem[
4 ] 30
mem[
5 ] -5
registers:
reg[
0 ] 0
reg[
1 ] -5
reg[
2 ] 30
reg[
3 ] -6
reg[
4 ] 0
reg[
5 ] 0
reg[
6 ] 0
reg[
7 ] 0
end
state
4.and:
5&3=1
0101
&
0011
0001
Програма:
lw 0 1 num1
lw 0 2 num2
andf 1 2 3
done halt
num1 .fill 5
num2 .fill 3
Машинний
код:
8454148
8519685
46792707
25165824
5
3
Кінцевий
стан:
@@@
@@@
state:
pc 4
ZF
= 0
stack:
memory:
mem[
0 ] 8454148
mem[
1 ] 8519685
mem[
2 ] 46792707
mem[
3 ] 25165824
mem[
4 ] 5
mem[
5 ] 3
registers:
reg[
0 ] 0
reg[
1 ] 5
reg[
2 ] 3
reg[
3 ] 1
reg[
4 ] 0
reg[
5 ] 0
reg[
6 ] 0
reg[
7 ] 0
end
state
xor:
5#3=6
0101
#
0011
0110
Програма:
lw 0 1 num1
lw 0 2 num2
xorf 1 2 3
done halt
num1 .fill 3
num2 .fill 5
Машинний
код:
8454148
8519685
50987011
25165824
3
5
Кінцевий
стан:
@@@
state:
pc 4
ZF
= 0
stack:
memory:
mem[
0 ] 8454148
mem[
1 ] 8519685
mem[
2 ] 50987011
mem[
3 ] 25165824
mem[
4 ] 3
mem[
5 ] 5
registers:
reg[
0 ] 0
reg[
1 ] 3
reg[
2 ] 5
reg[
3 ] 6
reg[
4 ] 0
reg[
5 ] 0
reg[
6 ] 0
reg[
7 ] 0
end
state
6.
cmpge: 1= 5>=3
Програма:
@@@
state:
pc 4
ZF
= 0
stack:
memory:
mem[
0 ] 8454148
mem[
1 ] 8519685
mem[
2 ] 55181315
mem[
3 ] 25165824
mem[
4 ] 5
mem[
5 ] 3
registers:
reg[
0 ] 0
reg[
1 ] 5
reg[
2 ] 3
reg[
3 ] 1
reg[
4 ] 0
reg[
5 ] 0
reg[
6 ] 0
reg[
7 ] 0
end
state
7. jma:
if (7>=4) reg[4]=7; else reg[5]=4, reg[4]=7.
Програма:
lw 0 1 num1
lw 0 2 num2
jmae 1 2 1
lw 0 5 num2
lw 0 4 num1
done halt
num1 .fill 7
num2 .fill 4
Машинний
код:
8454150
8519687
59375617
8716295
8650758
25165824
7
3
Кінцевий
стан:
@@@
state:
pc 6
ZF
= 0
stack:
memory:
mem[
0 ] 8454150
mem[
1 ] 8519687
mem[
2 ] 59375617
mem[
3 ] 8716295
mem[
4 ] 8650758
mem[
5 ] 25165824
mem[
6 ] 7
mem[
7 ] 4
registers:
reg[
0 ] 0
reg[
1 ] 7
reg[
2 ] 4
reg[
3 ] 0
reg[
4 ] 7
reg[
5 ] 0
reg[
6 ] 0
reg[
7 ] 0
end
state
8.
jmnae: if (5!>=6) reg[4]=6; else reg[4]=5, reg[5]=6.
Програма:
lw 0 1 num1
lw 0 2 num2
jmnae 1 2 1
lw 0 5 num2
lw 0 4 num1
done halt
num1 .fill 5
num2 .fill 6
Машинний
код:
8454150
8519687
63569921
8716295
8650758
25165824
5
6
Кінцевий
стан:
@@@
state
pc 6
ZF
= 0
stack:
memory:
mem[
0 ] 8454150
mem[
1 ] 8519687
mem[
2 ] 63569921
mem[
3 ] 8716295
mem[
4 ] 8650758
mem[
5 ] 25165824
mem[
6 ] 5
mem[
7 ] 6
registers:
reg[
0 ] 0
reg[
1 ] 5
reg[
2 ] 6
reg[
3 ] 0
reg[
4 ] 5
reg[
5 ] 0
reg[
6 ] 0
reg[
7 ] 0
end
state
9. bsr:
if (16=1000) “1” – в позиції 4.
Програма:
lw 0 1 num1
bsr 1 2
done halt
num1 .fill 16
Машинний
код:
8454150
8519687
25165824
16
Кінцевий
стан:
@@@
state:
pc 3
ZF
= 1
Страницы: 1, 2, 3, 4, 5, 6, 7, 8 |