Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
GOSY / 3 блок-все.doc
Скачиваний:
142
Добавлен:
09.05.2015
Размер:
577 Кб
Скачать
☆

54/ Принципы построения и архитектура пэвм. Информационно-логические основы эвм. Основы языка Ассемблер.

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

Основным принципом построения всех современных ЭВМ является программное управление. В основе его лежит представление алгоритма решения любой задачи в виде программы вычисления.

Алгоритм – конечный набор предписаний, определяющий решение задачи по средством конечного количества операций.

Программа (для ЭВМ) – упорядоченная последовательность команд подлежащей обработке

4.Принцип программного управления может быть осуществлён различными способами: стандартом для построения практически всех ЭВМ стал способом, описанный Фон-Нейманом в 1945г. построений ещё первых образцов ЭВМ. Суть его заключается в следующем:

принцип программного управления – компьютер работает по заранее заданной программе 2) принцип хранимой программы – в соответствии с ним в оперативной памяти находятся не только данные для обработки, но и сама программа. 3) принцип двоичного кодирования – в соответствии с ним для оптимальной работы ЭВМ необходимо использовать двоичные элементы 4) адресуемость памяти – в соответствии с ним память компьютера состоит из ячеек, каждая из которых имеет собственный адрес.

Программа может в любое время обратиться к любой ячейки памяти по ее адресу. Классическая архитектура ЭВМ была свойственна для машин 1 и 2 поколения. Появление 3 поколения обусловлено разработкой интегральных схем, миниатюризации элементов и созданы предпосылки для пересмотра архитектуры ЭВМ. Решением проблем по разгрузке процессора от лишних задач было появление дополнительных устройств (контроллеров), через которые подключались внешние устройства. Появилась шинная архитектура.

Согласно принципам фон Неймана, компьютер должен иметь следующие устройства (классическая архитектура): 1.Арифметическо-логическое устройство — для непосредственного осуществления вычислений и логических операций.(ум компьютера) 2.Устройство управления — для организации процесса управления программ.(организационные способности компа) 3.Запоминающее устройство — для хранения программ и информации.(память компа) 4.Внешние устройства — для ввода и вывода информации. (речь и мимика компа) Подавляющее большинство компьютеров в своих основных чертах соответствует принципам фон Неймана , но схема устройства современных компьютеров несколько отличается от классической схемы. В частности, арифметическо-логическое устройство и устройство управления, как правило, объединены в центральный процессор. Многие быстродействующие компьютеры осуществляют параллельную обработку данных на нескольких процессорах. Компьютерная информация хранится в электронном виде в различных запоминающих устройствах, которые называют компьютерной памятью. Для долговременного хранения информации используются постоянные носители компьютерной памяти, которые служат при вводе данных в компьютер и при выводе результатов его работы. Для хранения выполняемых в данный момент программ и промежуточных данных используется оперативная память компьютера, которая работает значительно быстрее постоянных носителей памяти.

Общим и наиболее важными параметром для всех компьютеров является быстродействие. Оно часто измеряется в единицах, которые называются ФЛОПС – количество арифметических операций в секунду. Первые ЭВМ имели быстродействие в несколько сотен ФЛОПС, современные суперЭВМ достигают скорости в несколько десятков ТераФЛОПС.

Сравнение по быстродействию различных типов ЭВМ, не обеспечивает достоверных оценок. Очень часто вместо характеристики быстродействия используют связанную с ней производительность. Производительность это объем работы, осуществляемой ЭВМ в единицу времени. Кроме технических показателей ЭВМ характеризуется эффективностью и надежностью при эксплуатации. Показатель эффективности определяется отношением производительности к стоимости изготовления и эксплуатации  ЭВМ.  Надежность это способность ЭВМ при определенных условиях выполнять требуемые  функции в течение заданного периода времени. Она определяется вероятностью безотказной работы ЭВМ в течении определенного периода времени. Высокая надежность ЭВМ закладывается в процессе ее производства.

