Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


МАШИННО-ОРИЕНТИРОВАННЫЕ ЯЗЫКИ



(микропроцессор 8088)

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

Для студентов специальности ЭВМ зс-2010

Иркутск 2010 г


Оглавление

Введение Предмет и задачи курса. Архитектура МП 8086. 3

Архитектура МП 8086. 3

ЛЕКЦИЯ №1 Язык Ассемблера МП 8080. Основные операторы. 8

Структура оператора. 9

Директивы определения данных. 10

ЛЕКЦИЯ №2 Система команд МП 8086. 11

Способы адресации операндов. 12

Команды передачи данных. 12

ЛЕКЦИЯ №3 Команды двоичной арифметики. 15

Арифметические команды языка ассемблера. 15

Команды преобразования данных. 18

ЛЕКЦИЯ №4 Программирование разветвлений. 18

Команда сравнения двоичных целых чисел. 18

Команды передачи управления. 18

Команды условного перехода. 19

Управление циклом.. 21

Лекция №5 Работа с массивами. 22

Основные понятия. Массив. Элемент массива. 22

Примеры составления программ работы с массивами. 23

Лекция № 6 Прерывания. 26

Векторы прерываний. 26

Контроллер 8259 фирмы Intel 26

Прерывание DOS int 21h: 28

 


Введение Предмет и задачи курса. Архитектура МП 8086

 

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

Машинно-ориентированное программирование появилось одновременно с созданием электронных вычислительных машин. Сначала это были программы в машинных командах. Таким образом, внешне являясь полиглотом, компьютер понимает только один язык — язык машинных команд. Конечно, для общения и работы с компьютером, необязательно знать этот язык, но практически любой профессиональный программист рано или поздно сталкивается с необходимостью его изучения.

Еще в 50-е годы программисты стали использовать для программирования символический аналог машинного языка, который назвали языком ассемблера. Язык ассемблера является первой ступенью в автоматизации процесса программирования. Этот язык точно отражает все особенности машинного языка. Именно поэтому, в отличие от языков высокого уровня, язык ассемблера для каждого типа компьютера свой.

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

В данном курсе будет рассматриваться язык Ассемблера персональных ЭВМ IBM PC Intel процессора 8086, это базовый язык всех моделей, начиная с 8088 и к старшим моделям процессоров данного семейства (286 ® 386 ® 486® Pentium), так как программы совместимы от младших моделей к старшим.

Архитектура МП 8086

Принципиально все современные компьютеры базируются на архитектуре фон Неймана - совместное хранение данных и программы. Она включает в себя три основные составляющие: центральный процессор (ЦП, CPU- Cetnral Processing Unit), оперативное запоминающее устройство (ОЗУ) и внешние запоминающие устройства (ВЗУ). У семейства IBM PC ЦП и ОЗУ размещаются на материнской плате. На этой плате есть соответствующие разъемы, к которым может быть подсоединено огромное количество разнообразных ВЗУ: клавиатура, дисплей, дисководы, принтер, модем и прочие.

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

Для разработки эффективных программ языки программирования должны учитываться особенности аппаратуры вычислительного комплекса, возможность оперировать такими объектами, как биты, байты, слова, строки, сегменты, смещения, содержимое регистров, символы, целочисленные данные разной длины со знаком и без знака. Ниже приведена схема взаимодействия основных блоков процессора 8086.

 

Рис.1 Архитектура МП

Использованы обозначения:

ЦП – центральный процессор;

АЛУ – арифметико-логическое устройство;

УУ – устройство управления;

ОЗУ – оперативно запоминающее устройство:

Ув/в – устройство ввода-вывода.

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

Оперативная память физически выполнена в виде микросхем и предназначена для временного хранения программ и данных.ОЗУ можно представить в виде ячеек( байтов), каждая из которых имеет свой номер. Максимальный объем оперативной памяти МП 8086- 1 Мб.

