Міністерствоосвіти і науки України
Національний університет „Львівська політехніка”
Кафедра CКС
Звіт
з лабораторної роботи № 3
з дисципліни: “Організація та функціонування комп’ютерів”
на тему: “Дослідженняінструкційпереходів і зсувів.
Організаціяциклів. ”
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;
записатизм...