Достоверность – свойство информации быть правильно воспринятой

Точность –возможность различать почти равные значения

Емкость запоминающих устройств – кол-во структурных единиц информации, которые может одновременно онаходиться впамяти

Функции программного обеспечения

Электронные вычислительные машины являются универсальными техническими средствами автоматизации вычислительных работ, т.е. они способны решать любые задачи, связанные с преобразованием информации. Однако подготовка задач к решению на ЭВМ была и остается до настоящего времени достаточно трудоемким процессом, требующим от пользователей во многих случаях специальных знаний и навыков.

Для снижения трудоемкости подготовки задач к решению, более эффективного использования отдельных технических, программных средств и ЭВМ в целом, а также облегчения их эксплуатации каждая ЭВМ имеет специаль-ньй комплекс программных средств регулярного применения. Эти средства обеспечивают взаимодействие пользователей с ЭВМ и являются своеобразным “посредником” между ними. Они получили название программного обеспечения (ПО) ЭВМ.

Под программным обеспечением будем понимать комплекс программных средств регулярного применения, предназначенный для подготовки и решения задач пользователей.

Программное обеспечение отдельных ЭВМ и ВС может сильно различаться составом используемых программ, который определяется классом используемой вычислительной техники, режимами ее применения, содержанием вычислительных работ пользователей и т.п. Развитие ПО современных ЭВМ и ВС в значительной степени носит эволюционный и эмпирический характер, но можно выделить закономерности в его построении.

Любое ЭВМ неимоновской архитектуры содержит следующие основные устройства:

1.Арифметическо-логическое устройство (АЛХ)

2.Устройство управления (УУ).

3.Заполняющее устройство (ЗУ).

4.Устройство ввода/вывода (УВВ).

5.Пульт управления (ПУ).

В современных ЭВМ АЛУ и УУ объединены в общее устройство и называются центральным процессором.

2.1.Процессор или микропроцессор является основным устройством ЭВМ он предназначен для выполнения вычислений по хранящейся в Запоминающем устройстве программы и обеспечения общего управления ЭВМ. Быстродействие ЭВМ в значительной мере определяется скорость работы процессора. Для её увеличения процессор использует собственную память небольшого объёма именуемую местной или сверхоперативной, что в некоторых случаях исключает необходимость обращения к запоминающему устройству ЭВМ. Вычислительный процесс должен быть предварительно представлен для ЭВМ в виде программы, последовательности инструкций (команд) записанных в порядке выполнения. ЭВМ выбирает определённую команду расшифровывает её, определяет какие действия и над какими операциями следует выполнить. Эту функцию осуществляет устройство управления, оно же помещает выбранные из ЗУ операнды в АЛУ, где они обрабатываются. Само АЛУ работает под управлением УУ.

2.2.Обрабатываемае данные и выполняемые программы должны находиться в ЗУ – памяти ЭВМ, куда вводятся ч/3 устройство ввода. Ёмкость памяти измеряется в величинах кратких байту. Память представляет собой сложную структуру, построенную по иерархическому принципу и включает в себя ЗУ различных типов, функционально она делится на 2 части: внутреннюю и внешнюю.

Внутренняя или основная память – это ЗУ напрямую связанная с процессором и предназначенная для хранения выполняемых программ и данных непосредственно участвующих вычислению. Обращение к внутренней памяти ЭВМ осуществляется с высоким быстродействием, но она имеет ограниченный объём определяемой системы адресации машин. В свою очередь делится на оперативную ОЗУ и постоянную ПЗУ память. Оперативная память по объёму составляющая большую часть внутренней памяти и служит для приёма хранения и выдачи информации. При включении питания ЭВМ содержимое оперативной памяти в большинстве случаев теряется. Постоянная память обеспечивает хранение и выдачу информации в отличии от содержимого оперативной памяти содержимое постоянной памяти заполняется при изготовлении ЭВМ и не может быть изменено в обычных условиях эксплуатации. В постоянной памяти хранятся часто используемые (универсальные) программы. Пример: некоторые программы операционной системы, программы тестирования оборудования ЭВМ и другие, при выключении ПК содержимое постоянной памяти сохраняется.

