Студопедия

КАТЕГОРИИ:


Архитектура-(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:

mov DX, W – содержимое переменной W заносится в DX;
mov AX, seg W – сегментный адрес переменной W заносится в АX;
mov ES, AX – содержимое АХ заносится в ЕS;
mov BX, offset W – относительный адрес переменной W заносится в 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 ’;

mov ES:[8], AX вывод на экран символ ‘ А ’ красного цвета на синем фоне.

После выполнения данного примера на экран в 4–й позиции нулевой строки будет выведен символ ‘ А ’ красного цвета на синем фоне.

1.1.5. Принципы взаимодействия с устройствами ввода/вывода на аппаратном уровне. Обмен информацией с внешними устройствами осуществляется с помощью портов ввода/вывода. Порт ввода–вывода – 8, 16 – разрядный регистр, имеющий определенный адрес в 64 кБт адресном пространстве ввода/вывода (см. рис.1.1). Взаимодействие прикладной программы с внешним устройством можно осуществлять с помощью «высокоуровневых» функций операционной системы или функций Базовой системы ввода/вывода BIOS (средний уровень), и непосредственно – прямым программированием портов, которое является единственным методом в случае применения нестандартных внешних устройств, или для достижения максимального быстродействия при обмене данными.

Для обращения к портам ввода/вывода в микропроцессоре предусмотрены специальные команды in и out:

in AL (AX), DX Ввод данных из порта с номером в DX в аккумулятор АХ(AL);
out DX, AL(AX) Вывод данных из аккумулятора АХ(AL) в порт с номером в DX;

Причем, регистр АХ – используется при 16–и разрядной, а АL – при 8–и разрядной передаче данных. Если номер порта не превосходит 255, его можно указывать непосредственно. Примеры:

out 61h, AL Вывод в порт 61h содержимого АL.
mov DX, 378h in AL,DX Запись номера порта 378h в DX; ввод данных в аккумулятор AL из порта с номером в DX.

Подключаемые внешние устройства, как правило, содержат несколько портов ввода/вывода, каждый из которых предназначен для выполнения определенных функций, например, для передачи данных (регистр данных), адреса (регистр адреса), управляющих сигналов (регистр управления), получения информации о готовности к обмену данными (регистр состояния) и т.д. При этом адресация портов, используемых данным устройством, ведется относительно некоторого базового адреса.

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; Просмотров: 832; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.035 сек.