Охарактеризуйте сегмент стеку
Сегмент стеку. Стек містить адреси повернення як для програми при поверненні в операційну систему, так і для викликів підпрограм при повернення в головну програму. Регістр сегмента стека (SS) адресує даний сегмент.
22) Обґрунтуйте, де міститься адреса сегмента даних.
25) Розкрийте поняття «стек». Охарактеризуйте регістри роботи з стеком.
Стек – організована спеціальним чином ділянка пам’яті, яка використовується для тимчасового зберігання змінних, передачі параметрів для підпрограм, які викликаються, і збереження адреси повернення при виклику процедур та переривань. Файл регістрів GR відрізняється від FR і PR тим, що останні містять фіксовані підмножини статичних і обертаються регістрів, в той час як у файлі GR поза підмножини статичних регістрів застосовується стек регістрів, і програмної одиниці доступна лише його частину - вікно стеку регістрів. На відміну від статичних регістрів, стекируемое підмножина локально для будь-якої програмної одиниці і може мати розмір від 0 до 96 регістрів, починаючи з GR32. Використання цього механізму в IA-64 дозволяє, як ми побачимо, уникнути накладних витрат, пов'язаних зі збереженням/відновленням великої кількості регістрів при виконанні викликів підпрограм і повернення з них (проте статичні регістри при необхідності все-таки доводиться зберігати і відновлювати, явно кодуючи відповідні команди). Автоматичне збереження або відновлення стекируемого підмножини регістрів здійснює RSE.
26) Розкрийте поняття «вершина стеку».
Вершина стеку - це доступний елемент стеку;
28) Охарактеризуйте регістр sp.
Регістр SP називається також покажчиком стека. Це найменш загальний» з регістрів загального призначення, оскільки він практично завжди використовується для спеціальної мети забезпечення стека. Стек-це область пам'яті, в якій можна зберігати значення і з якої потім вони можуть вилучатись з дисципліни «последнийпришелпервыйушел» (FIFO). Тобто останнім збережене в стеку значення буде першим значенням, яке ви отримаєте при читанні з стека. Класичної аналогією стека є стос тарілок. Оскільки тарілки можна класти стільки зверху стопки (і брати також), то перша покладена тарілка буде останньою, яку ви зможете взяти. Регістр SP в кожен момент часу вказує на вершину стеку. Як і у випадку стопки тарілок, вершина стека це те місце, в якому зберігається в стеку наступне поміщений туди значення. Дія, що складається в занесення значень в стек, називають також «заталкиванием» (pushing) у стек. У самому справі, інструкція PUSH використовується для занесення значень в стек. Аналогічно, дія, що полягає у вилученні (вибірці) значень з стека, називають також «виштовхуванням» (popping) з стека (для цього використовується інструкція POP).
29) Охарактеризуйте, які регістри складають програмну модель мікропро- цесора .
Програмною моделлю МП називається сукупність програмно доступних регістрів, тобто тих регістрів вміст яких можна зчитати або змінити за допомогою команд. Програмну модель МП і8086 складають регістри загального призначення (РЗП), сегментні регістри, вказівник команд і регістр прапорців. До регістрів даних відносяться 16-розхрядні регістри: AX, BX, CX, DX. Кожен із цих регістрів складається з двох 8-розрядних регістрів, які можна незалежно адресувати іменами AH, BH, CH, DH (старші байти – Hihg) та AL, BL, CL, DL (молодші байти – Low). Регістри-вказівники SP (Stack pointer – вказівник стеку), BP (Base pointer – базовий регістр), SI (Source Index – індекс джерела), DI (Destination Index – індекс призначення) є 16-розрядними.
30) Охарактеризуйте регістри загального призначення.
Вісім регістрів загального призначення мають довжину в 32 біт мають адреси чи дані. Вони підтримуютьоперанди-данние довжиною 1, 8, 16, 32 і 64 біт: бітові поля від 1 до 32 біт:операнди-адреса довжиною 16 і 32 біт. Ці регістри називаютьсяЕАХ,ЕВХ,ЕСХ,EDX, ESI,EDI,ЕВР, ESP. Доступ до молодшим 16 біт цих регістрів виконується незалежно. Це потрібно переважноассемблеров під час використання16-разрядних імен регістрів: АХ,ВХ, СХ,DX,Sl,Dl,BP,SP.
Регістри загального призначення використовуються в програмах для зберігання: операндів логічних і арифметичних операцій; компонентів адреси;
вказівників на комірки пам'яті. Всі регістри цієї групи дозволяють звертатися до своїм «молодшим» частин. Звернення проводиться за їх іменами. Важливо зазначити, що використовувати для самостійної адресації можна тільки молодші 16 - і 8-розрядні частини цих регістрів. Старші 16 біт як самостійні об'єкти недоступні.
31) Охарактеризуйте сегментні регістри.
Цю групу регістрів можна віднести до регістрів стану. Регістри з цієї групи використовуються при обчисленні реального адресу (адресу, який буде переданий на шину адресу). Процес обчислення реального адреси залежить від режиму процесора (реальний або захищений) і буде розглянуто в наступних розділах. Сегментні регістри тільки 16-розрядні. Друга особливість використання сегментів полягає в тому, що кожна комірка пам'яті адресується через багато можливі поєднання «сегмент:зсув». Наприклад, адрес пам'яті 100h адресується за допомогою наступних значень «сегмент:зміщення»: 0:100h, 1:F0h, 2:E0h і т. д., так як при обчисленні всіх цих пар «сегмент:зсув» виходить значення адреси 100h. Аналогічно регістрів загального призначення кожен сегментний регістр грає свою конкретну роль.
Регістр CS вказує на код програми, DS вказує на дані, SS - стека, ES - додатковий сегмент даних, який може використовуватися так, як це необхідно. Регістр CS вказує на початок блоку пам'яті об'ємом 64К, або сегмент коду, в якому знаходиться наступна виконувана команда. Наступна команда, яку потрібно виконати, знаходиться за зміщення, що визначається в сегменті коду регістром IP, тобто Регістр CS можна змінювати з допомогою багатьох команд, включаючи окремі команди переходу, виклики і повернення управління. Ні за яких обставин регістр CS можна завантажити безпосередньо Регістр DS вказує на початок сегменту даних, що представляє собою блок пам'яті об'ємом 64К, в якому знаходиться більшість розміщених у пам'яті операндів. Зазвичай для посилання на адресу пам'яті використовуються зміщення, припускають використання регістрів BX, SI або DI. В основному сегмент даних являє собою те, про що говорить його назва: як правило, це сегмент, в якому знаходиться поточний набір даних.
32) Охарактеризуйте індексні регістри.
До регістрів загального призначення іноді відносять і індексні регістри процесора (або SI, DI і ВР для 16-розрядних дій). Зазвичай ці регістри використовуються для адресації пам'яті: звернення до масивів, індексування і т. д. Звідси їх імена: індекс джерела (Source Index), індекс приймача (Destination Index), покажчик бази (Base Pointer). Регистри флагів Прапори стану (біти 0, 2, 4, 6, 7 і 11) відображають результат виконання арифметичних інструкцій, таких як ADD, SUB, MUL, DIV. CF — встановлюється при перенесенні з/позику (при відніманні) старший значущий біт результату і показує наявність переповнення в беззнаковой цілочисельної арифметики. Також використовується в довгої арифметики. PF — встановлюється, якщо молодший значущий байт результату містить парне число одиничних (ненульових) бітів. Спочатку цей прапор був орієнтований на використання в комунікаційних програмах: при передачі даних по лініях зв'язку для контролю міг також передаватися біт парності (див., наприклад: RS-232#Принцип роботи) та інструкції для перевірки прапора парності полегшували перевірку цілісності даних. AF — встановлюється при перенесенні з/позичанні з 3 біта результату. Цей прапор орієнтований на використання в двійково-десятковій (binary coded decimal, BCD) арифметиці. ZF — встановлюється, якщо результат дорівнює нулю. SF — дорівнює значенню старшого значущого біта результату, який є знаковим бітом у знаковій арифметиці. OF — встановлюється, якщо цілочисельний результат занадто довгий для розміщення в цільовому операнді (регістрі або комірці пам'яті). Цей прапор показує наявність переповнення у знаковій цілочисельної арифметики (у додатковому коді).
33) Охарактеризуйте регістр прапорців, його складові частини.
Регистри флагів Прапори стану (біти 0, 2, 4, 6, 7 і 11) відображають результат виконання арифметичних інструкцій, таких як ADD, SUB, MUL, DIV. CF — встановлюється при перенесенні з/позику (при відніманні) старший значущий біт результату і показує наявність переповнення в беззнаковой цілочисельної арифметики. Також використовується в довгої арифметики. PF -встановлюється, якщо молодший значущий байт результату містить парне число одиничних (ненульових) бітів. Спочатку цей прапор був орієнтований на використання в комунікаційних програмах: при передачі даних по лініях зв'язку для контролю міг також передаватися біт парності та інструкції для перевірки прапора парності полегшували перевірку цілісності даних. AF — встановлюється при перенесенні з/позичанні з 3 біта результату. Цей прапор орієнтований на використання в двійково-десятковій (binary coded decimal, BCD) арифметиці. ZF — встановлюється, якщо результат дорівнює нулю. SF — дорівнює значенню старшого значущого біта результату, який є знаковим бітом у знаковій арифметиці. OF — встановлюється, якщо цілочисельний результат занадто довгий для розміщення в цільовому операнді (регістрі або комірці пам'яті). Цей прапор показує наявність переповнення у знаковій цілочисельної арифметики (у додатковому коді).
34) Охарактеризуйте регістри стану і керування.
Регістри стану й управління – регістри, які постійно містять інформацію про стан мікропроцесора або програми, команди якої в даний момент завантажені на конвеєр. До цих регістрів належать: • регістр прапорів EFLAGS/FLAGS
• регістр покажчика команд EIP/IP. Використовуючи ці регістри, можна отримувати інформацію про результати виконання команд і впливати на стан самого мікропроцесора. Регістр EIP/ІРназываетсяуказателем команд (Instruction Pointer register).Регістр EIP/IP має розрядність 32/16 біт і містить зміщення або адресу наступної підлягає виконанню команди.Цей регістр безпосередньо недоступний програмісту, але завантаження і зміна його значення виробляються різними командами управління, до яких відносяться команди умовних і безумовних переходів, виклику процедур і повернення з процедур. Виникнення переривань також призводить до модифікації регістра EIP/IP.
РегистрEFLAGS/FLAGS називається регістром прапорів (flag register). Він призначений длясигнализации процесору про його стан або про те, як виконалася та чи інша арифметична або логічна команда. Розрядність регістра EFLAGS/FLAGS – 32/16 біт. Окремі біти даного регістра мають певне функціональне призначення і називаються прапорами.
Прапор – це біт, що приймає значення 1, якщо він встановлений, та 0, якщо він скинутий. За бітами регістра прапорів закріплені відповідні імена. Виходячи з особливостей використання, прапори регістра EFLAGS/FLAGS можна розділити на наступні три групи: • 8 прапорів стану.Ці прапори можуть змінюватися після виконання машинних команд. Прапори стану регістра EFLAGSотражают особливості результату виконання арифметичних або логічних операцій. Це дає можливість аналізувати стан обчислювального процесу і реагувати на нього за допомогою команд умовних переходів і викликів підпрограм; • 1 прапор управління. Позначається як df (Directory Flag). Він знаходиться у десятому бите регістра EFLAGSи використовується цепочечными командами. • 5 системних прапорів, керуючих введенням/виведенням, маскируемыми перериваннями, налагодженням, перемиканням між завданнями і віртуальним режимом 8086. Прикладним програмам не рекомендується модифікувати без необхідності ці прапори, так як в більшості випадків це призведе до переривання роботи програми.
35) Охарактеризуйте директиви опису даних простих типів.
Директиви опису даних простих типів дозволяють описати дані типу байт, слово, подвійне слово. Синтаксист цих директив має такий вигляд:
[Ім'я] db Вираз [, вираз...] [Ім'я] dw Вираз [, вираз...] [Ім'я] dd Вираз [, вираз...] Ім'я — деяке символічне ім'я мітки або комірки пам'яті в сегменті даних, яке використовується в програмі. Директиви db, dw, dd дозволяють резервувати пам'ять для даних розміром 1, 2 та 4 байта. Крім того за допомогою директиви db можна задавати символьний рядок з одного або більше символів. Рядок береться в лапки. У цьому випадку визначається стільки байт, скільки символів у рядку. Для резервування даних замість виразу може бути знак питання (?), який показує, що вміст поля не визначено, тобто резервується. Якщо потрібно задати декілька однакових значень, використовується вираз повторення n dup(x), де dup - операція дублювання, n - кількість повторів, x - інформація, яку потрібно занести в пам’ять. Рядок може містити таку кількість символів, яка може розміститися в 132 позиціях.
36) Охарактеризуйте способи роботи і програмування клавіатури.
Для роботи з клавіатурою типу PC/XT використовуються порти з адресами 60h і 61h. Порт 60h при читанні містить скан-код останньої натиснутої клавіші.
Порт 61h управляє не лише клавіатурою, але і іншими пристроями комп'ютера, наприклад, роботою вбудованого динаміка. Цей порт доступний як для читання, так і для запису. Для нас важливий самий старший біт цього порту. Якщо в старший біт порту 61h записати значення 1, клавіатура буде заблокована, якщо 0 - розблокована. Оскільки порт 61h управляє не лише клавіатурою, при зміні утримуваного старшого біта необхідно зберегти стан інших бітів цього порту. Для цього можна спочатку виконати читання утримуваного порту в регістр, змінити стан старшого біта, потім виконати запис нового значення в порт: Програмування клавіатури РС/ХТ полягає в обробці натискання і відпускання клавіш клавиатури, квитування прийому скан-коду по послідовному інтерфейсу, а також заборона і дозвілня інтерфейсу клавіатури. Клавіатура РС/АТ і розширені клавіатури підключаються до системи через модифікований адаптер клавіатури і двонаправлений послідовний інтерфейс, що дозволяють передавати керуючу інформацію в клавіатуру.
37) Охарактеризуйте способи роботи і програмування монітора.
38) Охарактеризуйте способи роботи і програмування годинника реального часу і системного таймера.
В якості системного таймера комп'ютера використовується мікросхема трьохканального 16-розрядного таймера i8254 чи її аналог. Таймер призначений для одержання програмно керованих часових затримок і генерації сигналів заданої частоти. Таймер дозволяє підвищити ефективність програмування процесів управління і синхронізації зовнішніх пристроїв, особливо в реальному часі. Таймер містить три незалежних канали (0, 1 і 2), кожний з яких може бути, у принципі, запрограмований на роботу в одному із шести режимів відліку: переривання термінального відліку; програмований генератор одиночного імпульсу; генератор імпульсів заданої частоти; генератор прямокутних імпульсів типу "меандр"; програмно формований строб; апаратно формований строб. На кожен канал можуть подаватися вхідні синхросигнали. З кожного каналу можна одержувати сигнал з частотою, яка рівна вхідній частоті, що поділена на довільне 16-розрядне число. У комп'ютері на усі входи надходять синхросигнали з частотою 1,19 Мгц. Усі канали таймера в комп'ютері мають спеціальне призначення, тому особливих можливостей щодо вибору режиму роботи чи перепризначення функцій у користувача немає. Вихід каналу 0 зв'язаний із сигналом запиту переривання IRQ0 і забезпечує переривання для лічильника реального часу (використовується режим роботи 3). Користувачу не рекомендується перепрограмувати цей канал. За цим перериванням програмно збільшується стан лічильника реального часу. Користувач може читати стан даного лічильника зі спеціально виділеної комірки пам'яті і застосовувати його для затримок у своїх програмах. Вихід каналу 1 генерує сигнал запиту регенерації динамічної пам'яті (режим роботи 2). Використання цього каналу не за призначенням може викликати до утрати вмісту оперативної пам'яті.
Вихід каналу 2 генерує тональний сигнал для вмонтованого динаміка комп'ютера (режим роботи 3). Однак дозвіл цього тонального сигналу відбувається установкою виділених розрядів (0 і 1) програмно доступного паралельного порту контролера периферійних пристроїв. Один розряд (0) дозволяє роботу каналу, інший розряд (1) пропускає вихідний сигнал на динамік.
39) Охарактеризуйте способи роботи і програмування дисководів.
43) Розкрийте поняття «порти введення/виведення».
Введення-виведення через порти (англ. I/O ports) — схемотехнічне рішення, організує взаємодію процесора і пристроїв введення-виведення. Протилежність введення-висновку через пам'ять. У багатьох моделях процесорів введення-виведення організується тими ж функціями, що і читання-запис в пам'ять — так званий «ввід-вивід через пам'ять». Відповідно, схемотехнически пристрої введення-виведення розташовуються на шині пам'яті, і частина адрес пам'яті направляються на введення-виведення. В процесорах Intel, мікроконтролерах AVR і деяких інших існують окремі команди для введення-виведення — IN і OUT — і, відповідно, окремий адресний простір: в процесорах Intel — від 000016 до FFFF16. Порти введення-виведення створюються в системному обладнанні, яке циклічно декодує керуючі, адресні та контакти даних процесора. Потім порти налаштовуються для забезпечення зв'язку з периферійними пристроями введення-виведення. Одні порти використовуються для передачі даних (наприклад, прийом даних від клавіатури або читання часу системних годин), інші — для керування периферійними пристроями (команда читання даних з диска). Виходячи з цього порт вводу-виводу може бути портом тільки для введення, тільки виводу, а також двонаправленим портом. Введення-виведення через пам'ять ніяк не пов'язаний з прямим доступом до пам'яті; ПДП — окреме схемне рішення, що зв'язує шину введення-виведення з контролером пам'яті і разгружающее процесор на великих операціях введення-виведення. У машині з ПДП, щоб записати блок пам'яті, наприклад, на диск, треба сформувати цей блок пам'яті, а потім операціями вводу-виводу (або через порт, або через спеціальний адресу пам'яті, в залежності від архітектури) надіслати пункт «Почати запис». Коли запис буде закінчена, пристрій якимось чином попередить процесор про це (наприклад, перериванням).
44) Охарактеризуйте зовнішні порти комп’ютера.