Міністерство освіти і науки УкраїниНаціональний технічний університет України
«Київський політехнічний інститут ім. І. Сікорського»
Кафедра автоматизації проектування енергетичних процесів і систем
Лабораторна робота №5
з дисципліни «Операційні системи»
«Система команд. Команди пересилання даних. Робота з турбо налагоджувачем»
Варіант - 15
Мета роботи: освоєння команд пересилання та отримання навичок налагоджування асемблерних програм під керуванням Турбоналагоджувача TD.
Завдання для виконання:
15. Виключіть нецифрові символи із символьного рядка “647A791MKZS123T $”, замінивши їх на пропуски.
Теоретична частина:
Для пересилання даних використовується команда MOV, яка має формат: Mov Приймач, Джерело, яка копіює дані з другого операнда (Джерело) у перший (Приймач).
Синтаксис:
MOV регістр/пам’ять, регістр/пам’ять/безпосередній_операнд
В якості приймача не ожна використовувати регістр CS. Обидва операнди повинны бути одного розміру.
Команда XCHG обмінює дані операнда-джерела і операнда-приймача. Дані можуть бути обмінені між регістрами і регістрами і пам’яттю. Формат: XCHG Приймач, Джерело
Синтаксис:
XCHG регістр/пам’ять, регістр/пам’ять
Команда LEA завантажує адресу пам’яті у регіст, має формат: LEA Приймач, Джерело
Синтаксис:
LEA регістр пам’ять
Операндом-приймачем може бути будь-який загальний регістр, операндом-джерелом може бути будь-який операнд в пам’яті. Виконавча адреса операнда-приймача розташовується в регістр-приймач.
Команда LEA може використовуватися для обчислення виконавчої адреси операнда прямої адресації, хоча зазвичай це неефективно, тому що адреса операнда прямої адресації - константа, яка відома під час асемблювання.
LEA DX, STRING
MOV DX, OFFSET STRING
Обидві команди призводять до однакового результату, однак друга команда більш швидкодіюча.
Команда LEA є більш ефективною для обчислення виконавчих адресов непрямих операндів у пам’яті.
LEA DX, STRING[SI]
Окрім функції виведення рядка символів на екран 9Н, яка заноситься у старший байт регістра АХ, можна використати іншу функцію – 40Н, яка теж заноситься у старший байт регістра АХ. Для цього використовується дексриптор для роботи з екраном або файлом. Дексриптор – це число, яке вказує куди здійснюється виведення інформації: 00 – у файл, 01 – на дисплей. Функція 40Н переривання INT 21H призначена для роботи з дисплеєм. Для виклику цієї функції необхідно завантажити в регістри наступні значення: AH=40H(код функції), BX=01(дескриптор), CX = Кількість символів, що виводяться, DX = Адреса рядка символів, що виводиться.
Кодова сторінка
За замовчанням в Dosbox командний інтерпретатор cmd.exe використовує кодову сторінку 866 (DOS кодування). Для відображення кириличних символів компанія Microsoft для ОС Windows розробила русифікатор Windows в кодуванні win 1251.
Найпоширенішою в інтернеті кодуванням є UTF-8 - кодова сторінка 65001. Вона включає в себе більше двох мільйонів символів: всі можливі сучасні алфавіти, цифри, розділові знаки, математичні та спеціальні символи, музичні знаки і символи вимерлих форм писемності.
Для зміни кодової сторінки в командному інтерпретаторі cmd.exe використовується команда chcp, синтаксис:
Chcp <код>, наприклад, Chcp 1251.
Також потрібно вибрати шрифт Lucida Console. Для цього необхідно правою кнопкою в заголовку вікна DOSBox Status Window вибрати команду Свойства вкладка Шрифт вибрати шрифт Lusida Console.
Виконання роботи:
Код програми:
/
Створення та виконання fund5.exe файлу:
/
Вигляд fund5.exe у TD:
/
Виконаємо програму за клавішою F9 та подивимось результат за комбінацією alt+F5.
/
Висновок: Під час виконання данох лабораторнох роботи було команди пересилання та отримано навички налагодження асемблерних програм під керуванням TD. Також було розглянуто нові функції(40H), нові команди(xchg, lea), та детальніше розглянути старі, наприклад mov.