|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
ПРАКТИЧНА РОБОТА №17Тема: Робота з графікою Мета: Вивчити основні функції переривання при роботі з графікою. Задачі: Складання графічних програм. Обладнання для виконання роботи: 1. Методичні вказівки що до виконання лабораторної роботи; 2. Персональний комп’ютер; 3. Відповідне програмне забезпечення (Windows 98, Microsoft Office 2000, XP, 2003, MS Excel, емулятор типу Emu8086 v2.57). Теоретичні основи: Для роботи із графікою необхідно скористатися перериваннями BIOS, тому що переривання MS-DOS надають функції тільки для висновку текстової інформації. Для того щоб намалювати на екрані найпростіше графічне зображення необхідно спочатку перевести відеоадаптер у графічний режим. Дотепер ми користувалися текстовим режимом, у якому екран умовно розбивається на певне число т.зв. «знакомест». Знакоместо - це область екрана, на яку можна вивести тільки один символ. Стандартний дозвіл екрана в текстовому режимі 80x25 (тобто 80 символів по горизонталі й 25 по вертикалі). Т.о. побудова зображення в текстовому режимі програмно здійснюється по символах. У графічному режимі екран розбивається на «пикселі» - невеликі ділянки у вигляді крапок, і побудову зображення можна здійснювати, малюючи кожну з них окремо. Для переведення відеоадаптера в графічний режим можна скористатися функцією 0x00 переривання BIOS 0x10. При її виклику в регістрі AL повинен бути записаний код відеорежиму (ми будемо використовувати код 0x13 - графічний режим 320x200, 256 кольорів). Функція 0x0F переривання BIOS 0x10 записує код поточного відеорежиму в регістр AL. Відзначимо, що грамотно побудована програма перед зміною відеорежиму, повинна запом’ятати код поточного відеорежиму й перед завершенням роботи відновити його. Для малювання окремих пикселів ми будемо користуватися функцією 0x0C переривання BIOS 0x10. При її виклику в регістрі AL повинен перебувати код кольору пикселя, у регістрі CX - x-координата, DX - y-координата, а в регістрі BH - відеосторінка, на якій здійснюється малювання. Як відзначалося в п.1.4, образ того, що в цей момент зображено на екрані, зберігається в спеціальній області оперативної пам'яті - відеобуфері. Щоб змінити поточне зображення (вивести рядок, символ, намалювати пиксель), необхідно відповідним чином змінити вміст відеобуфера (що й роблять використовувані нами функції 0x02, 0x09 DOS-Переривання 0x21 і функція 0x0C переривання BIOS 0x10). Відеобуфер організований так, що в ньому можна зберігати відразу декілька «образів» екрана. Кожний такий «образ» називають відеосторінкою (іншими словами це просто певна область відеобуфера). Відеосторінка, що у цей момент відображається на екрані, називається активної. Така організація відеобуфера дозволяє спочатку намалювати зображення на неактивній відеосторінці (тобто зміни в цій частині відеобуфера не будуть відразу відображатися на екрані), а потім зробити цю сторінку активної. У цьому випадку намальоване зображення з'явиться на екрані миттєво. Якщо ж здійснювати малювання на активній відеосторінці, то при малюванні великих об'єктів буде помітний процес висвітлення окремих пикселів. Для простоти ми будемо користуватися тільки однією відеосторінкою. Нижче наведений приклад програми, що малює на екрані горизонтальну лінію починаючи із крапки (0, 10) довжиною 256 пикселів, причому кожний пиксель лінії має свій колір:
dat segment 'data' vmode db 0;вихідний відеорежим color db 0;код кольору dat ends stk segment stack 'stack' db 512 dup(0) stk ends prog segment 'code' assume CS:prog, DS:dat, SS:stk begin: mov AX, dat mov DS, AX mov AH, 0Fh int 10h mov vmode, AL mov AH, 0 mov AL, 13h int 10h mov CX, 0 mov DX, 10 paint: mov AH, 0Ch mov AL, color mov BH, 0 int 10h inc CX inc color cmp CX, 256 jnz paint waitkb: mov AH, 08h int 21h cmp AL, 1Bh jnz waitkb mov AH, 0 mov AL, vmode int 10h mov AH, 4Ch mov AL, 0 int 21h prog ends end begin Після креслення лінії програма очікує натискання клавіші ESC, після чого відновлює вихідний відеорежим і завершує роботу. Література: 5. Самоучитель по микропроцессорной технике. СПб., Наука и техника. 2003 – 224с. 6. Мікропроцесорна техніка. Підручник /Якименко Ю. І, Терещенко Т. О. таінші/ - 2-ге вид., переробл. та доповн. – К.: ІВЦ «Видавництво «Політехніка»», 2004. – 440 с. 7. Микропроцессорные системы. Под ред. Д. В. Пузанкова. СПб., Политехника. 2002 – 935с. 8. Юров В. Assembler: Практикум. — СПб.: Питер, 2001. Техніка безпеки: Студенти та курсанти, які виконують практичні роботи у лабораторіях, згідно з розкладом занять, повинні виконувати привила техніки безпеки, а саме: 6. заходити у лабораторію тільки з дозволу викладача або завідуючого лабораторією; 7. не приносити до лабораторії легко палких та отруйних речовин; 8. без дозволу викладача або завідуючого лабораторією не вмикати ЄОМ та інші електричні прилади; 9. чітко та своєчасно виконувати накази викладача або завідуючого лабораторією; 10. у разі будь-якого інциденту, негайно доповісти викладачу або завідуючому лабораторією. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.) |