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

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Не вказано

Інформація про роботу

Рік:
2018
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Організація та функціонування комп’ютерів

Частина тексту файла (без зображень, графіків і формул):

Міністерствоосвіти і науки України Національний університет „Львівська політехніка” Кафедра 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; записатизмінну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   1.2. Організація програмних циклів Для організації циклу засобами навчального комп’ютера DeComp в одній з комірок пам’яті необхідно розмістити лічильник циклів. Лічильник циклів це число, яке може мати значення N (якесь число) або 0 (const = N або const = 0). Відповідно, уциклінеобхіднокожний раз лічильникзменшувати (абозбільшувати) на 1 і за допомогоюінструкціїумовного переходу перевіряти, чипотрібнозробити цикл ще раз. Наприклад, у комірціпам’яті за адресою 1010розміщенийлічильник - const= K = 15, у комірціпам’яті за адресою 1110 – константа = 1 (const= 1), яка буде обслуговуватицейлічильник.Тодіпрограма обслуговування циклу: LOOP 1: . . . – мітка (адреса) попередньоїчастинипрограми; LOAD 10 - вибратизначення з комірки 10 і розміститийого у акумуляторі; SUB 11 - іззначення, що є у акумуляторі, відняти 1; JNZLOOP 1 – перехід на LOOP 1, якщо у результаті виконання попередньої операції ознака Z ≠ 0, тобто вміст акумулятора не дорівнює 0, інакше – перехід на наступну aдресу – LOOP 2. LOOP 2 . . . . Це є лічильник "на 0", тобто процедура LOOP 1 виконується K = 15 разів і кожний раз виконується перевірка числа таких виконань шляхом зменшення значення у лічильнику (комірка пам’яті – 10). Коли у лічильнику значення стане рівним 0, програма почне виконувати процедуру LOOP 2. 1.3. Особливості виконання операцій зсуву - LSL, LSR - логічнізсуви (розряд, щовиходить за межі аккумулятора, потрапляє у ознаку переносу С). - ASL, ASR - арифметичнізсуви (не змінюється знак. У ознаку переносу розрядпотрапляє не зістаршого, тобто - знакового розряду, а з попереднього - старшого розряду числа). - ROL, ROR - циклічнізсуви( розрядиобертаються, не потрапляючи у ознаку переносу С). - RCL, RCR - циклічнізсуви через ознаку С (розрядиобертаються через ознаку переносу С). Порядок виконанняроботи: Вивчититеоретичнівідомостями до лабораторноїроботи № 3. Дослідити употактовомурежиміінструкціїROL, RCL. JP - для непарнихномерівіз списку групи, ROR, RCR, JC - для парнихномерівіз списку групи. Виписати результати та значення прапорців ознак. інструкціяROL– циклічнийзсуввліво ( розрядиобертаються, не потрапляючи у ознаку переносу С). Код інструкції 1111 100xxxxxxxxx, де х – Довільна послідовність 0 чи 1 (на виконання інструкції значення бітів не впливають). Для початку виконання інструкції потрібно занести до акумулятора число (у нашому випадку число 1),надати нульового значення ЛАІ,а в 0-ву комірку занести код інструкції. № Мнемонічний запис Код, що обробляється Коментар  1 ЛАІ ( РА 0000 0000 0000 вибір адреси 1-ої інструкції і занесення її до Регістра Адреси  2 РА ( РД 1111 1000 0000 0000 вибір коду інструкції з РА і занесення його до Регістра Даних  3 РД ( РІ 1111 1000 0000 0000 декодування інструкції у Регістрі Інструкцій  4 А>>(А 0000 0000 0000 0010 Зсув числа вліво на один розряд  5 А ( РО 0000 0000 0000 0010 встановлення прапорців регістру ознак  6 ЛАІ+1 ( ЛАІ 0000 0000 0001 підготувати адресу наступноїінструкції   інструкціяRCL – циклічнийзсуввліво ( розрядиобертаються, потрапляючи у ознаку переносу С). Код інструкції 1111 110xxxxxxxxxде х – Довільна послідовність 0 чи 1 (на виконання інструкції значення бітів не впливають). Для початку виконання інструкції потрібно занести до акумулятора число (у нашому випадку число 1),надати нульового значення ЛАІ,а в 0-ву комірку занести код інструкції. № Мнемонічний запис Код, що обробляється Коментар  1 ЛАІ ( РА 0000 0000 0000 вибір адреси 1-ої інструкції і занесення її до Регістра Адреси  2 РА ( РД 1111 1100 0000 0000 вибір коду інструкції з РА і занесення його до Регістра Даних  3 РД ( РІ 1111 1100 0000 0000 декодування інструкції у Регістрі Інструкцій  4 А>>(А 0000 0000 0000 0010 Зсув числа вліво на один розряд  5 А ( РО 0000 0000 0000 0010 встановлення прапорців регістру ознак  6 ЛАІ+1 ( ЛАІ 0000 0000 0001 підготувати адресу наступноїінструкції   інструкціяJP – умовнийперехід на певнукомірку, якщо число у акумуляторідодатнє (S=0). Код інструкції1010аааааааааааа, де а – адрес комірки,на яку буде злійснюватись перехід. Для початку виконання інструкції потрібно занести до акумулятора число (у нашому випадку число 1),надати нульового значення ЛАІ,а в 0-ву комірку занести код інструкції. № Мнемонічний запис Код, що обробляється Коментар  1 ЛАІ ( РА 0000 0000 0000 вибір адреси 1-ої інструкції і занесення її до Регістра Адреси  2 РА ( РД 1010 0000 0000 0101 вибір коду інструкції з РА і занесення його до Регістра Даних  3 РД ( РІ 1010 0000 0000 0101 декодування інструкції у Регістрі Інструкцій  4 РІ (ЛАІ 0000 0000 0101 умовнийперехідна 5-ту комірку, якщо S=0, інакше  5 ЛАІ+1 ( ЛАІ 0000 0000 0000 0010 якщоS = 1   Скластипрограму, яка реалізуватиме оператор IF (умовуперевіркивибратисамостійно). Закодуватиїї, ввести у симулятор та виконатиїїдослідження у покроковомурежимі, Текст програмиоформитизгідно з прикладом у теоретичнійчастиніданихметодичнихвказівок. Умова програми: a>b № коміркипам’яті Двійковий код інструкції Мнемонічнийзапис інструкції Коментар  0000 0000 0000 0000 0000 0000 1010 LOAD 10; завантажити до акумуляторазміннуa  0000 0000 0001 0011 0000 0000 1011 SUB 11; віднятивідзмінноїaзміннуb  0000 0000 0010 1011 0000 0000 0110 JM 06; якщоS=1(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 та умовного переходу за умовиперевірки ознаки S - JM: якщо при відніманні від змінної a (розміщеної у акумуляторі) змінної b (розміщеної у 11-й комірці) результат не є від’ємний , це означає, що a>b, а значить, необхідно “перескочити” фрагмент, де виконується c:=a (блок інструкцій LOAD, STORE та HALT у 3-й, 4-й та 5-й комірках), і почати виконувати фрагмент c:= b (блок інструкцій LOAD, STORE та HALT у 6-й, 7-й та 8-й комірках). Результат виконання програми міститься у 12-ій комірці.До 10-ї комірки занесемо число 5, а до 11-ї комірки – число 10. № кроку РА РД А РІ ЛАІ РО  1-й крок 000000001010 0000000000001010 0000000000001010 0000000000001010 000000000001   2-й крок 000000001011 0000000000001010 1111 1111 1111 1011 0011 000000001011 000000000010 S; C  3-й крок 000000000010 1011 0000 0000 0110 1111 1111 1111 1011 1011 0000 0000 0110 000000000110 S; C  4-й крок 000000001011 0000000000001010 0000000000001010 0000000000001011 000000000111 S; C  5-й крок 000000001100 0000000000001010 0000000000001010 0001 0000 0000 1100 0000 0000 1000 S; C  6-й крок 0000 0000 1000 0111 1100 0000 0000 0000000000001010 0111 1100 0000 0000 0000 0000 1000 S; C   Розробити алгоритм і cкластипрограмувінструкціях симулятора DeComp, що для довільного числа "А" з коміркипам"ятіза адресою"N" підраховує кількість"1" - для непарнихномерівіз списку групи, і підраховуєкількість"0" - для парнихномерівіз списку групи. Програмавиконуєтьсявавтоматичномурежимі. так ні так ні № коміркипам’яті Двійковий код інструкції Мнемонічнийзапис інструкції Коментар  0000 0000 0000 0000 0000 0000 1110 LOAD 14; завантажити до акумуляторазміннуa  0000 0000 0001 1111 1100 0000 0000 RCL Зсуваємо число на один розряд вліво  0000 0000 0010 1100 0000 0000 0110 JNC 06; Умовний перехід на 6 комірку, якщо С=0.Інакше виконується наступний оператор  0000 0000 0011 0000 0000 0000 1011 LOAD 11; Завантаження нашого лічильника до акумулятора  0000 0000 0100 0010 0000 0000 1100 ADD 12; Додоаємо до нашого Лічильника 1  0000 0000 0101 00010000 0000 1011 STORE 11; Запис нового значення лічильника  0000 0000 0110 0000 0000 0000 1101 LOAD 13; Завантаження лічильника циклу До акумулятора  0000 0000 0111 0011 0000 0000 1100 SUB 12; Віднімаємо від нашого Значення 1  0000 0000 1000 0001 0000 0000 1101 STORE 13; Запис нового значення Лічильника  0000 0000 1001 1000 0000 0000 0001 JNZ 1 Перевіряємо умову виконання циклу  0000 0000 1010 0111 1100 0000 0000 HALT Припиняємо програму  Для початку виконання програми потрібно занести відповідні інстукції у комірки пам’яті , починаючи з 0-ої. В 11-тій комірці буде міститись результат виконання програми, у 12-ту комірку потрібно занести число 1, у 13-ку – число 16 (лічильник циклу). У 14-ту комірку потрібно занести число N. Оформити та захиститизвіт з лабораторноїроботи. Висновок: на лабораторній роботі я дослідив інструкції переходів та зсувів, навчився організовувати цикли та склав власну програму, у якій використовувались попередньо здобуті знання.
Антиботан аватар за замовчуванням

22.03.2018 19:43

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!