Асемблер для IBM PC
Введення
Дана розробка є другою частиною методичного керівництва до виконання лабораторних робіт. До неї увійшли питання, що стосуються обробки символьної інформації, роботи з процедурами, виконання логічних бітових операцій. Розробка складена на основі лекцій, що читаються авторами з курсу В«Архітектура обчислювальних систем і мережВ», В«Організація ЕОМ і системВ», В«Введення в мову АсемблераВ». p align="justify"> Вивчення тем, пропоновані в цьому посібнику необхідно при підготовці професійних програмістів, оскільки дозволяє краще зрозуміти принципи роботи ЕОМ, операційних систем з мов високого рівня, а також розробляти високоефективні програми.
Опис кожної лабораторної роботи складається з наступних розділів:
В· мета роботи;
В· основні відомості - містять мінімальних набір теоретичних відомостей, необхідних у ході виконання роботи;
В· приклад виконання роботи - типове завдання і програма, що реалізує поставлене завдання, можна розглядати як шаблон для виконання роботи з даної теми;
В· варіанти завдань для індивідуальної роботи;
В· контрольні питання.
При виконанні кожної лабораторної роботи рекомендується прочитати опис і розібрати запропонований приклад, написати програму згідно варіанту завдання, створити здійсненний файл, налагодити програму при декількох наборах вхідних даних, відповісти на контрольні питання.
Звіт з лабораторної роботи повинен включати: варіант завдання, тексти програм у вигляді лістингу трансляції, вихідні дані та результати виконання програми для декількох наборів даних .
1. Обробка символьної інформації
Мета: Вивчити команди для обробки рядків, прийоми, використовувані в роботі з рядками, розглянути прийоми їх використання, реалізувати наведені базові операції при вирішенні завдань.
Завдання:
Гј Навчитися проводити дії над блоками пам'яті, котрі представляють собою послідовності елементів розмірами байт і слово.
Гј Вивчити синтаксис і використання префіксів повторень: REP, REPE і REPNE.
Гј Вивчити синтаксис і використання команд:
o пересилання рядків MOVS, LOADS, STOS та їх еквівалентні форми;
o перевірки рядків CMPS і його еквівалентну форму;
Гј Навчитися прийомам обробки рядків.
Ланцюгові або рядкові команди.
Зазначимо, що тих команд, які були вивчені раніше, цілком достатньо, щоб запрограмувати будь-які операції над послідовностями символів, байтів, слів (рядками). Однак рядки - дуже важливий тип даних. Тому до складу мови Асемблер включено групу команд, що спрощують обробку рядків. p align="justify"> Особливості строкових команд.
1. Кожна строкова операція представлена ​​двома командами: одна з них призначена для обробки рядків з байтів (мнемокод містить букву b (byte)), а інша - для обробки рядків з слів (мнемокод містить букву w (word)). У цілому дії цієї пари команд збігаються, тому зазвичай про них говорять як про одну команду, і в разі необхідності уточнюють, який саме варіант її мають на увазі. p align="justify"> 2. Для виконання своїх функцій рядкові команди використовують певні регістри. Повні фізичні адреси для операндів строкових команд наступні: адреса джерела src - пара DS: SI, адреса приймач dst - пара ES: DI. p align="justify"> 3. Всі рядкові команди по завершенні основної дії виконують зміна регістрів SI і DI так, щоб у них виявилися адреси сусідніх елементів рядків (на величину d). p align="justify">. Напрямок перегляду рядка залежить від значення прапора напрямки DF. Змінити прапор DF можна командами:
очищення прапора DF (clear DF) - CLD (DF: = 0) - перегляд зліва направо;
установка прапора DF (set DF) - STD (DF: = 1) - перегляд справа наліво.
Існує п'ять основних строкових команд: завантаження (LODS), запис (STOS), пересилання (MOVS), сканування (SCAS) та порівняння ...