Внешняя память предназначена для размещения больших объёмов информации (диски и ленты), которые к тому же являются переносимыми. Ёмкость этой памяти практически не имеет ограничений, а для обращения к ней требуется больше времени, чем ко внутренней. В ЗУ конструктивно отделены от центральных устройств ЭВМ процессора и внутренней памяти имеют собственное управление и выполняет запросы процессора без его непосредственного вмешательства. В качестве ВЗУ используют накопители на магнитных и оптических дисках, а так же накопители на магнитных лентах. ВЗУ по принципам функционирования разделяются на устройство прямого доступа ( накопители на оптических и магнитных дисках) и устройство последовательно доступа (накопители на магнитных лентах). Устройство прямого доступа обладает большим быстродействием поэтому они являются основными внешними запоминающими устройствами постоянно используемыми в процессе функционирования ЭВМ. Устройство последовательного действия используется для резервирования информации.

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

Системный интерфейс – это конструктивная часть ЭВМ предназначенная для взаимодействия её устройств и обмена информации между ними. В больших средних и супер ЭВМ в качестве системного интерфейса используются сложные устройства имеющие встроенные процессоры ввода/вывода именуемые началами такие устройства обеспечивают высокую скорость обмена данными между компонентами ЭВМ является использованием в качестве системного интерфейса системных шин. Различают ЭВМ с многошинной структурой и с общей шиной

I-Во-первых для обмена информации между устройствами используются отдельные группы шин.

II-Во-втором случае все устройства ЭВМ объединяются с помощью одной группы шин в которую входят подмножества шин для передачи данных, адреса и управляющих сигналов, при такой организации системы шин обмен информации между процессором памятью и периферийными устройствами выполняется с по единому правилу, что упрощает взаимодействие устройств машин.

Информация в ЭВМ кодируется, как правило, в двоичной или в двоично-десятичной системе счисления.

Система счисления - это способ наименования и изображения чисел с помощью символов, имеющих определенные количественные значения.

В зависимости от способа изображения чисел системы счисления делятся на позиционные и непозиционные.

В позиционной системе счисления количественное значение каждой цифры зависит от ее места (позиции) в числе. В непозиционной системе счисления цифры не меняют своего количественного значения при изменении их расположения в числе. Количество (Р) различных цифр, используемых для изображения числа в позиционной системе счисления, называется основанием системы счисления. Значения цифр лежат в пределах от 0 до Р-1.

Пример 4.1. Позиционная система счисления - арабская десятичная система, в которой:основание P=10, для изображения чисел используются 10 цифр (от 0 до 9). Непозиционная система счисления - римская, в которой для каждого числа используется специфическое сочетание символов (XIV, CXXVII и т.п.).

Двоичная система счисления имеет основание Р=2 и использует для представления информации всего две цифры: 0 и 1. Существуют правила перевода чисел из одной системы счисления в другую, основанные в том числе и на соотношении (1).

Пример 4.2.

101110,101(2) =1*25+0*24+1*23+l*22+1*21+0*20+l*2-1+0*2-2+l*2-3=46,625(10) ,

т.е. двоичное число 101110,101 равно десятичному числу 46,625.

В вычислительных машинах применяются две формы представления двоичных чисел:

  • естественная форма или форма с фиксированной запятой (точкой);

  • нормальная форма или форма с плавающей запятой (точкой).

С фиксированной запятой все числа изображаются в виде последовательности цифр с постоянным для всех чисел положением запятой, отделяющей целую часть от дробной.

Пример 4.3. В десятичной системе счисления имеются 5 разрядов в целой части числа (до запятой) и 5 разрядов в дробной части числа (после запятой); числа, записанные в такую разрядную сетку, имеют вид:

