Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab3_OFK.docx
Скачиваний:
2
Добавлен:
26.11.2019
Размер:
114.7 Кб
Скачать

Міністерствоосвіти і науки України

Національний університет „Львівська політехніка”

Кафедра CКС

Звіт

з лабораторної роботи № 3

з дисципліни: “Організація та функціонування комп’ютерів”

на тему: “Дослідженняінструкційпереходів і зсувів.

Організаціяциклів. ”

Виконав: ст.гр. КІ-13

Pиндич П.В.

Прийняв: ст..викл.

Кудрявцев О.Т.

Львів

2010

Тема: Дослідження інструкцій переходів і зсувів. Організаціяциклів.

Мета роботи: 1. Засвоїтивикористанняосновнихінструкційзсуву і переходів у системі

команд навчальногокомп'ютераDeComp.

2. Навчитисьорганізовувати цикли необхідноїстуктури і використовуватиїх

у програмах.

Теоретичнівідомості:

Інструкції, з якими ми будемознайомитисяуданійроботіскладаютьдвігрупи:

1) інструкціїкеруваннявиконаннямпрограми:

    1. інструкціязупинки (HALT);

    2. інструкціїумовнихпереходів (JNZ, JZ, JP, JM, JNC та JC);

    3. інструкціябезумовного переходу (JMP);

2) інструкціїзсувів (вліво (Left) та вправо (Right)):

    1. інструкціїлогічногозсуву (LSL та LSR);

    2. інструкціїарифметичногозсуву (ASL та ASR);

    3. інструкціїциклічногозсуву (ROL та ROR);

    4. інструкціїциклічногозсуву через перенос C (RCL та RCR).

1.1. Розглянемоінструкціїпереходів.

Їх головне призначення – зміна звичайного порядку виконання інструкцій. У всіх інструкціях, за винятком інструкцій переходів, на останньому кроці адреса наступної інструкці ївизначається шляхом додавання 1 до ЛАІ. У інструкціях переходів 12 розрядів адресної частини містять нову адресу наступної інструкції. В результаті наступною післяінструкції переходу буде не та інструкція, яка знаходиться у пам’яті зразу післяінструкції переходу, а інструкція, яка може знаходитись у будь-якій іншій комірці пам’яті, на яку вкаже адреса у інструкції переходу.

Інструкція безумовного переходу JMP ADRмаємашинний код 1110aaaaaaaaaaaa.

Відповідно, код операції дорівнює1110, а рештарозрядів – адресначастина. Мікропрограма виконання інструкції JMP маєнаступнийвигляд:

  1. ЛАІ  РА;

  2. РА  РД;

  3. РД РІ, декодування;

  4. РІ  ЛАІ – перехід на вказану адресу відбувається без будь-яких попередніх умов.

Як видно, інструкціябезумовного переходу 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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]