Адресация регистров и ячеек памяти в ПК


affekti-ih-psihologicheskaya-harakteristika-affektivnie-sledi-problema-detekcii-lzhi.html
affiksalnoe-slovoproizvodstvo.html

Адресация операндов в командах программы может быть:

l непосредственной;

l прямой;

l косвенной;

l ассоциативной;

l неявной.

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

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

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

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

Неявная адресация — адреса операнда в команде не указано, но он подразумевается кодом операции.

Адресация ячеек основной памяти ПК имеет две важных разновидности: относительную и стековую.

Относительная адресация

Абсолютный (Aинд) адрес формируется как сумма адресов исполнительного (Aисп) и сегментного (Aсегм):

Aабс = Aсегм + Aисп.

Aсегм — 20-битовый начальный адрес сегмента, который является увеличенным в 16 раз (сдвинутым на 4 бита влево) 16-битовым адресом сегмента A'сегм, хранящемся в одном из 16-битовых сегментных регистров. Начальный адрес сегмента в таком варианте всегда кратен 16 байтам, и он может быть полностью идентифицирован значением A'сегм (сегмент всегда состоит из целого числа параграфов, а параграф равен 16, то есть:

Aсегм = 16 · A'сегм = A'сегм0000.

16-битовый исполнительный адрес может в ПК представлять собой сумму 3-х адресов:

Aисп = Aсмещ[+Aбаз][+Aинд]

l Aсмещ — 16-битовый адрес смещения относительно начала сегмента (или относительно базы, если есть Aбаз);

l Aбаз — 16-битовый адрес смещения базы адреса операнда относительно начала сегмента;

l Aинд — адрес индекса (или просто индекс) — дополнительная составляющая адреса операнда, использующаяся часто при программировании циклических процессов с массивами и таблицами. Индекс должен быть непосредственно задан в соответствующем регистре МПП.

При адресации данных могут использоваться все составляющие адреса:

Aабс данных = Aсегм + Aисп = Aсегм + Aсмещ[+Aбаз][+Aинд]

Aсегм = 16 A'сегм, A'сегм берется из регистра DS по умолчанию или из регистра ES, если это указано в программе. Aбаз и Aинд берутся, соответственно, из регистров BX и индексных (SI или DI), а Aсмещ в явном или неявном виде указываются в программе.

При адресации команд программы могут использоваться только две составляющие адреса:

Aабс команд = Aсегм + Aисп = Aсегм + Aсмещ

A'сегм берется из регистра CS, а Aсмещ — из регистра IP.

Стековая адресация

В стековой памяти (стеке) доступ к ячейкам памяти не произвольный, а по принципу «последний записанный операнд первым считывается» (FILO).



Aабс стека = Aсегм + [Aбаз] + Aсмещ

16-битовый адрес сегмента A'сегм берется из регистра SS, смещения относительно начала сегмента стека автоматически считываются из регистров BP (смещение базы стека — Aбаз) и SP (смещение активной ячейки стека, в которую записывается или из которой считывается информация, — «вершины стека» относительно базы — Aсмещ).

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

Вопросы для самопроверки

1. Сформулируйте основные свойства алгоритма.

2. Рассмотрите способы записи алгоритма.

3. Приведите и поясните типовой состав машинных команд.

4. Рассмотрите возможные структуры машинных команд.

5. Поясните назначение системного и прикладного программного обеспечения.

6. Назовите основные режимы работы компьютеров и дайте им краткую характеристику.

7. Что такое прерывания работы программы и каково их назначение?

8. Назовите и поясните виды прерываний.

9. Рассмотрите последовательность действий машины при выполнении прерывания.

10. Назовите виды и особенности адресации ячеек памяти в ПК.

11. Напишите формулу для расчета абсолютного адреса данных.

12. Какие регистры микропроцессорной памяти используются для адресации данных?

13. Напишите формулу для расчета абсолютного адреса команды программы.

14. Какие регистры микропроцессорной памяти используются для адресации команд программы?

15. Напишите формулу для расчета адреса стека.

16. Какие регистры микропроцессорной памяти используются для адресации ячеек стековой памяти?


Глава 19.Элементы программирования на языке Ассемблер

После изучения главы студент должен знать:

· -назначение и области использования языка Ассемблера;

· -основные компоненты языка;

· -основные команды, директивы, модификаторы;

· -адресацию регистров МПП и ячеек памяти в ассемблере;

· -программирование процедур вывода информации на дисплей и ввода информации с клавиатуры;

· -структуру ассемблерной программы;

· -процедуры формирования программы формата EXE;

· -назначение, команды и варианты использования отладчика программ Debug.

Пользователь компьютера, равно как и прикладной программист, программы составляет, как правило, на машинно-независимом алгоритмическом языке высокого уровня (Basic, Pascal, FORTRAN, C, PROLOG и др.), однако иметь представление об основах программирования и на машинно-ориентированных языках грамотному пользователю весьма полезно для:

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

l возможности просмотра и корректировки исполняемых программ с расширениями EXE и COM, компилированных с любых языков высокого уровня, в случае утраты исходных программ (вызвав указанные программы в отладчик программ DEBUG и деассемблировав их, можно получить их отображение на языке Ассемблера);

l составления программ решения наиболее ответственных задач (машинная программа, подготовленная на машинно-ориентированном языке, обычно эффективнее (короче и быстрее на 30–60%) программ, полученных в результате трансляции с языков высокого уровня) и для реализации процедур, включаемых в основную программу в виде отдельных фрагментов в том случае, если они не могут быть реализованы ни на используемом языке высокого уровня.

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

Алфавит языка

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

l буквы от А до Z (или от а до z, строчные и прописные буквы в ассемблере не различаются);

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

l специальные символы: @, $, ?, ., _,–, +, *, ', “, ; ,: и др.

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

l простые сообщения: имена (идентификаторы) процедур (подпрограмм), переменных, директив, команд (метки), значения констант и переменных;

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

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

l модификаторы (операции).

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

Константы (числа и строки)

Только целые числа

Различают:

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

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

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

Для обозначения цифр 10, 11, 12, 13, 14, 15 в шестнадцатеричной системе счисления используются, соответственно, буквы A, B, C, D, E, F; но начинаться шестнадцатеричные числа должны обязательно с цифры, например: выражение F19Н — не число, а идентификатор, правильно число надо записать так: 0F19Н.

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

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

l двоичные числа записываются только в дополнительном модифицированном коде: –32D ® 11.100000B, –19D ® 11.01101B;

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

l –32D выглядит как 1.E0H, –119D — как 1.89H.

Строки (литералы)

Строки символов: включают в себя любые буквы, цифры и символы, но заключаются в кавычки: "ПК IBM PC с микропроцессором Pentium D ".

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

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

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

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

КОП (Код ОПератора) — мнемокод команды (состоит из 2–6 букв). Может быть до 256 различных кодов (в ассемблере IBM PC их число изменяется в зависимости от типа МП ).

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

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

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

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

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

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

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

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

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

КПОП (Код ПсевдоОПератора) — мнемокод директивы (состоит из 2–7 букв).

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

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

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

l Арифметические модификаторы: «+» — сложить, «-» — вычесть, «*» — умножить, «/» — разделить, mod — остаток от деления и т.д. Формат:
opr mdf opr.

l Логические модификаторы: and — «и», or — «или», not — «не», и xor — исключающее «или». Формат: opr mdf opr.

l Модификаторы отношения: eq — совпадения, nq— несовпадения, lt — меньше, gt — больше, le — меньше или равно, ge— больше или равно. Формат:
opr mdf opr.

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

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

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

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

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

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

l Size — возвращает произведение length*type. Формат: mdf opr.

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

l Ptr — изменяет атрибут типа (byte, word или dword) операнда или атрибут дистанции (near или far) адресного операнда. Формат: тип ptr opr. (Здесь: тип — новый атрибут, opr — идентификатор операнда, чей атрибут должен быть изменен).

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

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

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

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

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

l byte — длиной 1 байт;

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

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




akkreditaciya-organov-po-sertifikacii-i-ispitatelnih-laboratorij.html
akkreditaciya-organov-po-sertifikacii.html
akkreditivnaya-forma-raschyotov-s-predvaritelnim-deponirovaniem-sredstv.html
akkulturaciya-v-mezhkulturnih-vzaimodejstviyah.html
akkumulirovanie-kapitalov-naseleniya-v-mestnuyu-ekonomiku.html
ч     PR.RU™