+00721,35500; +00000,00328; -10301,20260.

Эта форма наиболее проста, естественна, но имеет небольшой диапазон представления чисел и поэтому не всегда приемлема при вычислениях.

Пример 4.4. Диапазон значащих чисел (N) в системе счисления с основанием Р при наличии m разрядов в целой части и s разрядов в дробной части числа (без учета знака числа) будет:

Р-s ≤ N ≤ Рm- P-s.

При Р=2, m=10 и s = 6: 0,015≤ N≤ 1024.

Если в результате операции получится число, выходящее за допустимый диапазон, происходит переполнение разрядной сетки, и дальнейшие вычисления теряют смысл. В современных ЭВМ естественная форма представления используется как вспомогательная и только для целых чисел.

С плавающей запятой каждое число изображается в виде двух групп цифр. Первая группа цифр называется мантиссой, вторая- порядком, причем абсолютная величина мантиссы должна быть меньше 1, а порядок - целым числом. В общем виде число в форме с плавающей запятой может быть представлено так:

N=±MP±r,

где М-мантисса числа (|М| < 1);

r- порядок числа (r- целое число);

Р- основание системы счисления.

Пример 4.5. Приведенные в примере 4.3 числа в нормальной форме запишутся так:

+0,721355*103; +0,328* 10-3; -0,103012026*105.

Нормальная форма представления имеет огромный диапазон отображения чисел и является основной в современных ЭВМ.

Знак числа обычно кодируется двоичной цифрой, при этом код0 означает знак "+", код 1 -знак "-".

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

При программировании иногда используется шестнадцатеричная система счисления, перевод чисел из которой в двоичную систему счисления весьма прост - выполняется поразрядно (полностью аналогично переводу из двоично-десятичной системы).

Для изображения цифр, больших 9, в шестнадцатеричной системе счисления применяются буквы А=10, В=11, С=12, D=13, Е=14, F=15.

Пример 4.8. Шестнадцатеричное число F17B в двоичной системе выглядит так:

1111000101111011.

Правила перевода целых чисел

Результатом перевода целого числа всегда является целое число.

Перевод из десятичной системы счисления в двоичную и шестнадцатеричную:

а) исходное целое число делится на основание системы счисления, в которую переводится (на 2 - при переводе в двоичную систему счисления или на 16 - при переводе в шестнадцатеричную); получается частное и остаток;

б) если полученное частное меньше основания системы счисления, в которую выполняется перевод, процесс деления прекращается, переходят к шагу в). Иначе над частным выполняют действия, описанные в шаге а);

в)  все полученные остатки и последнее частное преобразуются в соответствии с таблицей перевода в цифры той системы счисления, в которую выполняется перевод;

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

Правило перевода дробных чисел из десятичной системы в двоичную Для получения двоичного представления десятичного числа достаточно: 1. Если целая часть числа отлична от нуля, то ее перевести отдельно (по известному прави-лу). 2. Дробную часть числа умножить на 2. Целая часть полученного произведения является первой цифрой после запятой в искомом числе. 3. Дробную часть полученного произведения вновь умножить на 2. Целую часть получен-ного числа приписать справа к результату. 4. Выполнять пункт 3, пока дробная часть не станет равной нулю или не будет выделен пе-риод (то есть повторится ранее полученная дробная часть). Представление текстовой информации в ЭВМ

Любая информация в компьютере хранится в двоичном коде, следовательно, нужен способ кодировки, который бы преобразовывал знаки текста в двоичные коды. Такая система кодировки называется кодовой таблицей ЭВМ.

Для того, чтобы тексты переносились с одного компьютера на другой были установлены стандарты кодировок. Первоначально первый стандарт кодировки был 8-разрядным, 1 байт = 1 разряду, 256 знаков в таблице.

ASCII коды – американский стандарт. КОИ – российский стандарт.

