Выдержка из текста работы
При зарождении RISCархитектуры (начало 70-х годов) она действительно соответствовала своему наименованию (мощность системы команд составляла не более 100 различных типов команд, в то время как CISCархитектура имела мощность системы команд до 300 команд). Современные модели RISCпроцессоров имеют мощность системы команд, не уступающую CISC. В настоящее время основным признаком RISCархитектуры является не столько сокращение набора команд, сколько стремление к выполнению подавляющего большинства команд за один машинный такт.
Процессоры семейства Intel 80х86 (80486 в нашем случае) представляют собой классическое направление компьютеров с CISCархитектурой.
2 Кратко опишите программную модель архитектуры IA-32.
Программную модель процессора в архитектуре IA-32 процессоров Intel составляет следующий набор ресурсов:
— пространство адресуемой памяти до 232 — 1 байт (4 Гбайт), для Pentium III/IV — до 236 — 1 байт (64 Гбайт);
— набор регистров для хранения данных общего назначения;
— набор сегментных регистров;
— набор регистров состояния и управления;
— набор регистров устройства вычислений с плавающей точкой (сопроцессора);
— набор регистров целочисленного MMX-расширения, отображенных на регистры сопроцессора (впервые появились в архитектуре процессора Pentium MMX);
— набор регистров MMX-расширения с плавающей точкой (впервые появились в архитектуре процессора Pentium III);
— программный стек — специальная информационная структура, работа с которой предусмотрена на уровне машинных команд (более подробно она будет обсуждена позже).
Это основной набор ресурсов. Кроме того, к ресурсам, поддерживаемым архитектурой IA-32, необходимо отнести порты ввода-вывода, счетчики мониторинга производительности.
3 Перечислите регистры общего назначения. Схематично нарисуйте один из них. Для чего они нужны?
15 8 7 0
АН (100) |
AL (000) |
CH (101) |
CL (001) |
DH (110) |
DL (010) |
BH (111) |
BL (011) |
|
|
|
|
|
|
|
001 CX
010 DX
011 BX
100 SP
101 BP
110 SI
111 DI
По умолчанию любой РОН используется как специализированный для определенной цели, в то же время его можно использовать и для других целей как универсальный регистр.
Функциональная специализация РОНов отражается в их наименованиях:
АХ – Accumulator (регистр-аккумулятор) – по умолчанию используется для задания одного из операндов команды и для представления результата.
СХ – Counter (счетчик) – по умолчанию используется, во-первых, как счетчик числа повторения циклов в команде «организация цикла» (LOOP); во-вторых, для задания числа сдвигов в командах сдвигов (его младший байт – CL); в-третьих, для задания числа элементов обрабатываемых строк (цепочек) в командах обработки строк (MOVS, CMPS и т.д.).
DX –Data (регистр данных) – по умолчанию используется как расширение аккумулятора со стороны старших разрядов в командах умножения и деления.
ВХ –Base (базовый регистр) – по умолчанию используется как базовая компонента эффективного адреса операнда, находящегося в памяти. (В терминологии фирмы Intel под эффективным адресом – Effective Address (ЕА) – понимается адрес операнда, формируемый программой (программный адрес).) Для получения физического адреса ячейки памяти, в которой находится операнд, осуществляется преобразование ЕА на основе простейшей модели сегментированной памяти (механизма сегментации).
SP – Stack Pointer (указатель стека) – по умолчанию используется для адресации вершины стека.
Вершина стека указывает на адрес последнего элемента, записанного в стек.
Стек представляет собой сегмент памяти. Стек растет в область младших адресов. Это означает, что при записи (включении в стек), например, по команде PUSH, сначала производится декремент SP (уменьшение) на 2, а затем запись в память по новому значению SP как адреса.
При чтении (извлечении) из стека, например, по команде POP, сначала производится чтение слова по адресу из SP, а затем инкремент (увеличение) содержимого SP на 2.
Работа со стеком реализуется на уровне слов, но не байт.
ВР – Base Pointer (указатель базы) – по умолчанию используется как базовая компонента эффективного адреса операнда в памяти по аналогии с ВХ.
Отличие в использовании содержимого регистров ВХ и ВР как базовых компонент ЕА состоит в том, что при использовании ВХ подразумевается обращение к сегменту данных, а при использовании ВР – к сегменту стека (но не через его вершину).
Подобный способ работы со стеком не через его вершину используется в программах на ASSEMBLER для обращения к параметрам процедуры, передаваемым через стек.
SI – Source Index (индекс источника) – по умолчанию используется для задания индексной компоненты ЕА, а также для адресации элементов строки-источника в командах обработки строк.
DI – Distination Index (индекс приемника) – по умолчанию используется аналогично SI для задания индексной компоненты ЕА, а также для адресации элементов строки-приемника в командах обработки строк.
4 Какие типы сегментов бывают?
Сегменты бывают:
- стека
- данных
- кода
5 Какие бывают модели памяти. Чем они отличаются?
Память может быть организована как страничная или сегментная.
В ассемблере можно определить следующие модели памяти:
TINY, SMALL, MEDIUM, COMPACT, LARGE, FLAT.
Различия в моделях памяти заключается в следующих параметрах:
- тип кода ( near или far, т.е. принцип размещения в памяти )
- тип данных ( near или far )
6 Как происходит компиляция и компоновка программы?
На этапе трансляции (компиляции) решается несколько задач:
— перевод команд ассемблера в соответствующие машинные команды;
— построение таблицы символов;
— расширение макросов;
— формирование файла листинга и объектного модуля.
Объектный модуль включает в себя представление исходной программы в ма-
шинных кодах и некоторую другую информацию, необходимую для отладки и ком-
поновки его с другими модулями.
Главная цель компоновки — преобразовать код и данные в объектных файлах в их перемещаемое выполняемо отображение.
Результатом компоновки является создание загрузочного файла с расширением ехе. После этого операционная система можетёзагрузить такой файл в память и выполнить его.
7 Для чего нужен компоновщик?
Чтобы можно было объединять вместе модули, написанные на одном и том же или на разных языках. Формат объектного файла позволяет при определенных условиях объединить несколько отдельно оттранслированных исходных модулей в один модуль. При этом в функции компоновщика входит разрешение внешних ссылок (ссылок на внешние процедуры и переменные) в этих модулях.
8 Переведите 4сa01f(16) в десятичную систему счисления.
4сa01f (16) = 4*16^5 + 12*16^4 + 10*16^3 + 0*16^2 + 1*16^1 + 15*16^0 = 5021727 (10)
9 Сложите 2 шестнадцатиричных числа столбиком: B15C+ 1F42
B15C
1F42
——-
D09E
10 Сложите 2 шестнадцатиричных числа столбиком: 87A9 +6E12, а затем переведите получившееся число в 5-ричную систему счисления.
87A9
6E12
——
F5BB
F5BB (16) = 62907 (10) = 4003112 (5)
11 С помощью 3-х команд на языке Ассемблер сложите 2 числа AX=1785и 533h.Также выполните сложение столбиком.Чему будет равен старший байт AHрегистраAXпосле выполнения операции сложения?
mov ax, 1785
mov dx, 0533h
add ax, dx
1785 (10) = 6F9 (16)
——
AH = 0Ch