Контрольная роботи з «Системне програмування»
Автор: Tehno Bot • Июнь 8, 2022 • Контрольная работа • 1,559 Слов (7 Страниц) • 180 Просмотры
Скрипченка А.М. 2-КІ-20 ВАРІАНТ 7
Питання до модульної контрольної роботи №2 з курсу «Системне програмування»
7.Регістрова непряма адресація із зсувом (приклади).
Адресується пам'ять (байт чи слово); відносна адреса операнда визначається, як сума вмісту регістру ВХ, ВР, SI або DI і зазначеної в команді константи, яка іноді називається зміщенням. Зміщення може бути числом чи адресою.
mov AX,0B800h ;Сегментна адреса
mov ЕS, АХ ; відеообуфера в ЕS
mov DI,80*2*24 ;Зміщення до нижнього рядка екрану
mov byte ptr ES:[DI], ‘O’ ;Символ екрану
mov byte ptr ES:2[DI], ‘K’ ;Символ у наступній позиції
mov byte ptr ES:4[DI], ‘!’ ;Символ наступної позиції
Іноді можна зустріти альтернативні позначення того ж способу адресації, які допускає асемблер. Замість, наприклад, 4[ВХ] можна з таким самим успіхом написати [ВХ+4], 4+[ВХ] або [ВХ]+4.
Приклад використання базової адресації зі зміщенням при зверненні до стека
;Основна програма
push DS ;У стек завантажуються значення
push ES ; трьох регістрів,
push SI ; переданих підпрограмі
call mysub ;Виклик підпрограми mysub
;що використовує ці параметри
;Підпрограма mysub
mov BP,SP ;Помістимо у ВР поточну адресу вершини стека
mov AX,2[ВР] ;Читаємо в АХ останній параметр (SІ)
mov ВХ,4[ВР] ;Читаємо у ВХ попередній параметр (ЕS)
mov CX,6[ВР] ;Читаємо в СГ перший параметр (DS)
Якби підпрограма просто зняла з стека параметри, що знаходяться там, вона насамперед вилучила б із стека адресу повернення, і позбавила б себе можливості повернутися в основну програму.
17.Команди вводу в порт. (приклади)
Команди введення-виведення в порт
Подивіться на рис. 1. На ньому показано дуже спрощену, концептуальну схему управління обладнанням комп'ютера.
[pic 1]
Мал. 1. Концептуальна схема керування обладнанням комп'ютера
Як видно із рис. 1, найнижчим рівнем є рівень BIOS, у якому робота з устаткуванням ведеться безпосередньо через порти. Тим самим було реалізується концепція незалежності від устаткування. При заміні обладнання необхідно буде лише підправити відповідні функції BIOS, переорієнтувавши їх на нові адреси та логіку роботи портів.
+Принципово керувати пристроями безпосередньо через порти нескладно. Відомості про номери портів, їх розрядність, формат керуючої інформації наведено в технічному описі пристрою. Необхідно знати лише кінцеву мету своїх дій, алгоритм, відповідно до якого працює конкретний пристрій, та порядок програмування його портів. Тобто фактично потрібно знати, що і в якій послідовності потрібно послати в порт (при записі в нього) або рахувати з нього (при читанні) і як слід трактувати цю інформацію. Для цього достатньо двох команд, присутніх в системі команд мікропроцесора:
in акумулятор, номер порту — введення в акумулятор з порту з номером номер порту;
out порт, акумулятор — виведення вмісту акумулятора в порт із номером номер_порту.
INS Введення рядка з порту
INSB Введення байта з порту
INSW Введення слова з порту
INSD Введення подвійного слова з порту
Команди призначені для введення даних із порту безпосередньо на згадку. Адреса порту вказується, як і команди in, в регістрі DX, у своїй завдання адреси порту безпосереднім значенням не допускається. Дані пересилаються на адресу, що знаходиться в парі регістрів ES:EDI. Заміна сегмента заборонена. Команда insb переносить із порту 1 байт, команда insw - 1 слово, команда insd - 1 подвійне слово, а команда ins може бути використана передачі байтів, слів і подвійних слів. В останньому випадку розмір завантажуваного даного визначається описом рядка (за допомогою директив db, dw або dd). Після передачі даних регістр EDI отримує позитивне (якщо прапор DF=0) або негативне (якщо прапор DF=1) збільшення. Величина збільшення становить 1, 2 або 4, залежно від розміру даних, що передаються. Варіант команди ins має формат
...