Таблица ASCII коды содержит коды от 0 до 31 – управляющие коды, 32 – пробел. От 33 до 255 – видимые знаки: маленькие и большие буквы латинского алфавита, цифры десятичной системы 0 – 9, знаки препинания, математические операции. Выделяется место для национальной кодировки. Оставшиеся коды отданы для псевдографики и дополнительных знаков.

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

Представление графической информации в ЭВМ.

В графическом режиме экран поделен на точки – пиксели, точки так же располагаются вдоль строк и столбцов, но их гораздо больше, чем знакомест.

Количество пикселей по горизонтали и вертикали – это разрешение экрана. В настоящее время, это цифры порядка тысячи. Каждый пиксель может иметь свой цвет, в результате формируется мозаичное изображение, которое называется графическим.

Графическая информация хранится в ЭВМ в растровом или векторном виде.

Растровое изображение – изображение в виде мозаики.

Векторное изображение – сжатие графической информации, здесь существует векторный способ, контурный и фронтальный.

Для записи растрового рисунка нужно задать местоположение каждого пикселя и его цвет. Для экономии объема растровый рисунок задается в виде прямоугольника пикселей. Указываются координаты верхнего левого угла ширина и высота. Далее последовательно блок за блоком цвета пикселей.

True Color – формируется как набор трех цветов: красный, зеленый и синий – RGB-формат, 3 байта на цвет.

Простейший векторный формат представляет графическое изображение как набор отрезков прямых одного цвета, т.е. если у нас на одной прямой находятся хотя бы 4 пикселя, то для хранения такого отрезка достаточно знать направление, длину отрезка и один раз цвет. Следовательно, если цвет кодируется 3 байтами, то получаем выигрыш в сжатии информации. Ширина прямой – 1 пиксель.

Для коротких отрезков можно использовать отрезки по осям, в результате векторный формат позволяет сжать графическую информацию.

Для сжатия графической информации был придуман физиологический способ: JPEG. Оказывается, человеческий глаз сглаживает контраст цветов, если точки находятся близко друг от друга. В результате, если рядом расположены разноцветные пиксели, то человек, сглаживая цвета, видит некий средний цвет. Следовательно, нет необходимости хранить цвет каждого пикселя, а надо объединять такие пиксели в цветовые пятна и делать одного цвета.

Такое сжатие называется сжатием с потерей информации. На качество изображения это почти не влияет. Сжатие возможно от 10 до 20 раз в расширении *.jpg.

Представление видео и анимации в ЭВМ.

Такая информация требует покадрового показа. Эксперименты показали, что глаз не замечает мелькание кадров, если их частота не меньше 24 кадра в секунду. 1 мин, 25 кадров в сек.

Воспроизведение видео и анимации практически невозможно без сжатия информации. Для сжатия анимации придуман метод MPЕG-инженерный. Его суть: хранить не все кадры, а только изменение от кадра к кадру. Такая технология дает сжатие от 10 до 100 раз.

Хранение звуковой информации в ЭВМ.

Звук – это непрерывный сигнал, поэтому необходима оцифровка – преобразование в дискретный сигнал. Оцифровку можно производить двумя способами:

  1. расклад в спектр;

  2. производя дискретизацию по уровню сигнала.

Звуковой сигнал – это набор гармонических сигналов, которые выражаются в тригонометрической форме, поэтому звук выгодно представлять в виде дискретного преобразования Фурье.

Использование волновых таблиц дает возможность моделировать звук и аранжировать музыку.

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

Процессор занимает центральное место в структуре ЭВМ, так как он осуществляет управление взаимодействием всех устройств, входящих в состав ЭВМ.

Выполнение команды (машинной операции) разделено на более мелкие этапы — микрооперации (микрокоманды), во время которых выполняются определенные элементарные действия. Конкретный состав микроопераций определяется системой команд и логической структурой данной ЭЗМ. Последовательность микроопераций (микрокоманд), реализующих данную операцию (команду), образует микропрограмму операции.

