- •2. Регистры процессора 8086, особенности регистровой модели.
- •3. Форматы и типы команд 80х86, режимы адресации операндов
- •4. Описание адреса операнда в команде ассемблера
- •7.Директивы описания данных в языке ассемблера
- •9. Сегментная модель памяти, описание сегментов.
- •10. Описание и обработка массивов на ассемблере.
- •11. Вычисления с фиксированной и плавающей точкой.
- •12.Форматы и типы данных арифметического сопроцессора.
- •13.Особые ситуации в численных расчетах.
- •14.Арифметический сопроцессор: архитектура сопроцессора; команды сопроцессора
- •Регистр состояний
- •15.Поток выполнения. Команды управления программой, переходы, ветвления, подпрограммы.
- •16.Команды управления программой. Реализация основных управляющих структур.
- •17.Понятие о подпрограмме; вызов подпрограммы; стек; адрес возврата; рекурсивная подпрограмма.
- •18.Способы передачи параметров в подпрограммы; передача параметров по ссылке и по значению.
- •19.Соглашение о связях Pascal.
- •20.Понятие о прерывании; обработка прерываний, функции контроллера прерываний.
- •21.Система прерываний микропроцессора 8086; Обмен по прерываниям.
- •22.Исключительные ситуации и прерывания. Программные прерывания.
- •23. История появления и развития эвм, поколения эвм.
- •Второй период (1955 г.–начало 60-х). Компьютеры на основе транзисторов. Пакетные операционные системы
- •Третий период (начало 60-х – 1980 г.). Компьютеры на основе интегральных микросхем. Первые многозадачные ос
- •Четвертый период (с 1980 г. По настоящее время). Персональные компьютеры.
- •24. Принципы фон-Неймана, понятие об архитектуре эвм.
- •25. Состав фон-неймановской эвм. Устройство управления, алу, память, порты внешних устройств; регистры процессора.
- •26. Представление информации в памяти эвм. Дополнительный код. Признаки переполнения и переноса. Двоично-десятичные числа.
- •27.Команды цп; выполнение команд; цикл процессора; классификация команд.
- •28. Понятие о системном интерфейсе эвм; способы обмена данными между процессором и другими устройствами. Контроллер периферийного устройства.
- •29.Программно-управляемый обмен. Понятие о прямом доступе к памяти.
- •30. Понятия «интерфейс», «магистраль», «протокол». Состав интерфейсов; структура шин адреса, данных, команд, управления
- •36. Кэш память и массовая оперативная память; способы организации кэш памяти.
- •48. Конфликты по управлению; способы минимизации потерь в результате конфликтов по управлению, прогнозирование ветвлений.
- •49. Суперскалярные процессоры и процессоры с длинным командным словом.
- •52. Классификация параллельных проектов. Системы класса simd; матричная и векторная обработка данных.
- •53. Системы класса mimd; Классификация. Модели связи и архитектуры памяти; способы реализации и основные особенности.
- •56. Проблемы когерентности кэш памяти в многопроцессорных системах. Протокол mesi. Системы с массовым параллелизмом.
- •64 Битные процессора amd. K8, архитектура и основные особенности.
- •64. Процессоры UltraSparc как характерные представители класса risc процессоров.
- •65.Многоядерные процессоры компаний Intel
- •66. Многоядерные процессоры компаний amd
9. Сегментная модель памяти, описание сегментов.
Каждая программа, написанная на любом языке программирования, состоит
из одного или нескольких сегментов. Обычно область памяти, в которой находятся команды, называют сегментом кода, область памяти с данными – сегментом данных и область памяти, отведенную под стек, - сегментом стека. Разумеется, ассемблер позволяет изменять устройство программы как угодно - помещать данные в сегмент кода, разносить код на множество сегментов, помещать стек в один сегмент с данными или вообще использовать один сегмент для всего. Сегмент программы описывается директивами SEGMENT и ENDS.
имя_сегмента segment readonly выравн. тип разряд 'класс'
имя_сегмента ends
Имя сегмента - метка, которая будет использоваться для получения сегментного адреса, а также для комбинирования сегментов в группы. Все пять операндов директивы SEGMENT необязательны. READONLY. Если этот операнд присутствует, MASM выдаст сообщение об ошибке на все команды, выполняющие запись в данный сегмент. Другие ассемблеры этот операнд игнорируют. Выравнивание. Указывает ассемблеру и компоновщику, с какого адреса может начинаться сегмент. Значения этого операнда:
BYTE - с любого адреса;
WORD - с четного адреса;
DWORD - с адреса, кратного 4;
PARA - с адреса, кратного 16 (граница параграфа);
PAGE - с адреса, кратного 256.
По умолчанию используется выравнивание по границе параграфа.
Тип. Выбирает один из возможных типов комбинирования сегментов:
-- тип PUBLIC означает, что все такие сегменты с одинаковым именем, но разными классами будут объединены в один;
-- тип STACK - то же самое, что и PUBLIC, но должен использоваться для сегментов стека, потому что при загрузке программы сегмент, полученный объединением всех сегментов типа STACK, будет использоваться как стек;
-- сегменты типа COMMON с одинаковым именем также объединяются в один,
но не последовательно, а по одному и тому же адресу, следовательно, длина
суммарного сегмента будет равна не сумме длин объединяемых сегментов,
как в случае PUBLIC и STACK, а длине максимального.
-- тип AT - выражение указывает, что сегмент должен располагаться по фиксированному абсолютному адресу в памяти. Результат выражения, использующегося в качестве операнда для AT, равен этому адресу, деленному на 16.
-- PRIVATE (значение по умолчанию) - сегмент такого типа не объединяется
с другими сегментами.
Разрядность. Этот операнд может принимать значения USE16 и USE32. Раз-
мер сегмента, описанного как USE16, не может превышать 64 Кб, и все команды
и адреса в этом сегменте считаются 16-битным. USE32 могут занимать до 4 Гб, и все команды и адреса в них по умолчанию 32-битные.
Класс сегмента - это любая метка, взятая в одинарные кавычки. Все сегменты
с одинаковым классом, даже сегменты типа PRIVATE, будут расположены в исполняемом файле непосредственно друг за другом.
Модели памяти задаются директивой .MODEL .model модель,язык,модификатор
где модель - одно из следующих слов:
-- TINY - код, данные и стек размещаются в одном и том же сегменте размером до 64 Кб.
-- SMALL - код размещается в одном сегменте, а данные и стек - в другрм (для их описания могут применяться разные сегменты, но объединенные в одну группу).
-- COMPACT - код размещается в одном сегменте, а для хранения данных мо-
гут использоваться несколько сегментов.
-- MEDIUM - код размещается в нескольких сегментах, а все данные - в одном
-- LARGE и HUGE — и код, и данные могут занимать несколько сегментов;
-- FLAT - то же, что и TINY, но используются 32-битные сегменты, так что максимальный размер сегмента, содержащего и данные, и код, и стек, - 4 Мб.