Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод указан АРХИТЕКТУРА ЭВМ Майстренко .doc
Скачиваний:
3
Добавлен:
01.04.2025
Размер:
3.38 Mб
Скачать

Контрольные вопросы

  1. Состав интерфейсной и операционной части МП.

  2. Состав и назначение УУ.

  3. Назначение компонентов УУ

  4. Функции выполняемые УУ.

  5. Состав МПП.

  6. Назначение и состав универсальных регистров.

  7. Назначение и состав сегментных и регистров и регистров смещений.

  8. Назначение и состав регистров флагов.

  9. Функции, выполняемые схемой управления шиной и портами.

Раздел 6 основы программирования процессора

Тема 6.1 Элементы программирования на языке ассемблер

Студент должен

знать:

- для чего необходимо знание основ программирования на

машинно- ориентированных язы­ках;

- основные компоненты языка ассемблер.

Что дает знание основ программирования на машинно-ориентированных

язы­ках. Основные компоненты языка ассемблер: алфавит языка, константы,

команды, директивы, модификаторы.

Программы составляются, как правило, на машинно-независимом алгоритми­ческом языке высокого уровня (Вasic, Раscal, FORTRAN, С, РROLOG и т. д.). Представление об основах программирования на машинно-ориентированных язы­ках полезно для:

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

компьютеров; для разработки более рациональных структур алгоритмов и программ

решения прикладных задач;

- возможности просмотра и корректировки исполняемых программ с расшире­ниями

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

исходных программ (вызвав указанные программы и отладчик про­грамм DEBUG и

декомпилировав их, можно получить их отображение на языке ассемблера);

- составления программ решения наиболее ответственных задач (программа,

со­ставленная на машинно-ориентированном языке, обычно эффективнее программ,

полученных в результате трансля­ции с языков высокого уровня) и для реализации

процедур, включаемых в ос­новную программу в виде отдельных фрагментов в том

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

уровня, ни с использо­ванием служебных процедур операционной системы.

Основные компоненты языка ассемблер.

Алфавит языка составляют символы АSCII:

- буквы от А до Z (или от а до z, строчные и прописные буквы в ассемблере не

различаются);

- цифры от 0 до 9;

- специальные символы : @ , $ , ? , . , _ , - , + , * , ' , " , ; , : и т. д.

Из букв, цифр и символов: @ , $ , ? , . , _ формируются:

- простые сообщения: имена (идентификаторы) процедур (подпрограмм), пере­менных,

директив, команд (метки), значения констант и переменных;

- составные сообщения: команды (операторы);

- директивы (псевдооператоры), модификаторы (операции) и т. д.

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

Константы (числа (только целые) и строки):

- двоичные числа; заканчиваются буквой В;

- десятичные числа; без специального окончания или заканчиваются бук­вой D;

- шестнадцатеричные числа; заканчиваются буквой Н.

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

Запись отрицательных чисел:

- десятичные числа записываются обычным образом, просто со знаком: -32, -32D;

- двоичные числа записываются только в дополнительном модифицированном

коде: -32D → 11.100000В, -19D → 11.01101В;

- шестнадцатеричные числа записываются только в дополнительном коде: -32D записывается как 1.ЕОН, -119D записывается как 1.89Н.

Строки (литералы): включают любые буквы, цифры и символы, но заключаются в кавычки: "ПЭВМ IВМ РС с микропроцессором 80386".

Команды (операторы):

формат команды:

[Метка [:]] КОП [Операнд] [.Операнд] [:Комментарий].

Между элементами команды вставлены пробелы. Здесь и далее элементы, заключенные в квадратные скобки, необязательны.

КОП (Код Оператора) — мнемокод команды (состоит из 2-6 букв). Может быть до 256 различных кодов (в ассемблере IВМ РС их число изменяется в зависимо­сти от типа МП. Например: 133 в МП 8088, 240 в МП 80386).

Операнд — явно заданный адрес (прямой или косвенный); имя метки, перемен­ной; само значение переменной; ассоциативный признак и т. п. Количество необ­ходимых и команде операндов ассемблер узнает по КОП. В большинстве двухад­ресных команд присутствуют операнды приемник ( dst— destination) и источник (src —sourse); источник не изменяет своего содержания, в приемнике 1-е число, участвующее в операции, заменяется результатом.

Метка — имя команды ассемблера для ссылки (обращения) к этой команде (до 31 символа). Двоеточие, стоящее после метки, означает, что метка всегда находится в текущем сегменте памяти.

Комментарий — любой текст, поясняющий человеку программу (не воспринима­ется ассемблером, но выводится в листинге).

Директивы (псевдооператоры)

Директивы в отличие от команд выполняются только в процессе ассемблирова­ния (трансляции) программы, а не в процессе решения задачи на компьютере. То есть команды — это инструкции машине, а директивы — это инструкции ассем­блеру (транслятору).

Формат директивы:

[Идентификатор] КПОП [Операнд] [.Операнд]... [;Комментарий]

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

Идентификатор — имя директивы (для обращения к ней).

КПОП (Код ПсевдоОПератора) — мнемокод директивы (состоит из 2-7 букв). Операнды — их в директиве может быть много; это уже не только адреса, но и различные процедуры. В операндах могут быть записаны простые выражения, исполь­зующие модификаторы (операции).

Модификаторы

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

- арифметические модификаторы: + — сложить, - — вычесть, * — умножить, / —

разделить, mod — остаток от деления и т. д. Формат: оpr mdf opr.

- логические модификаторы: and — «и», оr — «или», not — «не» и xor - исключа­ющее

«или». Формат: орr mdf орг.

- модификаторы отношения: еq — совпадения, nq — несовпадения, lt — меньше, qt

больше, le — меньше или равно, qе — больше или равно. Формат: оpr mdf opr.

- модификаторы, возвращающие значения:

- $ — возвращает значение смещения адреса текущего оператора;

- seg — возвращает адрес сегмента адреса метки или переменной;

- offset — возвращает смещение адреса метки или переменной;

- lenqth — возвращает длину операнда в единицах определения (байтах или словах);

- tуре — возвращает атрибут типа переменной (1, если byte; 2 — word, 3 — dword)

или и метки (1 — nеаг, 3 — far);

- size — возвращает произведение lenqth*type. Формат: mdf opr.

- модификаторы присваивания атрибута:

- рtг — изменяет атрибут типа (bytе, word или dword) операнда или атрибут

дистанции (nеаг или fаг) адресного операнда. Формат: тип рtr орг. (здесь: тип

новый атрибут, орг — идентификатор операнда, чей атрибут должен быть изменен);

- ds:, es:, сs:, ss: — изменяет атрибут сегмента адреса. Формат: rsegm : адрес, (адрес

может быть задан именем сегмента, переменной, меткой или адрес­ным

выражением);

- short — дополняет атрибут near метки оператора перехода, указывает, что переход

осуществляется на расстояние не более ±128 байт от текущей ко­манды. Формат:

short метка;

- high — возвращает старший байт 16-битового значения орr. Формат: high орr;

- low — возвращает младший байт 16-битового значения орr. Формат: low орr.

В программах используются:

- атрибуты дистанции:

- near — близкий, в пределах одного сегмента;

- far — далекий, за пределами одного сегмента;

- атрибуты типа данных:

- bуte — длиной 1 байт;

- word — длиной 2 байт;

- dword — длиной 4 байт.