Для определений временных соотношений между различными этапами операции используется понятие машинного такта. Машинный такт определяет интервал времени, в течение которого выполняется одна или одновременно несколько микроопераций. Границы тактов задаются синхросигналами, вырабатываемыми специальной схемой — генератором синхросигналов.

Таким образом, может быть установлена следующая иерархия этапов выполнения программ в процессоре: программа, команда (микропрограмма), микрооперация (микрокоманда).

В процессор входят: арифметическо - логическое устройство АЛУ, управляющее устройство (управляющий автомат) УУ, блок управляющих регистров БУР, блок регистровой памяти (местная память) и блок связи с ОП и некоторым другим, в том числе внешним по отношению к ЭВМ, оборудованием.

В состав процессора могут также входить и некоторые другие блоки, участвующие в организации вычислительного процесса (блок прерывания, блок защиты памяти, блок контроля правильности работы и диагностики процессора и др.). Оперативная (основная) память выполняется в виде отдельного устройства, хотя в небольших ЭВМ может конструктивно объединяться с процессором и использовать частично его оборудование.

Арифметическо-логическое устройство процессора выполняет логические и арифметические операции над данными. В общем случае в АЛУ выполняются логические преобразования над логическими кодами фиксированной и переменной длины (над отдельными битами, группами бит, байтами и их последовательностями) , арифметические операции над числами с фиксированной и плавающей точками, над десятичными числами, обработка алфавитно-цифровых слов переменной длины и др. Характер выполняемой АЛУ операции задается командой программы.

В процессоре может быть одно универсальное АЛУ для выполнения всех основных арифметических и логических преобразований или несколько специализированных для отдельных видов операций. В последнем случае увеличивается количество оборудования процессора, но повышается его быстродействие за счет специализации и упрощения схем выполнения отдельных операций.

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

Блок управляющих регистров предназначен для временного хранения управляющей информации. Он содержит регистры и счетчики, участвующие в управлении вычислительным процессом: регистры, хранящие информацию о состоянии процессора, регистр-счетчик адреса команды — счетчик команд (СчК), счетчики тактов, регистр запросов прерывания и др. К блоку управляющих регистров следует также отнести управляющие триггеры, фиксирующие режимы работы процессора.

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

Местная память выполняется главным образом на быстродействующих полупроводниковых интегральных ЗУ.

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

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

Фактически, ассемблерная программа наполовину состоит из команд пересылки данных.

Все эти действия происходят на арене, называемой адресным пространством. Адресное пространство - это просто совокупность ячеек виртуальной памяти, доступной процессору. Операционные системы типа Windows 9x и большинство UNIX'ов создают для каждого приложения свой независимый 4 Гбайтный регион, в котором можно выделить, по меньшей мере, три области: область кода, область данных и стек.

Стек - это такой способ хранения данных. Что-то среднее между списком и массивом Направление роста стека: от больших адресов - к меньшим. Еще говорят, что стек растет снизу вверх.

Регистр EIP содержит указатель на следующую выполняемую команду и непосредственно недоступен для модификации. Регистры EAX, EBX, ECX, EDX, ESI, EDI, EBP называются регистрами общего назначения и могут свободно участвовать в любых математических операциях или операциях обращения к памяти. Их всего семь. Семь 32-разрядных регистров. Четыре первых из них (EAX, EBX, ECX и EDX) допускают обращения к своим 16-разрядным половинкам, хранящим младшее слово - AX, BX, CX и DX. Каждый из них, в свою очередь, делится на старший и младший байты - AH/AL, BH/BL, CH/CL и DH/DL. Важно понять, что AL, AX и EAX - это не три разных регистра, а разные части одного и того же регистра!

Существуют также и другие регистры - сегментные, мультимедийные, регистры математического сопроцессора, отладочные регистры... Без хорошего справочника в них легко запутаться и утонуть, однако на первых порах мы их касаться не будем.

Основной ассемблерной командой является команда пересылки данных MOV, которую можно уподобить оператору присвоения.