Линейный или физический адрес любого байта памяти - это его порядковый номер от начала памяти, то есть, целое число в интервале от 0 до 220-1 или в 16-ричной системе 00000-FFFFF. Откуда следует, что разрядность адресной шины должна быть 20 битов или 20 двоичных разрядов. Управляющая шина служит для передачи сигналов из УУ в периферийные устройства.

В архитектуру процессора i8086/i8088 была заложена идея сегментной организации памяти, которая сохранилась с появлением новых семейств процессоров. Оперативная память процессора 8086 разбита на сегменты. Размер сегмента не более 64 килобайт или 65536 байт. Для удобства адресации оперативной памяти используется относительная адресация, из двух частей: адрес начала сегмента, где находится байт, и смещение ( расстояние) байта от начала сегмента. Минимальное смещение равно 0, это первый байт сегмента. Максимальное смещение равно 65535=216-1 для последнего байта сегмента или FFFFh

 

В центральном процессоре доступны программисту следующие регистры:

1. РОН - р егистры о бщего н азначения

2. Сегментные регистры;

3. Счетчик команд IP (instruction pointer)

4. Индексные регистры;

5. Регистр флагов.

Регистры общего назначения

Четыре регистра общего назначения (или общих регистров) процессора 8086 (каждый размером 16 бит ) используются в операциях большинства инструкций в качестве источника или приемника при перемещении данных и вычислениях, указателей на ячейки памяти и счетчиков. Каждый регистр общего назначения может использоваться для хранения 16-битового значения в арифметических и логических операциях, может выполняться обмен между регистром и памятью (запись из регистра в память и наоборот). Допускается интерпретация регистра в виде двух 8-битовых регистров High (старший и Low (младший ).

 

 

High Биты Low
Регистр AX
AH AL
Регистр BX
BH BL
Регистр CX
CH CL
Регистр DX
DH DL

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

AX - cумматор (accumulator). Является основным регистром при выполнении всех арифметических и логических команд. Команды операций с сумматором работают эффективней подобных команд с другими регистрами. Они короче по длине и исполняются быстрее. Регистр AX используется во всехкомандах ввода и вывода.Команды умножения и деления используют обязательно только регистр AX в случае 16-разрядных операндов; или AL для 8-разрядных.

ВХ – регистр базы (Base Register). Регистр ВХ может использоваться как арифметический регистр, а так же для указания адреса операнда, который хранится в ОЗУ (адрес операнда указывается [BX], т.е. имеет место косвенная адресация операнда); Регистр ВХ хранит смещение операнда. Он используется для передачи адресов параметров в процедуры.

 

СХ – регистр- счётчик (Count Register). Регистр СХ используется: как любой арифметический регистр; как счётчик циклов; как счётчик сдвигов.– Сl.

 

DX–регистр данных (Data Register): Специфическое применение в операциях умножения и деления 16-разрядных операндов. Перед выполнением операции умножения в регистре АХ должно быть 16-разрядное множимое. При выполнении умножения на 16-разрядный множитель получается 32-разрядное произведение. Старшие 16 разрядов произведения заносятся в регистр DX, младшие разряды - в регистр АХ. Перед выполнением операции деления делимое должно быть записано в виде 32- разрядного кода в пару регистров DX и AX. В результате деления нацело на 16-разрядный делитель 16- разрядный остаток от деления помещается в регистр DX, . частное попадает в регистр AX.

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

Регистр DX - это единственный регистр, которые может использоваться в качестве указателя адреса ввода-вывода в инструкциях IN и OUT

Сегментные регистры

В процессоре имеется четыре сегментных регистра CS, DS, ES, SS. Они служат для указания начала соответствующего сегмента.

 

1. Регистр CS (Code Segment) содержит адрес начала текущего сегмента кода, где располагаются команды или коды программы.

2. SS ( Stack Segment) - содержит адрес начала сегмента стека. Регистр SS инициализируется операционной системой автоматически

3. DS ( Dat a Segment) –содержит адрес текущего сегмента данных. Вообще в программе может быть несколько сегментов данных.

4. ES ( Extra Segment) – регистр дополнительного сегмента данных.


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-04-11; Просмотров: 618; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.024 с.)
Главная | Случайная страница | Обратная связь