Опишите способы ввода/вывода текстовой информации на языке Ассемблер



Мы поможем в написании ваших работ!


Мы поможем в написании ваших работ!



Мы поможем в написании ваших работ!


ЗНАЕТЕ ЛИ ВЫ?

Опишите способы ввода/вывода текстовой информации на языке Ассемблер



Ассемблер, ориентированный на МП 8086 использует графический адаптер EGA. Этот адаптер обеспечивает хранение 2 графических страниц с разрешением 340х350 пикселей и 16 цветов на каждый.Адаптер поддерживает 64 цвета, хотя в каждый момент времени на экране может содержаться только 16 цветов. Этот набор 16цветов,выводимых на экран(цветная палитра) задается программа и может легко изменяться.Фоновый цвет всего экрана может принимать любое из 16 текущих значений палитры, причем на обеих страницах он изменяется одновременно. Смена цвета фона не затрагивает выведенного на экран изображения.Помимо произвольных изображений, рисуемых по пикселам, на экране в графическом режиме можно отображать и текстовую информацию, используя функции DOS и BIOS. (например INT21h с функцией 09h, или 0Аh). Для позицирования строк на экране можно использовать ф-цию 02Н драйвера BIOS (int10h) , устанавливающую местоположения курсора в текстовых координатах(номер строки от 0 до 24, номер столбца от 0 до 79).При программировании графического изображения можно использовать след. Функции видеодрайвера BIOS(INT10h) 00Н- установка видеорежима, 05Н – установка видео страницы, 0Fh –получение видеорежима,10Н, подфункция 00Н – установка цветового регистра, 10Н, подфункция 02Н – установка цветовых регистров палитры.00Н позволяет переключать режимы видеосистемы. Для адаптеров EGA текстовый режим имеет код 03, графический 10Н.Программа использующая оба режима может использовать функцию 0Fh(определяет номер видеорежима).Функция 05Н переключает видеостраницу, номер страницы заносится в регистр al.Для рисования изображения предусмотрена единственная функция 0Ch – вывод пиксела. В регистр al заносится значение цвета пиксела, в регистр bh -номер страницы( не обязательно активный), в регистре cx,dx координаты пиксела.(х= от 0 до 639,y= 0 до 349).

Цвета пикселов на экране, как и цвета фона задаются содержимым цветовых регистров. Всего а адаптере EGA имеется 17 цветовых регистров, каждый из которых может содержать коды от 0 до 63. Регистр 0 определяет цвет фона, 16 – цвет края экрана, а с 1 по 15 – цвета пикселов. Код цвета, указываемого в программе(al функции 0Cн) определяет не цвет, а номер цветового регистра используемого для вывода на экран заданного пиксела. Цвет пиксела определяется числом, хранящемся в регистре.

Каждый цветовой регистр содержит 6 значащих разрядов, которые определяют интенсивность красного, зеленого, синего цветов. Разряды 0,1,2 закреплены за цветами красный, зеленый и синий с интенсивностью 2/3 от максимальной, а 3,4,5 за теми же цветами, с интенсивностью 1/3.

Mov ah, 0ch

Mov al,5

Mov bh,0

Mov cx,100

Mov dx,150

Int 16h

44Способы ввода информации:

1) Обращение к клавиатуре как файлу с помощью 3Fh прерыванию INT 21h.

Используется предопределенный дескриптор 0, закрепленный за клавиатурой. Число вводимых символов указывается в регистре сx, однако ввод завершается после того как нажата клавиша Enter.

2) Использование группы функции DOSINT 21h обеспечивающий посимвольный ввод с клавиатуры в различных режимах.7 функции прерывания: 01h – ввод символа с эхом, 02h – прямой ввод-вывод через консоль, 07h – нефильтрованный вывод без эхо, 0ah – буферизированный ввод строки с эхом, 0bh – проверка состояния стандартного устройства ввода, 0ch – сброс вводного буфера и ввод.

3)Посимвольный ввод путём обращения в обход DOS непосредственно к драйверу BIOS с помощью прерывания 16h.

Работа с клавиатурой на уровне BIOS считывает двухбайтные коды поступающие в кольцевой буфер ввода и анализировать слово флагов клавиатуры. Для ввода используется функция прерывания 16h: 00h –чтение двухбайтного кода из входного буфера. 01h - чтение двухбайтного кода без извлечения его из буфера. 02h – чтение флагов клавиатуры(ah – скан код, al – код ASCII)

Способы вывода информации:

1) Обращение к экрану как файлу с помощью функции 40h прерывание 21h.Вывод осуществляется с помощью предопределенных дескрипторах 1(стандартное устройство вывод), 2(ошибки выводимые на экран). Число выводимыхсимволов указывается в регистре cx, адрес выводимой строки в DS.

2) Использование группы функции DOS используется посимвольный вывод: 02h – вывод символа, 06h – прямой ввод-вывод, 09h – вывод строки.

 

 

45) Программы типа .COM

Программы типа.СОМ хранятся на диске в виде файлов, в которых содержится абсолютный образ машинных команд, предназначенных для выполнения. Так как файлы не содержат никакой настроечной информации, то они компактнее эквивалентных файлов типа .ЕХЕ, к тому же загружаются для выполнения немного быстрее. Заметим, что DOS не пытается выяснить, действительно ли файл типа .СОМ содержит выполнимую программу (в отличие от файла .ЕХЕ нет признака, ни контрольной суммы). Система заносит любой файл с расширением .СОМ в память и передает ему управление.