"c = 0x333" на языке ассемблера записывается так: MOV EAX, 333h (обратите внимание на разницу записи шестнадцатеричных чисел!). Можно также записать MOV EAX, EBX (записать в регистр EAX значение регистра EBX).

Указатели заключаются в квадратные скобки. Сишное a = *b на ассемблере записывается так: MOV EAX, [EBX]. При желании, к указателю можно добавить смещение: a = b[0x66] эквивалентно: MOV EAX, [EBX + 0x66].

. Команда CMP позволяет сравнить два числа, сохраняя результат своей работы во флагах. Флаги - это биты специального регистра, описание которого заняло бы слишком много места и поэтому здесь не рассматривается. Достаточно запомнить три основных состояния: меньше (bellow или less), больше (above или great) и равно (equal).

Синтаксис

Синтаксис языка ассемблера определяется системой команд конкретного процессора.

Набор команд

Типичными командами языка ассемблера являются (большинство примеров даны для архитектуры x86):

  1. Команды пересылания данных (mov, lea и т. д.)

  2. Арифметичекие команды (add, sub, imul и т. д.)

  3. Логические и побитовые операции (or, and, xor, shr и т. д.)

  4. Команды управления ходом выполнения программы (jmp, loop, ret и т. д.)

  5. Команды вызова программных прерываний (иногда относят к командам управления): int, into

  6. Команды ввода/вывода в порт (in, out)

  7. Для микроконтроллеров и микроЭВМ характерны также команды, выполняющие проверку и переход по условию, например:

cbne — перейти, если не равно

dbnz — декрементировать, и если результат ненулевой, то перейти

cfsneq — сравнить, и если не равно, пропустить следующую команду

Инструкции

Типичный формат записи команд:

[метка:] опкод [операнды] [;комментарий]

где опкод (код операции) — непосредственно мнемоника инструкции процессору. К ней могут быть добавлены префиксы (повторения, изменения типа адресации и пр.).

В качестве операндов могут выступать константы, адреса регистров, адреса в оперативной памяти и пр.. Различия между стандартами Intel и AT&T касаются, в основном, порядка перечисления операндов и их синтаксиса при различных методах адресации.

Используемые мнемоники обычно одинаковы для всех процессоров одной архитектуры или семейства архитектур (среди широко известных — мнемоники процессоров и контроллеров Motorola, ARM, x86). Они описываются в спецификации процессоров. Возможные исключения:

  • Если ассемблер использует кроссплатформенный AT&T-синтаксис (оригинальные мнемоники приводятся к синтаксису AT&T)

  • Если изначально существовало два стандарта записи мнемоник (система команд была наследована от процессора другого производителя).

Например, процессор Zilog Z80 наследовал систему команд Intel i8080, расширил ее и поменял мнемоники (и обозначения регистров) на свой лад. Процессоры Motorola Fireball наследовали систему команд Z80, несколько её урезав. Вместе с тем, Motorola официально вернулась к мнемоникам Intel. И в данный момент половина ассемблеров для Fireball работает с интеловскими мнемониками, а половина с мнемониками Zilog.

Директивы

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

  • определение данных (констант и переменных)

  • управление организацией программы в памяти и параметрами выходного файла

  • задание режима работы компилятора

  • всевозможные абстракции (то есть элементы языков высокого уровня) — от оформления процедур и функций (для упрощения реализации парадигмы процедурного программирования) до условных конструкций и циклов (для парадигмы структурного программирования)

  • макросы

Пример программы

Пример программы Hello world для MS-DOS для архитектуры x86 на диалекте TASM:

.MODEL TINY

CODE SEGMENT

ASSUME CS:CODE, DS:CODE

ORG 100h

START:

mov ah,9

mov dx,OFFSET Msg

int 21h

int 20h

Msg DB 'Hello World',13,10,'$'

CODE ENDS

END START

Соседние файлы в папке GOSY