КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Указания по организации самостоятельной работы
Изучение программно–аппаратной реализации доступа к памяти и устройствам ввода/вывода в реальном режиме работы процессора і80х86. Лабораторная работа № 1. Цель работы: изучение внутренней организации вычислительной системы на базе микропроцессора і80х86, возможностей непосредственной адресации памяти и портов ввода/вывода, структуры программы и механизма сегментной адресации. Перед работой необходимо проработать теоретический материал по литературе [1–8] и конспект лекций, ознакомиться со структурой и принципами функционирования ПЭВМ типа IBM PC/AT, системой команд и основами программирования на языках Borland Turbo Pascal v. 6.0–7.0 и Assembler для микропроцессора і80х86. 1.1.1. Архитектурные особенности вычислительных систем на базе микропроцессора і80х86 в реальном режиме. Согласно рис.1.1 микропроцессор в реальном режиме физически позволяет обращение к 1 МБт оперативной памяти (адресное пространство ограничено 20 линиями шины адреса) и 64 КБт портов вода/вывода (при обращении к портам ввода/вывода используется только 16 младших разрядов шины адреса). В вычислительной системе используется раздельное обращение к памяти и портам ввода/вывода с помощью специальных сигналов управления MEM ENB и IO ENB. Таким образом, адресные пространства памяти и портов ввода/вывода не перекрываются. Шина данных микропроцессора имеет 16 разрядов, поэтому передача данных осуществляется двухбайтными словами. Рис.1.1. Структурная схема вычислительной системы на базе МП і80х86.
Микропроцессоры семейства і80х86 в реальном режиме работы имеют 16 разрядную внутреннюю организацию и содержат 14 16–разрядных регистров (см. рис. 1.2), которые подразделяются на регистры общего назначения, регистры смещения, сегментные и регистр флагов. Рис. 1.2. Регистры микропроцессора і80х86, доступные в реальном режиме.
Четыре регистра общего назначения AX, BX,CX, DX являются регистрами данных, поскольку они преимущественно используются для хранения данных. Регистр АХ является аккумулятором (большинство команд выполняется быстрее и занимает в памяти меньше места при его использовании). При работе с этими регистрами допускается раздельное обращение к их младшим и старшим половинам: например, при выполнении команды пересылки данных: mov CL, AH в младший байт регистра СХ (СL) записывается содержимое старшего байта регистра АХ (AL), при этом вторые байты этих регистров остаются без изменения. При обращении к остальным регистрам процессора не допускается побайтовая адресация. Регистры СS, DS, ES, SS предназначены для хранения начальных адресов сегментов программы, а в регистрах SI, DI, BP, SP находятся смещения относительно некоторой базы при выборке операндов из памяти. В регистре IP находится относительный адрес команды, следующей за исполняемой. Регистр флагов FLAGS содержит информацию о текущем состоянии процессора. Он включает 6 флагов состояния и 3 бита управления состоянием процессора При организации контроля результатов арифметических операций, формирования условных переходов и работе с прерываниями представляют интерес следующие флаги: – ZF – флаг нуля, устанавливается в 1, если результат операции равен 0; – SF – флаг знака, устанавливается в 1 при отрицательном результате; – CF – флаг переноса, устанавливается в 1 при наличии переноса в арифметических операциях; – OF – флаг переполнения, фиксирует выход результата за пределы допустимого диапазона; – IF – управляющий флаг разрешения прерываний, разрешает (1) или запрещает (0) процессору реагировать на аппаратные прерывания.
1.1.2. Механизм работы с памятью на физическом уровне. Для реализации обращения к 20–и разрядному адресному пространству памяти с помощью 16–и разрядных регистров микропроцессоры семейства і80х86 используют механизм сегментной адресации – доступа к памяти с помощью сегментов (логических образований) размером от 0 до 64 КБт, накладываемых на произвольные участки физического адресного пространства. Формирование физического 20–и разрядного адреса (см. рис.1.3) осуществляется с помощью суммирования начального адреса сегмента памяти (сегментного адреса), в котором находится данная ячейка, и ее смещения (относительного адреса) относительно начала сегмента. Сегментный адрес, смещенный на 4 разряда вправо (деленный на 16), заносится в один из сегментных регистров. Согласно примеру, приведенному на рис 1.3, физический адрес СВ819h ячейки формируется в микропроцессоре аппаратным умножением содержимого BEC7h одного из сегментных регистров на 10h для получения полного шестнадцатеричного пятизначного сегментного адреса BEC70h и складывается со смещением CBA9h ячейки относительно начала сегмента. Исполнительный адрес часто обозначается в виде SEG:OFFSET (сегментной и относительной частей, разделенных двоеточием). Для примера, приведенного на рис. 1.3.: BЕ859h = BE85:0009h. Очевидно, что один и тот же физический адрес можно представить несколькими способами, в зависимости от выбора сегментного адреса. Рис.1.3. Пример формирования физического адреса с помощью механизма сегментной адресации.
Минимальной адресуемой единицей информации в микропроцессорах семейства і80х86 является байт. У переменных, занимающих в памяти несколько байт, например, у переменных целых типов данных языка Borland Pascal, отображенных на рис. 1.4, младшему байту соответствует меньший адрес. При этом адресом переменной, занимающей в памяти несколько байт, является адрес ее младшего байта. На рис. 1.5. приводится пример распределения ячеек памяти четырехбайтовой переменной типа Longint, содержащей значение 1426А5Е8h и адресуемой по смещению В800. Рис.1.4. Распределение ячеек памяти у переменных целых типов языка Borland Pascal. Рис.1.5. Распределение ячеек памяти переменной Р типа Longint.
Для определения сегментного и относительного адресов переменных в ассемблере служат операторы seg и offset. Следующий фрагмент программы заносит содержимое, сегментный и относительный адреса переменной W типа Word в регистры DХ, ЕS, BX:
Ввиду невозможности обеспечения произвольной пересылки данных в сегментные регистры для временного хранения сегментного адреса переменной W используется регистр-аккумулятор АХ. Раздельный доступ к младшему и старшему байтам переменной W, можно организовать следующим образом: mov CL, ES:[BX] – в СL заносится младший байт переменной W; mov DH, ES:[BX+1] – в DH заносится старший байт переменной W. При работе с адресными выражениями необходимо помнить, что с одного и того же адреса могут начинаться ячейки разных типов. В общем случае тип пересылаемых данных совпадает с типом операнда приемника (например, Word – для регистра АХ и byte – для регистра AH). Для явного указания типа применяется оператор PTR. Так, выражения Byte PTR A и WORD PTR A позволяют обращение к ячейке памяти с адресом А как к байту и как к слову соответственно. 1.1.3. Сегментная структура программы. В общем случае в программе, работающей в операционной системе MSDOS, используются 3 сегмента памяти: сегмент кода, сегмент данных и сегмент стека. Причем в регистр СS заносится начальный адрес сегмента кода, в DS – начальный адрес сегмента данных, в SS – начальный адрес сегмента стека. Размеры сегментов могут быть произвольными в пределах от 0 до 64 КБт (см. рис. 1.6). В сегменте кода содержатся команды программы, в сегменте данных – глобальные переменные, сегмент стека используется для вспомогательных целей, хранения локальных переменных процедур и т.д. Регистр дополнительного сегмента данных ES может указывать на произвольную область памяти. Рис.1.6. Сегментная структура программы. Как видно из рис. 1.6 при реализации механизма сегментной адресации смещения могут указываться не произвольно, а в соответствие с принятыми соглашениями: СS:[IP], DS:[BX][SI][DI], ES:[BX][SI][DI], SS:[BP][SS]. В одном из сегментных регистров находится сегментный адрес, а через символ: в квадратных скобках указывается регистр, содержащий относительный адрес (смещение) ячейки памяти. 3.1.4. Основные принципы прямого обращения к видеопамяти в текстовом режиме. Процедуры обработки прерываний выполняют определенные узкоспециализированные функции. Как правило, это ввод/вывод данных из портов внешнего устройства, передача флага состояния в основную программу. Это связано прежде всего с тем, что функции базовой системы ввода/вывода BIOS и операционной системы DOS являются нереентерабельными (нерекурсивными). Это означает, что прерывание выполняющейся функции BIOS или DOS (например, в главной программе) при выполнении аналогичной функции в обработчике прерывания приведет к нарушению последовательности управляющих команд и краху системы. Поэтому в обработчиках прерываний наиболее распространенной методикой является прямое управление аппаратурой на уровне ячеек памяти и портов ввода/вывода. Так, вывод информации на экран терминала в процедурах обработки прерываний проводится путем непосредственного обращением к видеопамяти. 1.1.4. Основные принципы прямого обращения к видеопамяти в текстовом режиме. Вывод информации на экран терминала в большинстве случаев целесообразно проводить путем непосредственного обращения к видеопамяти. В текстовом режиме изображение обычно состоит из 25 строк по 80 символов в каждой строке. Каждый символ и фон под этим символом могут отображаться любым из 16 цветов. Текстовый видеобуфер адаптера EGA\VGA начинается с физического адреса В8000h и включает 8 видеостраниц по 4 КБт. Активной, по умолчанию, является нулевая видеостраница, начальный адрес которой совпадает с начальным адресом видеобуфера. Каждый символ занимает в видеобуфере поле из 2–х байт (см. рис. 1.7). Младшие (четные) байты всех полей отводятся под АSCII – коды отображаемых символов, старшие (нечетные) байты – под атрибуты символов. Биты R, G, B и r, g, b байта атрибутов задают составляющие красного, зеленого и синего цветов символа и фона соответственно. Биты I и i – яркость цветов символа и фона соответственно. Код, записываемый в видеобуфер, отображается на экране в виде изображения цветного символа на одном из знакомест. Рис.1.7. Логическая организация текстового видеобуфера.
При выводе символа на экран необходимо поместить в сегментный регистр (например, ЕS) сегментный адрес видеобуфера (B8000h/10h= B800h). Относительный адрес (четный) задает позицию размещения символа на экране. Первые 80 2–х байтовых полей соответствуют первой строке экрана, вторые 80 2–х байтных полей – второй и т.д. Пример вывода на экран символа ‘ А ’ на 4 –ю позицию нулевой строки экрана приводится ниже: mov AX, 0B800h загрузить в АХ сегментный адрес видеобуфера; mov ES, AX настроить ES на сегментный адрес видеобуфера; mov AL, 'А' загрузить в AL код символа ‘ A ’; mov AH, 00011100b загрузить в AН атрибут символа ‘ A ’; mov ES:[8], AX вывод на экран символ ‘ А ’ красного цвета на синем фоне. После выполнения данного примера на экран в 4–й позиции нулевой строки будет выведен символ ‘ А ’ красного цвета на синем фоне. 1.1.5. Принципы взаимодействия с устройствами ввода/вывода на аппаратном уровне. Обмен информацией с внешними устройствами осуществляется с помощью портов ввода/вывода. Порт ввода–вывода – 8, 16 – разрядный регистр, имеющий определенный адрес в 64 кБт адресном пространстве ввода/вывода (см. рис.1.1). Взаимодействие прикладной программы с внешним устройством можно осуществлять с помощью «высокоуровневых» функций операционной системы или функций Базовой системы ввода/вывода BIOS (средний уровень), и непосредственно – прямым программированием портов, которое является единственным методом в случае применения нестандартных внешних устройств, или для достижения максимального быстродействия при обмене данными. Для обращения к портам ввода/вывода в микропроцессоре предусмотрены специальные команды in и out:
Причем, регистр АХ – используется при 16–и разрядной, а АL – при 8–и разрядной передаче данных. Если номер порта не превосходит 255, его можно указывать непосредственно. Примеры:
Подключаемые внешние устройства, как правило, содержат несколько портов ввода/вывода, каждый из которых предназначен для выполнения определенных функций, например, для передачи данных (регистр данных), адреса (регистр адреса), управляющих сигналов (регистр управления), получения информации о готовности к обмену данными (регистр состояния) и т.д. При этом адресация портов, используемых данным устройством, ведется относительно некоторого базового адреса. 1.2. Описание лабораторной установки. Лабораторные работы выполняются в индивидуальном порядке. На рабочем месте каждого студента должен быть установлен ПК типа IBM PC/AT c инсталлированным на нем программным обеспечением: операционной системой MS–DOS v. 6.22 – 7, оболочкой для управления файлами типа NC, компилятором языка программирования высокого уровня Borland Turbo Pascal v. 7.0. Загрузка интегрированной среды разработчика Тurbo Pascal, объединяющей в себе специализированный текстовый редактор, компилятор и компоновщик осуществляется запуском файла turbo.exe из каталога …ТР7\BIN. После загрузки интегрированной среды в верхней строке экрана появится главное меню. Оно становится активным после нажатия клавиши [F10], или [Alt] и первой буквы соответствующего пункта меню. Во всех открывающихся меню и подменю перемещение по пунктам проводится вертикальными и горизонтальными стрелками, выбор пункта меню производится клавишей Enter, отмена - клавишей [ESC]. Основные команды интегрированной среды Тurbo Pascal: Опции меню File: Open [F3] – загрузить файл в окно редактора; Save [F2] – сохранить текущий файл; Save as – сохранить текущий файл под новым именем Опции меню Run: Run [Ctrl+F9] – компиляция, компоновка и запуск программы на выполнение; Опции меню Compile: Make [F9] – компиляция программы, следует использовать для выявления синтаксических ошибок; Destination memory/disk – определяет место, где будет размещаться загрузочный код программы (в ОЗУ или на диске); Опции меню Debug: User screen [Alt+F5] – Позволяет просмотреть результаты работы программы, выводимые на консоль. Evaluate and modify [Ctrl+F4] – позволяет отобразить и, при необходимости, изменить значение любой переменной. Register – выводит на экран таблицу, в которой отображаются значения в регистрах микропроцессора на этапе отладки программы. Запись Assembler – кода программы в среде Тurbo Pascal осуществляется в операторных скобках asm … end;, между которыми помещаются операторы языка Assembler. Для компиляции и запуска программы на выполнение не требуется выходить из редактора, достаточно нажать только комбинацию клавиш [Ctrl+F9] и текст программы будет откомпилирован. При обнаружении ошибок в программе компилятор выдаст сообщение о первой встретившейся ошибке в нижней строке экрана, установив курсор на строку, вызвавшую ошибку. 1.3. Порядок проведения работы и указания по ее выполнению. Перед началом выполнения практической части лабораторной работы проводится экспресс–контроль знаний по методам доступа к оперативной памяти и портам ввода/вывода. При подготовке к лабораторной работе необходимо составить предварительные варианты листингов программ, указываемых в пунктах практического выполнения работы. 1.3.1. Исследование сегментной структуры программы. Запустить файл turbo.exe из каталога …ТР7\BIN и создать файл с текстом программы, назвав его, например, lab11.pas. Ввести в разделе var описаний глобальных переменных программы следующие идентификаторы:
Дата добавления: 2014-12-07; Просмотров: 866; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |