47621 (Мова програмування Assembler), страница 16

2016-07-30СтудИзба

Описание файла

Документ из архива "Мова програмування Assembler", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "47621"

Текст 16 страницы из документа "47621"

Кожного разу, коли програма викликає відеопрограму BIOS, вона визначає, який дисплейний адаптер існує в системі за допомогою перевірки бітів поля EQUIP_FLAG, що відповідають поточному дисплею. Якщо біти 5 і 4 обоє рівні 1, то в системі присутній монохромний адаптер. Будь-яка інша установка біт говорить про те, що в системі працює кольоровий адаптер. Фірма IBM написала цю програму таким чином, виходячи з того, що система може мати тільки один дисплейний адаптер. Перед першим включенням машини ви повинні установити перемикачі на системній платі в положення, що показує, який адаптер дисплея використовується.

Інформація прапорів устаткування в полі EQUIP_FLAG визначає, яку з адрес буфера буде використовувати відеопрограма BIOS. Для монохромної плати BIOS завантажує в регістр ES значення 0B000H, а для кольорової плати - значення 0B800H. Це дозволяє іншим програмам дисплея BIOS працювати без використання інформації про те, який адаптер працює в системі. Усі посилання до буфера робляться щодо регістра ES.

Ви можете вирішити, що, оскільки поле EQUIP_FLAG показує, який адаптер використовується, можна переключатися від одного адаптера до іншого просто змінюючи біти в слові прапорів. На жаль, це не так, адреса введення-висновку контролера 6845 відрізняється для двох адаптерів, і BIOS записує цю базову адресу у свою область даних. Відеопрограма BIOS заносить у змінну ADDR_6845 ця адреса тільки при ініціалізації адаптера (команда AH = 0). Тому переключення від одного дисплея до іншого також вимагає коректування цієї змінної.

Навіть якщо змінна CURSOR_POSN містить вісьмох позицій, вона не може обслуговувати переключення на інший дисплей. Ви повинні скидати положення курсору в області даних BIOS усякий раз при переключенні з одного адаптера на іншій. Якщо ви не зробите цього, зображення курсору не буде відповідати його положенню, записаному в області даних, і символ на екрані буде записуватися в невірну позицію.

Фірма IBM опублікувала методи зміни одного дисплея іншим, як за допомогою програми мовою асемблера, так і за допомогою програми на Бейсике. У цих методах потрібно для вказівки адаптера, що ви хочете використовувати, змінити змінну EQUIP_FLAG, а потім використовувати відеопереривання INT 10H при AH = 0. Ця функція инициализирует адаптер і забезпечує правильну установку всіх полів дані програми BIOS. Після цього BIOS може працювати з тим дисплейним адаптером, що зазначений. При цьому картинка на іншому дисплеї залишається видимої. Крім того, дисплейний буфер того адаптера продовжує відображати будь-які зміні тексту і графіки, занесеної в нього. Так що ви можете змінювати вміст дисплейного буфера за допомогою вашої програми (а не за допомогою BIOS), щоб скорегувати інформацію, яка знаходиться на екрані, з якого ви тільки що переключилися.

Давайте розглянемо простий приклад. Ви маєте IBM PC із двома адаптерами - кольоровим графічним і монохромний, і до кожного адаптера підключений дисплей. Коли ви спочатку включаєте машину, система використовує монохромний дисплей. Саме з обліком цього ви і повинні установити перемикачі на системній платі, тому що монохромний дисплей може бути пошкоджений, якщо не буде ініціалізований відразу ж після включення живлення. Інструкція по роботі рекомендує, щоб ви установили перемикачі в положення, яка показує, що в системі присутній монохромний адаптер. Після цього ви можете використовувати відеопрограму BIOS з монохромним дисплеєм. Щоб перейти на кольоровий адаптер, можна виконати програму на рис.П9.7. Ця програма включає кольоровий адаптер у 80-символьному текстовому режимі. Символи, що були висвітлені на монохромному дисплеї, на ньому і залишаються, а ви тепер можете використовувати відеопрограму BIOS для роботи з кольоровим графічним дисплеєм. Але якщо вам буде потрібно змінити вміст монохромного дисплея, ви зможете зробити це, записавши нові символи чи атрибути в буфер дисплея за адресою 0B000H. Це не змінить положення курсору, але змінить картинку. У цьому випадку якщо ви хочете змінювати текст одночасно на кольоровому і монохромному дисплеях, ви повинні написати власну програму обслуговування монохромного дисплея. Чи ви можете з'ясувати, які значення треба змінити в полі даних BIOS, щоб курсор перейшов назад, і виконав потрібні дії, не ініціалізувавши адаптер щоразу.

Установка режиму

Коли програма виконує переривання INT 10H при AH = 0, вона викликає функцію установки режиму відеопрограми BIOS. Якщо в змінної EQUIP_FLAG відзначено, що в системі є монохромна плата, не важливо, яке значення виявилося в регістрі AL. У цьому випадку програма BIOS набудовує монохромний адаптер на режим 7, що означає текстовий режим 80*50, підтримуваний чорно-білою платою.