Tак как программы типа .СОМ загружаются непосредственно над префиксом сегмента программы и, кроме того, не имеют заголовка, который может задавать другую точку входа, то их начальный адрес всегда составляет 0100H, что определено размером префикса. Максимальная длина программы типа .СОМ составляет 65536 байт минус длина префикса (256 байт) и обязательное слово стека (2 байта) [2, c. 54].

Когда управление передается программе типа .СОМ, все регистры указывают на префикс. В указатель стека SР, если позволяет память, помещается число 0FFFFН, в противном случае - максимальный адрес памяти минус 2 байта. (DOS при входе в программу помещает в стек нулевое слово.)

Несмотря на то что размер выполнимого файла типа .СОМ не может превзойти 64 К, существующие в настоящее время версии системы МS DOS выделяют программам типа .СОМ в момент их загрузки всю область транзитных программ. Так как такие программы часто являются наследием раннего периода МS-DOS и необязательно корректны в отношений управления памятью, то операционная система делает наихудшее предположение и дает программам типа .СОМ все, что возможно. Если программа типа .СОМ хочет использовать для возбуждения другого процесса функцию ЕХЕС, то сначала она должна сократить выделяемую ей память до минимума, обеспечивающего продолжение ее работы, обращая внимание при этом на сохранение стека программы. Когда программа типа .СОМ завершает выполнение, она возвращает управление операционной системе с помощью системного прерывания Int 21Н с функцией 4СН.

Прикладная программа типа .СОМ может компоноваться из многих отдельных объектных модулей. Все модули должны использовать одно и то же имя сегмента программы и имя класса, причем модуль с точкой входа по относительному адресу 0100Н внутри сегмента при компоновке должен быть первым. Кроме того, внутри программы типа .СОМ все процедуры В процессе компоновки программы типа .СОМ компоновщик выдает на экран дисплея сообщение:Warning: no stack segment (Предупреждение: нет сегмента стека)

Это сообщение можно игнорировать. Результатом работы, компоновщика является файл типа .ЕХЕ, который до выполнения должен быть преобразован с помощью системной утилиты EXE2BIN в файл типа .СОМ.должны иметь атрибут NEAR (ближний), так как вся выполнимая программа постоянно находится в одном сегменте

 

Программы типа .EXE

Структура программы типа .СОМ очень проста, а поэтому программист, которому нужно скомпилировать подобного сорта быструю утилиту, может сосредоточиться на логике программы и в минимальной степени вникать проблемы управления транслятором. Однако программы типа .СОМ имеют определенные недостатки, и поэтому наиболее серьезные программы на языке ассемблера в системе DOS написаны так, что их можно преобразовать в файлы типа .ЕХЕ.

В то время как программы типа .СОМ имеют существенное ограничение на общий размер (не более 64 Кбайт в сумме на собственно программу, данные и стек), программы типа .ЕХЕ могут быть практически неограниченного размера. Хотя обычный программный загрузчик в системе DOS не использует этого достоинства файлов типа .ЕХЕ, но способность загружать отдельные части больших программ в разные участки памяти, а также благоприятная возможность выделить "чистый код" программы, который может разделяться несколькими задачами, - все это существенно в многозадачных средах типа Мicrosoft Windows.

В операционной системе DOS загрузчик всегда вводит программу типа .ЕХЕ в память непосредственно над префиксом сегмента программы, хотя порядок сегментов программы, данных и стека может меняться. Файл типа .ЕХЕ содержит заголовок, или блок управляющей информации характерного формата. Размер заголовка определяется числом команд программы, настраиваемых во время загрузки, но всегда кратен 512 байт. До того как DOS передает управление программе, вычисляются начальные значения регистра сегмента программы CS и указателя команд IP, при этом используются информация о точке входа из заголовка файла типа .ЕХЕ, а также адрес загрузки программы. Эта информация извлекается из оператора ЕND исходного текста одного из модулей программы. Регистры сегмента данных DS и дополнительного сегмента ES указывают на префикс, таким образом, программа может обращаться к указателю блока окружения, хвосту команды и другой полезной информации, находящейся в РSР [5, c. 65].

Начальное содержимое регистра сегмента стека SS и указателя стека SP устанавливается из заголовка. Эта информация берется из объявления сегмента с атрибутом SТАСК в исходном тексте программы. Пространство памяти, выделяемое под стек, может инициализироваться тем или иным значением в зависимости от определения сегмента стека.Программа типа .ЕХЕ, поступающая на вход компоновщика, может состоять из большого числа отдельных объектных модулей. Допускается, чтобы каждый модуль использовал уникальное имя сегмента программы, а процедуры имени атрибут либо NEAR, либо FAR в зависимости от условий определения имени и размеров выполнимой программы. Программист должен заботиться о том, чтобы компонуемые вместе модули содержали только один сегмент с атрибутом SТАСК и только одну точку входа, определяемую директивой ассемблера ЕND. Результатом работы компоновщика является файл с расширением .ЕХЕ, который можно немедленно запустить на выполнение.

 



Последнее изменение этой страницы: 2016-06-28; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 34.231.243.21 (0.019 с.)