Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Assembler_konspekt_1.doc
Скачиваний:
15
Добавлен:
10.11.2019
Размер:
274.94 Кб
Скачать

МИНИСТЕРСТВО ОБЩЕГО И ПРОФЕССИОНАЛЬНОГО

ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

_________________________

МОСКОВСКИЙ АВИАЦИОННЫЙ ИНСТИТУТ

(ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ)

_________________________

А.С.АЛЕЩЕНКО

ЯЗЫК АССЕМБЛЕРА IBM PC

Конспект лекций

Москва

2005

Место языков ассемблера среди языков программирования

Языки программирования – это языки, воспринимаемые и распознаваемые компьютером. Общая классификация языков программирования (ЯП) приведена на рис. 1.

Я зыки программирования

Алгоритмические языки Машинно-зависимые

(высокого уровня) языки

Универсальные Проблемно-ориен- ЯСК Машинные

тированные Языки ассемблера

Рис. 1.

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

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

Машинно-зависимые языки отличаются тем, что класс ЦВМ, на которых эти языки используются, существенно влияет не только на основные конструкции языков, но и на правила использования этих конструкций.

Машинные языки содержат подробные инструкции процессора (команды) в двоично-кодированном виде.

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

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

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

Рассмотрим язык ассемблера на примере IBM-совместимых персональных ЭВМ (ПЭВМ). К этому классу относятся ПЭВМ, построенные на базе микропроцессоров (МП) фирмы Intel ( 8086, i486, Pentium, Celeron, Atlon и т.п.).

Структура мп ix86 фирмы Intel

ПЭВМ семейства Intel можно представить как совокупность следующих программно-логических элементов МП:

  1. счетчик команд,

  2. рабочие регистры,

  3. регистр флагов,

  4. стек,

а также связанных с МП:

  1. память,

  2. система команд,

  3. система ввода/вывода,

  4. система прерываний.

Структура МП 8086 как родоначальника семейства приведена на рис.2, она включает в себя 4 группы 16-разрядных регистров, которые обслуживают функционирование операционного устройства (ОУ) и шинного интерфейса (ШИ).

ОУ выполняет команды и содержит: АЛУ – арифметико-логическое устройство, УУ – устройство управления и набор регистров. Эти устройства обеспечивают выполнение команд арифметических вычислений и логических операций.

ШИ подготавливает команды и данные для выполнения, содержит блок управления шиной, очередь команд и сегментные регистры; выполняет 3 основные задачи:

  1. управление передачей данных на ОУ, в память или на внешние устройства,

  2. сегментные регистры осуществляют управление адресацией памяти объемом 1Мбайт,

  3. выборка команд – все команды программы находятся в памяти, и ШИ имеет доступ к ним для выборки их в очередь команд. Очередь команд имеет размер не меньше 4 байт в зависимости от типа МП, поэтому ШИ должен выбирать команды из памяти так, чтобы всегда существовала непустая очередь команд, готовых для выполнения.

ОУ и ШИ работают параллельно, причем ШИ опережает на один шаг. ОУ сообщает ШИ о необходимости доступа к данным из памяти или к очередной команде. ШИ выбирает следующую команду из памяти, что повышает скорость обработки.

Рассмотрим подробнее группы регистров.

  1. Регистры общего назначения (регистры данных)

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

AX

Аккумулятор

AH, AL

BX

Базовый регистр

BH, BL

CX

Счетчик

CH, CL

DX

Регистр данных

DH, DL

Допускается обращение к частям этих регистров, т.е. старшему байту (вторая буква Н) и младшему байту (вторая буква L).

  1. Регистры-указатели

Группа содержит непосредственно указатели

SP – указатель стека,

BP – указатель базы

и индексные регистры

SI – индекс источника,

DI – индекс приемника.

О перационное устройство (ОУ) Шинный интерфейс (ШИ)

AH AL

Р егистры BH BL

д анных CH CL Регистры сегментов

DH DL CS

SP DS

Р егистры- BP SS

у казатели SI ES

DI

Управление

шиной I P

очередь

команд

АЛУ

УУ PSW

Рис.2

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]