У випадку кольорової графічної плати значення в регістрі AL визначає, у який із двох графічних чи двох текстових режимів уведе програма BIOS дисплейний адаптер. Ви бачите, що існують чорно-білі режими поряд з кольоровими для тексту, а також графіка 320*200. Ці чорно-білі режими насправді не виключають кольору, вони тільки виключають сигнал кольоровості, що використовується в телевізорі для визначення кольору кожної крапки. Якщо ви використовуєте RGB-монітор, кольори залишаться на місцях. Якщо ж ви використовуєте кольоровий (чи чорно-білий) чи відеомонітор телевізор, установка чорно-білого режиму кольорової плати виключить кольори і дасть більш чітке зображення на екрані. Якщо ви займаєтеся задачею, у якій кольори не потрібні, то одержати трохи краще зображення можна, вибравши один з чорно-білих режимів замість кольорового.

Коли виконується програма установки режиму, вона настроює адаптер і поле даних відеопрограми BIOS на обслуговування потрібного режиму роботи. Програма установки режиму заповнює пробілами буфер дисплея і поміщає курсор у верхньому лівому куті екрана. Доти, поки ви не будете досить знайомі з пристроєм дисплея, ви повинні використовувати програму установки режиму BIOS. Хоча і немає нічого поганого в зміні кодів дисплея на ваші власні, дуже важко налагоджувати програму, що модифікує дисплей. Якщо ви зробите щось невірно, дисплей стане непрацездатним, і зникне можливість визначити, що ж невірно.

Функції відеопрограми, що відповідають номерам від 1 до 5 служать для роботи з регістрами мікросхеми 6845. Як ви пам’ятаєте з опису системної апаратури, мікросхема 6845 містить регістри, що керують формою і положенням курсору, а також тимчасовими характеристиками відображення. Ці підпрограми відеопрограми BIOS дозволяють модифікувати відображення, не знаючи базової адреси мікросхеми 6845. Ці підпрограми входять у число сервісних програм BIOS.

Зрушення зображення

Програми зрушення переміщають текстову інформацію або нагору, або вниз, у залежності від викликаної функції. Програми зрушення також забезпечують деякі засоби організації вікон (фрагментів екрана) на екрані дисплея - тобто BIOS може зрушувати тільки частина вмісту екрана. Вхідні параметри програми зрушення визначають прямокутник, розташований на екрані. Він задає верхній лівий і правий нижній кути області зрушення. Відеопрограма BIOS зрушує дані тільки в цій області. Інша частина екрана не міняється.

Ми вже бачили користь зрушення вікон при вивченні операційної системи і мови Бейсік, яке використовували для зрушення BIOS. Якщо працює 80-символьний дисплей, DOS установлює верхній лівий кут вікна зрушення рівним (0, 0), а нижній правий кут (24, 79). Так зрушується весь екран. Але Бейсік використовує двадцять п'ять рядків для індикації стану дисплея, і тільки 24 рядка відводить під зображення програми. Коли Бейсік зрушує екран за допомогою базової системи введення-висновку, він установлює верхній лівий кут у крапці (0, 0), а правий нижній кут - у крапці (23, 79). Із-за того, що останній рядок залишається за межами зрушення, вона не переміщається під час зрушення. У наступній главі приведений приклад зрушення вікна, який викликаний з програми на Бейсіку.

Відеопрограма BIOS виконує зрушення за допомогою переносу символів і атрибутів у дисплейному буфері. Програма зрушення не змінює стартової адреси дисплейного буфера; такий метод зрушення був би швидший, але не дозволяє прикладній програмі визначати, куди повинні потрапити окремі символи. Спосіб зрушення, реалізований у BIOS, підходить для звичайної роботи екрана. Помітимо також, що програма зрушує зображення при необхідності більш ніж на один рядок. Звичайно програма зрушує зображення на один рядок. Функція зрушення відеопрограми BIOS дозволяє зрушити вміст екрана на кілька рядків. Якщо ж кількість рядків зрушення дорівнює нулю, програма BIOS очищає екран. Це - швидкий спосіб очищення всього екрана або його частини.

Коли програма працює в 80-символьному режимі на кольоровому графічному адаптері, вона не може записувати або читати його текст у довільний момент часу. Якщо програма буде модифікувати буфер не в строго визначені моменти часу, на екрані з'являться перешкоди. Оскільки програма зрушення читає і записує великі кількості даних, вона повинна бути написана з урахуванням проблеми перешкод. Якщо подивитися текст програми обслуговування операції зрушення, то можна побачити, що BIOS обслуговує режим 80*25 кольорової плати (змінна CRT_MODE дорівнює 2 чи 3), як спеціальний випадок. У випадку операцій зрушення ця підпрограма BIOS чекає доти, поки не виникне вертикальний зворотний хід променя дисплея. Це означає, що апаратура адаптера видала на екран весь вміст буфера і готова почати новий кадр. (Апаратура адаптера повторює цей процес регенерації екрана 60 разів у секунду). З появою вертикального зворотнього ходу програма BIOS виключає дисплей і виконує зрушення. Коли програма зрушення перемістить усі символи, вона знову включає дисплей. Це викликає коротке миготіння дисплея. Якщо ви уважно подивитеся на екран під час зрушення, то побачте, що верхні його шість рядків трохи темніші інших. Це відбувається із-за того, що операція зрушення займає трохи більше часу, ніж один період регенерації екрана. Тому верхні шість рядків виключаються на два інтервали регенерації, а весь інший екран - тільки на один інтервал. Метод, що допускає появу перешкод на екрані, настільки непривабливий, що описаний метод переважніший. Ви можете написати кілька програм, щоб спробувати інші методи.

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5193
Авторов
на СтудИзбе
434
Средний доход
с одного платного файла
Обучение Подробнее