Міністерство освіти і науки України
НТУУ «Київський політехнічний інститут ім. Ігоря Сікорського»
Кафедра АПЕПС
Лабораторна робота №5
з дисципліни «Операційні системи»
«Система команд. Команди пересилання даних.
Робота з Турбо налагоджувачем»
Гр. ТР-15
Турлака С. С.
Перевірила
д.т.н., проф. Левченко Л.О.
КИЇВ 2022
Мета роботи
Освоєння команд пересилання та отримання навичок налагодження асемблерних програм під керуванням Турбоналагоджувача TD.
Завдання:
Налагодьте програми відповідно до індивідуальних завдань, продемонструйте роботу програми в середовищі налагоджувача ТD.
Завдання варіанту 13: Змініть порядок цифр у символьному рядку виду "432198765 $" , вибудувавши їх у порядку зростання.
Теоретична частина
Для пересилання даних використовується команда MOV, яка має формат: Mov Приймач, Джерело, яка копіює дані з другого операнда (Джерело) у перший (Приймач).
Синтаксис: MOV регістр/пам’ять, регістр/пам’ять/безпосередній_операнд. В якості приймача не можна використовувати регістр CS. Обидва операнди повинні бути одного розміра.
Команда XCHG обмінює дані операнда-джерела і операнда-приймача. Дані можуть бути обмінені між регістрами і регістрами і пам'яттю. Формат: XCHG Приймач, Джерело.
Синтаксис: XCHG регістр/пам'ять, регістр/пам'ять.
Окрім функції виведення рядка символів на екран 9Н, яка заноситься у старший байт регістра АХ, можна використати іншу функцію – 40Н, яка теж заноситься у старший байт регістра АХ. Для цього використовується дексриптор для роботи з екраном або файлом. Дексриптор – це число, яке вказує куди здійснюється виведення інформації: 00 – у файл, 01 – на дисплей. Функція 40Н переривання INT 21H призначена для роботи з дисплеєм.
Для виклику цієї функції необхідно завантажити в регістри наступні значення: АН =40Н (код функції), ВХ=01 (дескриптор), СХ=Кількість символів, що виводиться, DX=Адреса рядка символів, що виводиться.
За замовчанням в Dosbox командний інтерпретатор cmd.exe використовує кодову сторінку 866 (DOS кодування). Для відображення кириличних символів компанія Microsoft для ОС Windows розробила русифікатор Windows в кодуванні win 1251.
Для зміни кодової сторінки в командному інтерпретаторі cmd.exe використовується команда chcp:
Chcp <код>, наприклад, Chcp 1251.
Виконання роботи
Асемблерна програма виконує завдання за варіантом, тобто встановлює порядок за зростанням чисел у строці, використовуючи команди пересилань даних.
; Лабораторна робота 5. «Система команд. Команди пересилання даних.»
; Виконав: Турлак Сергій Степанович ТР-15 30.05.2022
; Завдання: Варіант 13. Змініть порядок цифр у символьному рядку виду "432198765 $" ,
;вибудувавши їх у порядку зростання.
Datas segment
Source db "432198765 $"
CR_LF db 0dh, 0ah, '$'
Datas ends
Codes segment
Assume cs:Codes,ds:Datas
Reverse:
mov ax, Datas
mov ds, ax
mov ah, 40h
mov bx, 1
mov cx, 10
lea dx, Source
int 21h
mov ah, 9h
mov dx, offset CR_LF
int 21h
mov dh, Source
mov dl, Source+3
XCHG Source+3, dh
XCHG Source, dl
mov dh, Source+2
mov dl, Source+1
XCHG Source+1, dh
XCHG Source+2, dl
mov dh, Source+4
mov dl, Source+8
XCHG Source+8, dh
XCHG Source+4, dl
mov dh, Source+5
mov dl, Source+7
XCHG Source+7, dh
XCHG Source+5, dl
mov ah, 40h
mov bx, 1
mov cx, 10
lea dx, Source
int 21h
mov ah, 4ch
int 21h
Codes ends
end Reverse
Змінюємо на кодову сторінку з кодуванням win 1251.
/
Відлагоджуємо програму у TurboDebugger`е. Переконуємося у тому, що все правильно працює.
/
Як результат отримаємо повідомлення, в якому числа встановлені за зростанням:
/