СИСТЕМНЕ ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ
Методичні вказівки до лабораторного практикуму для студентів усіх форм навчання спеціальності ??? p>
1998р. p>
Лабораторна робота № 1.
Вивчення архітектури ЕОМ . Машинне виконання, Вимоги мови Асемблер. P>
Мета роботи. Пояснити особливості технічних засобів мікрокомп'ютерата організації програмного забезпечення. Вивчити машинний мова, введення командв пам'ять і виконання програм. Показати основні вимоги до програмна мові Асемблер і етапи ассемблірованія, компонування та виконанняпрограми. p>
Загальні відомості. p>
Написання асемблерних програм вимагає знання організації всієї системикомп'ютера. В основі побудови логіки блоків комп'ютера лежать поняття бітаі байти. Вони є тими засобами, завдяки яким в комп'ютернійпам'яті представляються дані і команди. Програма в машинному коді складаєтьсяз різних сегментів: Для визначення даних, для машинних кодів і длясегмента, званого стеком, для зберігання адрес. Для виконанняарифметичних дій, пересилання даних і адрес комп'ютер має 14регістрів. p>
Машинні коди мають різну довжину: 1,2 або 3 байти. Машинні командизнаходяться в пам'яті безпосередньо один за одним. Основний форматкодування команд Асемблера має такий вигляд: p>
[позначка] команда [операнди] p>
Мітка (якщо є), команда і операнд (якщо є) поділяється, попринаймні, одним пропуском або символом табуляція. p>
З метою стандартизації в мікрокомп'ютерах використовується стандартнийамериканський код для обміну інформацією ASCII. p>
Зміст завдання. p>
1. Є команда: p>
ECS: 100 B8 04 30 05 00 30 СВ p>
Що робить ця програма? P>
2. Напишіть програму, яка виконує наступну операцію: p>
• Пересилання значення 25Н в регістрі AL p>
• Зсув вмісту регістра AL на 1 біт вліво p>
• Пересилання значення 15Н в регістр BL p>
• Множення вмісту регістра AL на вміст регістру BL p>
3. Для сегментів коду, даних і стека дані імена CDSEA, DATSEA і STKSEAвідповідно. Сформуйте директиву ASSUME. P>
Лабораторна робота № 2 p>
Логіка та організація програми p>
Мета роботи: розкрити механізм передачі управління в програмі (цикли іпереходи) для логічних порівнянь і програмної організації. p>
Загальні відомості. p>
Більшість програм містять ряд циклів, в яких кілька командповторюються до досягнення певного вимоги, і різні перевірки,визначають, які з кількох дій слід виконувати. Ці діївключають управління за адресою команди, яка не знаходиться безпосередньоза що виконується в поточний момент командою. Передача управління можездійснюватися вперед для виконання нової групи команд або назад дляповторення вже виконаних команд. p>
Деякі команди можуть передавати управління, змінюючи нормальнупослідовність кроків безпосередній модифікацією значення зміщення вкомандному покажчику. p>
Одна з команд, що використовуються для передачі управління - команда JMP. Цякоманда виконує безумовний перехід, тобто забезпечує передачууправління при будь-яких обставин. Приклад оформлення команди p>
JMP A20, p>
Команда вказує на те, що управління має бути передана команді зміткою A20. Для виконання певної кількості циклів використовуєтьсякоманда LOOP. У кожному циклі команда LOOP автоматично зменшуєвміст регістра СХ на 1. Поки значення в СХ не дорівнює 0, управлінняпередається на адресу, вказану в операнд, і якщо в СХ буде 0,управління переходить на наступну після LOOP команду. Приклад оформленнякоманди: p>
LOOP A20. p>
Для передачі управління підпрограмі використовується команда CALL XXX,наприклад p>
CALL A20. p>
У результаті дії команди CALL управління передається процедурою A20і починається її виконання. Досягнувши команди RET, управління передається накоманду, безпосередньо наступну за CALL A20. p>
Зміст завдання. p>
1. Напишіть програму для обчислення 12 чисел Фібоначчі: p>
1,1,2,3,5,8,13 ,...( кожне число в послідовності являє собоюсуму двох попередніх чисел). Для організації циклу використовуйте команду
LOOP. P>
2. Напишіть програму для обчислення суму перших 15 непарних чисел
Фібоначчі з першими 5 парними числами Фібоначчі. Суми повинні обчислюватися впідпрограма. p>
Лабораторна робота. № 3 p>
Вивчення екранних операцій p>
Мета роботи: Пояснити вимоги для виведення інформації на екран, атакож для введення даних з клавіатури. p>
Загальні відомості. p>
Дані, призначені для виведення на екран і введення з клавіатури, мають
ASCII - формат. Для виконання введення та виведення використовується команда INT,що припиняє обробку програми, передає управління в DOS або BIOSдля певної дії, а потім повертає керування в перерванупрограму для продовження обробки. Є два типи переривань: команда
BIOS INT 10Н і команда DOS INT 21H. P>
Команда INT 10Н включає встановлення курсору в будь-яку позицію іочищення екрана. Нижче наведені приклади установки курсору на S - й рядок і
12 стовпець. P>
MOV AN, 02; запит на встановлення курсору p>
MOV ВН, 00; екран 0 p>
MOV DH, 05; рядок 05 p >
MOV DL, 12; стовпець 12 p>
INT 10Н; передача у правління в BIOS p>
І очищення всього екрану p>
MOV АН, 0600; АН 06 (прокрутка) AL 00 (весь екран) p>
MOV BH, 07; стандартний атрибут p>
MOV СХ, 0000; верхня ліва позиція p>
MOV DX, 184FH ; нижня права позиція p>
INT 10H; передача управління в BIOS p>
Значення 02 в регістрі АН вказує команді INT 10Н на виконанняоперації установки курсору. Значення 06 в регістрі АН вказує навиконання операції очищення екрана. p>
Виведення на екран в DOS вимагає визначення текстового повідомлення в областіданих, установки в регістрі АН значення 09 і вказівки команди DOS INT 21H.
У процесі виконання операції кінець повідомлення визначається за обмежувачу
($), Як показано нижче: p>
INT 10H DB 'ім'я студента?','$' P>
. P>
. P>
MOV AN, 09; запит виводу на екран p>
LEA DX, INT 10Н; завантаження адреси зі спілкування p>
INT 21H; виклик DOS p>
Для введення даних з клавіатури , область вводу вимагає наявності спискупараметрів, що містить специфікацію полів, які необхідні привиконанні команди INT: максимальна довжина тексту, що вводиться; поле, кудикоманда повертає дійсну довжину введеного тексту в байтах. Длязапиту на уведення необхідно помістити в регістр АН номер функції - 10 (OAH),завантажити адресу списку параметрів в регістр DX та виконати INT 21H. p>
Зміст завдання. p>
1. Напишіть програму виведення на екран набору символів ASCII - коду. P>
2. Напишіть програму, де запитується введіть ім'я, а потім відображає всередині екрана введене ім'я. p>
Лабораторна робота № 4 p>
Вивчення команд обробки рядків p>
Мета роботи: Пояснити призначення спеціальних цепочечних команд,використовуються для обробки спеціальних символьних даних. p>
Загальні відомості. p>
Для обробки рядкових даних асемблер має п'ять команд обробкирядків: p>
MOVS - переслати один байт або одне слово з однієї області пам'яті віншу; p>
LODS - завантажити з пам'яті один байт в регістр AL або одне слово врегістр АХ; p>
STOS - записати вміст регістру AL або АХ в пам'ять; p>
CMPS - порівняти вміст двох областей пам'яті розміром в один байтабо в одне слово; p>
SCAS - порівняти вміст регістру AL або АХ з вмістом пам'яті. p>
Префікс REP дозволяє цим командам обробляти рядки будь-якої довжини.
Префікс кодується безпосередньо перед цепочечной командою, наприклад REP
MOVS В. Для використання префікса REP необхідно встановити початковезначення в регістрі СХ. При виконанні цепочечной команди з префіксом REPвідбувається зменшення на одне значення в регістрі СХ до 0. Таким чином,можна обробляти рядки будь-якої довжини. У наступному прикладі виконуєтьсяпересилання 20 байт з STRING1 в STRING2. Припустимо, що обидва регістра DS і
ES ініціалізований адресою сегменту даних: p>
STRING1 DB 20DUP ('*') p>
STRING2 DB 20DUP (") p>
... ... p>
CLD; скидання файлу DF p>
MOV СХ, 20; лічильник на 20 байт p>
LEA DI, STRING2; адреса "куди" p>
LEA SI, STRING1; адреса "звідки" p>
REP MOVSB; переслати дані p>
Для команди LODS адреса пам'яті визначається регістрами DS: SI. УЗалежно від значення прапора DF відбувається збільшення або зменшеннязначення в регістрі SI. Оскільки одна команда STOS також збільшує абозменшує адреса в регістрі DI на 1 для байти або на два для слова.
Практична користь команди STOS з префіксом REP-ініціалізація областіданих конкретним значенням. Довжина області (в байтах або словах)завантажується в регістр СХ. Команда CMPS порівнює вміст однієї областіпам'яті (адресується регістрами DS: SI) з вмістом іншій області (адресується регістрами ES: DI). Залежно від прапора DF команда CMPSтакож збільшує або зменшує адреса в регістрах SI і DI на 1 для байтиабо на два для слова. При використанні префікса REP в регістрі СХ маєзнаходиться значення довжини порівнюваних полів. Команда CMPS може порівнюватибудь-яке число байтів або слів. p>
Розглянемо процес порівняння двох рядків містять їх імена Jean і
JOAN. Порівняння побайтово зліва направо призводить до наступного p>
J: J одно p>
Е: 0 Не дорівнює (Е p>