Міністерствоосвіти і науки України
Національний університет „Львівська політехніка”
Кафедра CКС
Звіт
з лабораторної роботи № 3
з дисципліни: “Організація та функціонування комп’ютерів”
на тему: “Дослідженняінструкційпереходів і зсувів.
Організаціяциклів. ”
Виконав: ст.гр. КІ-13
Pиндич П.В.
Прийняв: ст..викл.
Кудрявцев О.Т.
Львів
2010
Тема: Дослідження інструкцій переходів і зсувів. Організаціяциклів.
Мета роботи: 1. Засвоїтивикористанняосновнихінструкційзсуву і переходів у системі
команд навчальногокомп'ютераDeComp.
2. Навчитисьорганізовувати цикли необхідноїстуктури і використовуватиїх
у програмах.
Теоретичнівідомості:
Інструкції, з якими ми будемознайомитисяуданійроботіскладаютьдвігрупи:
1) інструкціїкеруваннявиконаннямпрограми:
інструкціязупинки (HALT);
інструкціїумовнихпереходів (JNZ, JZ, JP, JM, JNC та JC);
інструкціябезумовного переходу (JMP);
2) інструкціїзсувів (вліво (Left) та вправо (Right)):
інструкціїлогічногозсуву (LSL та LSR);
інструкціїарифметичногозсуву (ASL та ASR);
інструкціїциклічногозсуву (ROL та ROR);
інструкціїциклічногозсуву через перенос C (RCL та RCR).
1.1. Розглянемоінструкціїпереходів.
Їх головне призначення – зміна звичайного порядку виконання інструкцій. У всіх інструкціях, за винятком інструкцій переходів, на останньому кроці адреса наступної інструкці ївизначається шляхом додавання 1 до ЛАІ. У інструкціях переходів 12 розрядів адресної частини містять нову адресу наступної інструкції. В результаті наступною післяінструкції переходу буде не та інструкція, яка знаходиться у пам’яті зразу післяінструкції переходу, а інструкція, яка може знаходитись у будь-якій іншій комірці пам’яті, на яку вкаже адреса у інструкції переходу.
Інструкція безумовного переходу JMP ADRмаємашинний код 1110aaaaaaaaaaaa.
Відповідно, код операції дорівнює1110, а рештарозрядів – адресначастина. Мікропрограма виконання інструкції JMP маєнаступнийвигляд:
ЛАІ РА;
РА РД;
РД РІ, декодування;
РІ ЛАІ – перехід на вказану адресу відбувається без будь-яких попередніх умов.
Як видно, інструкціябезумовного переходу JMP просто записує до ЛАІ значеннясвоєїадресноїчастини і програма буде змушенавиконатиінструкцію, що записана укомірціпам’яті за цієюадресою. ІнструкціяJMPфактично є реалізацією оператора GOTO у мовахпрограмуванняPascal, Basic та ін.
Призначенняінструкційумовного переходу (JNZ, JP тощо)дещоінше: у залежностівідвиконаннячи невикогаггяумови, зазначеної у алгоритміпрограми, перехідабо буде здійснюватись, або не буде. Контроль виконанняумовиздійснюєРегістрОзнак шляхом встановленнячи не встановленнявідповідноготригера. (див. методичніматеріали до лабораторноїроботи № 2).
Якщоумовавиконується, тодінаступною буде виконуватисяінструкція, яка розміщенаукомірціпам’яті, номер якоївказаний у адреснійчастині коду інструкції.
Якщоумоване виконується, тодінаступною буде виконуватисяінструкція, яка знаходитьсявідразу в сусіднійкомірціпам’яті з коміркоюінструкції переходу.
Фактичноінструкціїумовного переходу дозволяютьреалізуватиоператорирозгалуженняIF та циклівFOR абоWHILE. Наприклад, фрагменту програми на мовіPascal
if (a < b) then
c:= a;
else
c:= b;
при реалізаціїйого у навчальномукомп’ютеріDeComp (причому, зміннаaзнаходиться у 10-й комірці, зміннаb – у 11-й, а зміннаc – у 12-й) відповідатиметакий фрагмент програмиумашинних кодах:
№ коміркипам’яті |
Двійковий код інструкції |
Мнемонічнийзапис інструкції |
Коментар |
0000 0000 0000 |
0000 0000 0000 1010 |
LOAD 10; |
завантажити до акумуляторазміннуa |
0000 0000 0001 |
0011 0000 0000 1011 |
SUB 11; |
віднятивідзмінноїaзміннуb |
0000 0000 0010 |
1100 0000 0000 0110 |
JNC 06; |
якщоC = 0 (a>b), перейти до c:=b |
0000 0000 0011 |
0000 0000 0000 1010 |
LOAD 10; |
завантажити до акумуляторазміннуa |
0000 0000 0100 |
0001 0000 0000 1100 |
STORE 12; |
записатизміннуa на місцезмінноїc
|
0000 0000 0101 |
0111 1100 0000 0000 |
HALT; |
зупинитипрограму |
0000 0000 0110 |
0000 0000 0000 1011 |
LOAD 11; |
завантажити до акумуляторазміннуb |
0000 0000 0111 |
0001 0000 0000 1100 |
STORE 12; |
записатизміннуb на місцезмінноїc |
0000 0000 1000 |
0111 1100 0000 0000 |
HALT; |
зупинитипрограму |
Яквиднозпрограми, операторIF (a < b) реалізуєтьсязадопомогоюінструкційвідніманняSUBтаумовногопереходузаумовивідсутностіпереносу C - JNC: якщопривідніманнівідзмінноїa (розміщеноїуакумуляторі) змінноїb (розміщеноїу 11-йкомірці) невиникаєпереносу, цеозначає,щоa > b, азначить, необхідно “перескочити” фрагмент, девиконуєтьсяc:= a (блокінструкцій LOAD, STORE та HALT у 3-й, 4-йта 5-йкомірках), іпочативиконуватифрагментc:= b (блокінструкцій LOAD, STORE та HALT у 6-й, 7-йта 8-йкомірках). Отже, у навчальномукомп’ютеріDeCompмаємотакіінструкціїумовнихпереходів (результат – число Азнаходиться в акумуляторі):
Двійковий код інструкції |
Мнемонічний запис інструкції |
Значення ознаки, яка перевіряється |
Значення результату, що розміщений в акумуляторі |
1000; |
JNZADR |
Z = 0 |
A 0 |
1001 |
JZADR |
Z = 1 |
A = 0 |
1010 |
JP ADR |
S = 0 |
A > 0 |
1011 |
JMADR |
S = 1 |
A <0 |
1100 |
JNCADR |
C = 0 |
A 216 – 1 |
1101 |
JCADR |
C = 1 |
A 216 – 1 |
При дослідженніінструкційпереходів у потактовому режимі видно, щоїххідвідрізняєтьсявідрозглянутого у прикладі, наведеному у лабораторнійробті № 2. Для прикладу, мікропрограмаінструкціїJMматимевигляд:
№ |
Мнемонічний записмікрооперації |
Коментар |
1 |
ЛАІ РА; |
вибірадреси 1-ої інструкції і занесенняїї до регістру РА |
2 |
РА РД; |
вибір коду інструкції з РА і занесенняйого до регістру РД |
3 |
РД РІ; |
декодуванняіперевіркарегіструознак РО |
4 |
РІ ЛАІ |
якщоS = 1, інакше 5) |
5 |
ЛАІ + 1 ЛАІ |
якщоS = 0 |