их назначение:
По назначению регистры различаются на:
аккумулятор — используется для хранения промежуточных результатов арифметических и логических операций и инструкций ввода-вывода;
флаговые — хранят признаки результатов арифметических и логических операций;
общего назначения — хранят операнды арифметических и логических выражений, индексы и адреса;
индексные — хранят индексы исходных и целевых элементов массива;
указательные — хранят указатели на специальные области памяти (указатель текущей операции, указатель базы, указатель стека);
сегментные — хранят адреса и селекторы сегментов памяти;
управляющие — хранят информацию, управляющую состоянием процессора, а также адреса системных таблиц.
18. Язык Ассемблера. Директивы инициализации и описания данных. Директивы SEGMENT, Assume. Способы адресации.
Язы́к ассе́мблера (англ. assembly language) — машинно-ориентированный язык программирования низкого уровня. Его команды прямо соответствуют отдельным командам машины или их последовательностям, также он может предоставлять дополнительные возможности облегчения программирования, такие как макрокоманды, выражения, средства обеспечения модульности программ. Может рассматриваться как автокод (см. ниже), расширенный конструкциями языков программирования высокого уровня[1][2]. Является существенно платформо-зависимым. Языки ассемблера для различных аппаратных платформ несовместимы, хотя могут быть в целом подобны.
Программа на языке Assembler в соответствии с особенностями архитектуры компьютера (микропроцессора) состоит из сегментов.
Вспомним, что физически сегмент представляет собой область (блок) памяти, занятую командами и/или данными.
Адреса сегментов (адрес начала сегмента) хранятся в соответствующих сегментных регистрах.
Адреса команд/данных вычисляются относительно начала сегмента.
Микропроцессор имеет шесть сегментных регистров, посредством которых может одновременно работать:
- с одним сегментом кода (CS);
- с одним сегментом стека (SS);
- с одним сегментом данных (DS);
- с тремя дополнительными сегментами данных (ES,FS, GS).
Итак, исходный текст программы на языке Assembler разбивается на сегменты. Каждая программа содержит как минимум сегмент данных, сегмент стека, сегмент кода.
Для описания сегментов предназначены директивы сегментации.
Директивы сегментации подразделяются на
1) стандартные (поддерживаются всеми трансляторами Assembler);
2) упрощенные (поддерживаются транслятором TASM).
Do'stlaringiz bilan baham: |