Автор работы: Пользователь скрыл имя, 11 Января 2011 в 19:34, лекция
Язык ассемблера - это один из самых старых из всех существующих языков программирования. Когда-то это был один из основных языков программирования, без знания которого нельзя было заставить компьютер сделать что-либо полезное. Появились более удобные средства общения с компьютером. Но в отличии от других языков ассемблер не умирал, более того он это не смог сделать в принципе.
Лекция (1,2,3). Введение. Цели и задачи дисциплины. Программная модель микропроцессора INTEL 8080, регистры, форматы и системы команд, методы адресации
Язык ассемблера - это один из самых старых из всех существующих языков программирования. Когда-то это был один из основных языков программирования, без знания которого нельзя было заставить компьютер сделать что-либо полезное. Появились более удобные средства общения с компьютером. Но в отличии от других языков ассемблер не умирал, более того он это не смог сделать в принципе.
Таким образом язык ассемблера - это символическое представление машинного языка. Все процессы в машине на самом низком, аппаратном уровне приводятся в действие только командами(инструкциями) машинного языка. Несмотря на общее название язык ассемблера для каждого типа компьютера свой. Это касается и внешнего вида программ и идей, отражением которых этот язык является. Но решать проблемы связанные с аппаратурой невозможно без знания ассемблера. Программист или любой другой пользователь может использовать любые высокоуровневые средства, вплоть до построения виртуальных миров, и возможно даже не подозревать, что на самом деле компьютер выполняет команды языка, на котором написана программа, а их трансформация представление в форме скучной и унылой последовательности совсем другого языка - машинного. Поэтому не случайно все языки имеют средства связи с языком ассемблера, т.к. решить аппаратные проблемы невозможно без знания языка.
Поэтому изучение языка ассемблер - мы начнем с изучения архитектуры ЭВМ. Это понятие характеризует ЭВМ с точки зрения его функциональных программно-управляемых свойств. Выясним какая часть ЭВМ является видимой и доступной для программирования на этом языке. На языках высокого уровня этого знать не обязательно.
Архитектура ЭВМ - это абстрактное представление ЭВМ, которое отражает ее структурную, схематичную и логическую организацию. Это понятие включает в себя следующее:
Любая выполняющаяся программа получает в свое распоряжение определенный набор ресурсов микропроцессора. Эти ресурсы необходимы для выполнения и хранения в памяти команд программы, данных и информации о текущем состоянии программы и микропроцессора. Набор этих ресурсов представляет собой программную модель микропроцессора, которая представлена на схеме.
Программные модели более ранних микропроцессоров (I486, Pentium) отличаются меньшим размером адресуемого пространства оперативной памяти (2 32 -1), т.к разрядность их шины составляет 32 бита и отсутствием некоторых регистров. На данной схеме в скобках обозначено, начиная с какой модели данная группа регистров появилась в программной модели микропроцессоров Intel. Если обозначения не, то данная группа регистров присутствовала в более ранних моделях (i386).
Регистры - это память микропроцессоров. Программную модель микропроцессора Intel составляют:
Регистры общего назначения.
Данный тип регистров используется для хранения.
И состоят из четырех регистров данных и четырех регистров индексов и указателей., еах (ax/ah/al) -аккумулятор. Применяется для хранения промежуточных данных. В некоторых командах использование данного регистра обязательно, иногда использование его неявно, ebx (bx/bh/bl) - базовый регистр. Используется для хранения базового адреса некоторого объекта в памяти.
есх (cx/ch/cl) - регистр-счетчик. Применяется в командах, производящих некоторые повторяющиеся действия. Например в команде организации цикла. edx(dx/dh/dl) - регистр данных. Используется для хранения данных. Регистры указателей и индексов. Их 4 штуки.
esi (si) - индекс источника. Этот регистр используется в цепочных операциях содержит текущий адрес элемента в цепочке-источнике.
edi(di) -индекс приемника(получателя). Этот регистр в цепочных операциях содержит текущий адрес в цепочке- приемнике.
В архитектуре микропроцессора на программно-аппаратном уровне поддерживается такая структура данных, как стек. В дальнейшим мы подробнее рассмотрим эту область памяти и работу с ней.
Для работы со стеком используются следующие регистры.
esp (sp) - регистр указателя стека. Содержит указатель на вершину стека в текущем сегменте стека.
ebp(bp) - регистр указателя базы кадра стека. Предназначен для организации произвольного доступа к данным внутри стека
Сегментные регистры
МП аппаратно поддерживает структурную организацию программы в виде трех частей, называемых сегментами Такая организация памяти называется сегментной. Их существование обусловлено спецификой организации и использования оперативной памяти МП Intel. МП аппаратно поддерживает две модели использования оперативной памяти, где оперативная память ( или оперативное запоминающее устройство) - это физическая память, к которой МП имеет доступ по шине адреса.
Таким образом, Сегментация — это механизм адресации, обеспечивающий существование нескольких независимых адресных пространств, как в пределах одной задачи, так и в системе в целом для защиты задач от взаимного влияния. В основе механизма сегментации лежит понятие сегмент, который представляет собой независимый поддерживаемый на аппаратном уровне блок памяти.
Каждая программа может состоять из любого количества сегментов (в зависимости от организации модели памяти), но реально имеется доступ к трем основным сегментам памяти сегмент кода, сегмент данных, сегмент стека. Программа никогда не знает, по каким физическим адресам размещены ее сегменты. Этим занимается ОС. ОС размещает сегменты программы по определенным физическим адресам, после чего помещает значения этих адресов в определенные места. Куда именно поместит сегменты программы ОС зависит от работы МП. Так, в реальном режиме эти адреса помещаются непосредственно в соответствующие сегментные регистры, а в защищенном режиме они размещаются в элементы специальной системной дескрипторной таблице. Внутри сегмента программа обращается к адресам относительно начала сегмента линейно, т.е. начиная с 0 и заканчивая адресом, равным размеру сегмента. Это относительный адрес или смещение, который МП использует для доступа к данным внутри сегмента, называется эффективным. Различают три основных модели сегментированной организации памяти.
Рассмотрим порядок формирования физического адреса в реальном режиме.
Физический
адрес — это адрес памяти, выдаваемый
на шину адреса микропроцессора. Другое
название физического адреса - линейный
адрес.
Сегментированная модель памяти реального режима.
В реальном режиме механизм адресации физической памяти имеет следующие характеристики:
физический адрес= смещение+24*(регистр сегмента)
таким образом мы получаем доступ к 1 Мбайту памяти. Получение адреса путем сложения происходит на аппаратном уровне и опять же прозрачно для программного обеспечения. Получение смещения зависит от способа адресации, используемой в команде. Недостатками такой организации памяти являются:
Для устранения этих недостатков и было введено сегментирование памяти в защищенном
режиме.
Мы
рассмотрели понятие
используются
для доступа к
регистров: cs, ss, ds, es, gs, fs.
Регистры состояния и управления
В МП включены несколько регистров, которые содержат информацию о состоянии как самого МП, так и программы, команды которой в данный момент загружены на конвейер.