Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы СППО.docx
Скачиваний:
18
Добавлен:
25.12.2018
Размер:
71.25 Кб
Скачать

1.Программная модель абстрактного ассемблера

2. Организация оперативной памяти

Байт – минимальная единица измерения. Линейная модель оперативной памяти (0……n).

Машинное слово – 3 байта.

3. Основные типы данных

Два типа данных: целые числа (1-но слово), однобайтные символьные данные

4. Основные форматы команд

Он определяет структуру команды и объем памяти для команды.

  1. Однобайтные команды

  1. Двухбайтные команды

Пр: ADD регистр1,регистр2

  1. Трехбайтные команды

Пр: jmp 4096(10)

  1. Четырехбайтные команды

Пр: CALL M1

LOADR1 адрес

SAVER1 адрес

5.Основные регистры, достаточные программисту.

Будем считать что абстрактный процесс имеет два регистра:

  • Общего назначения (AX,BX,CX,DX..)

  • Специализированные регистры (IP,регистры флагов, регистровые и т.д)

6.Способы адресации

  • Непосредственная адресация (в ней адреса в самой команде).

  • Прямая адресация (в команде в операндной части находится абсолютный адрес операнда в оперативной памяти).

  • Относительная адресация (в команде находится смещение относительно базового значения), используем:

Относительно счетчика команд.

Относительно базового регистра.

7.Системы команд.

  1. Команды загрузки регистров содержимым областей памяти (из оперативной памяти -> регистр).

  2. Команды загрузки содержимого регистра в оперативную память (из регистра -> в оперативную память).

  3. Арифметические команды.

  4. Логические операции.

  5. Операции сравнения.

  6. Команды переходов, бывают:

  • Условные.

  • Безусловные.

8.Из каких частей состоит строка ассемблера абстрактного процессора.

Каждая строка может содержать либо одну ассемблерную инструкцию (команду ассемблера) либо псевдокоманду.

Псевдокоманда – не имеет двоичное представление (машинный код), они нужны чтобы указать как ассемблировать. Пр: М1,START,MACRO и т.д.

[метка] мнемонический код операции (МКОП) [адресная часть]

[метка] – поименованная область памяти.

9.Виды псевдокоманд

Директивы:

  1. START

Формат : «имя программы» START [адрес загрузки (необязательно)]

  1. END

Формат : END [адрес точки входа (необязательно)]

  1. WORD – определение целочисленной команды длиной в 1но слово.

Формат : «имя» WORD 4096(10)

  1. BYTE – определение символьной инф-ции либо 16тиричной.

Формат : «имя» BYTE [hello]

«имя» BYTE ‘00FF’(16)

  1. RESW – количество слов

Формат : «имя» RESW кол-во слов.

  1. RESB – количество байт

Формат : «имя» RESB кол-во байт.

10.Основные функции программ-ассемблеров Назначение и функции программ ассемблера.

Дополнительная информация – инф-я для загрузчика, какие внешние имена, функции используются.

Что должен выполнять ассемблер:

  1. Назначить все командам, константам и областям памяти соответствующие адреса.

  2. Заменить мнемонический код операции двоичным представлением.

  3. Заменить символические имена соответствующими адресами.

  4. Сгенерировать машинные команды в соответствующем формате.

  5. Перевод констант из внешнего представления во внутреннее.

  6. Зарезервировать все необходимые области памяти.

  7. Создать объектный код соответствующего формата в двоично-символьное представлении (т.е. сформировать модуль).

  8. Сформировать листинг об ошибках.

11.Достоинства и недостатки одно- и двухпроходного ассемблера

Способы реализации ассемблирующих программ:

  1. 2хпросмотровая схема работа ассемблера. Ассемблирующая программа выполняет 2 прохода. Т е собираем все ссылки в виде некой специальной таблицы, а на 2м проходе производим обработку частей. Достоинства: каждый алгоритм очень простой. Недостаток: относительно более низкое быстродействие

  2. 1просмотровая схема ассемблирования. Достоинство- быстродействие. Недостаток – более сложный код.

12.Какой ассемблер является простым.

Простой ассемблер – ассемблер, удовлетворяющий следующим условиям:

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

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

  3. исходный текст программы представляет собой единый модуль.

13.Что необходимо для реализации двухпроходного ассемблера

Реализация программы:

  1. счетчик адреса(перемещения) – назначение командам и операндам соответствующих адресов. Конечное значение счетчика адреса используется для вычисления длины программы.

  2. Специальные таблицы:

- таблица кодов операций

Рис1

- таблица символических имен

Рис2

Эта таблица строится динамически

Prog1 START 100

JMP L1

A1 RESB 10(10)

A2 RESW 20(10)

B1 WORD 4096(10)

B2 BYTE x2F4C008A

B3 BYTE c’Hello!’

B4 BYTE 128(10)

L1 LOADR1 B1

LOADR2 B4

ADD R1,R2

SAVER1 B1

END 100

14. Алгоритм первого прохода двухпроходного ассемблера

Цель:

- назначить адреса командам и константам используя счетчик адреса

- построить ТСИ, которая будет использоваться во 2х проходе

Алгоритм:

  1. счетчику адреса присваиваем адрес загрузки

  2. организуем цикл по обработке строк исходного текста программы, каждая строка которого обрабатывается следующим образом:

    1. разбиваем входную строку на 3 составляющие: метка, мнимо код и операндная часть

    2. если в поле метки обнаружено символическое имя, то организуем поиск символического имени в ТСИ, если имя обнаружено, то генерируется ошибка. Если Си в ТСИ не обнаружено, то заносим его в ТСИ и с ним сопоставляем адрес из счетчика адреса

    3. Анализируем поле мКОД операции:

      1. Если в поле МКОП операции встретилась директива резервирования памяти, то значение счетчика адреса увеличивается на величину резервирования в памяти

      2. осуществляем поиск в ТКО.

      3. Если поиск неудачен, то генерируется ошибка неправильного кода операций

      4. Если поиск удачен, то заменяем МКОП двоичным представлением из ТКО и увеличиваем счетчик адерса на длину команды

  3. окончание цикла при достижении директивы END. При этом происходит вычисление длины программы.

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