- •«Санкт-Петербургский государственный электротехнический университет «лэти» им.В.И.Ульянова (Ленина)» (сПбГэту)
- •Архитектура компьютера
- •Оглавление
- •Основные понятия архитектуры и организации компьютеров.
- •1.1. Состав компьютера
- •1.2. Виды (классы) компьютеров
- •1.3. Принцип программного управления и машина фон Неймана
- •1.4. Понятия архитектуры, организации и реализации компьютера
- •1.5. Многоуровневая организация компьютера
- •1.6. Понятие семантического разрыва между уровнями
- •1.7. Организация аппаратных средств вм
- •Представление и обработка данных в вм
- •Целые числа
- •Представление и обработка вещественных чисел.
- •Логические операции над битовыми наборами
- •Представление и обработка символов.
- •Представление видеоинформации и аудиоинформации.
- •Видеоинформация.
- •Аудиоинформация
- •Организация процессора и основной памяти вм
- •3.1. Типовая структура процессора и основной памяти
- •3.2. Основной цикл работы процессора
- •3.3. Организация процессора и памяти в архитекуре Intel x86.
- •3.3.1. Программно доступные регистры процессора
- •3.3.2. Организация стека в архитектуре Intel х86
- •3.3.3. Организация выполняемых программ в ms dos
- •3.3.4. Режимы адресации памяти в архитектуре Intel х86
- •1. Регистровая адресация
- •2. Непосредственная адресация
- •3. Прямая адресация
- •4. Косвенная адресация
- •7. Индексная адресация с масштабированием
- •8. Адресация по базе с индексированием и масштабированием
- •3.3.5. Краткая характеристика системы команд процессоров Intel х86
- •3.3.6 .Арифметическая обработка чисел с использованием математического сопроцессора
- •Организация прерываний в процессорах Intel x86
- •Эволюция микроархитектуры Intel x86
- •Управление выполнением команд в компьютерах.
- •Аппаратный способ формирования управляющих сигналов
- •Микропрограммный способ формирования управляющих сигналов
- •Компьютеры с сокращенным набором команд
- •Организация памяти в компьютере
- •6.1. Назначение и основные характеристики памяти
- •6.2. Основные среды хранения информации
- •6.3. Методы доступа к данным.
- •6.4. Память с произвольным доступом (ппд)
- •6.5. Блочная организация основной памяти.
- •6.6. Постоянные запоминающие устройства (пзу - rom)
- •6.7. Ассоциативные запоминающие устройства (азу)
- •6.8. Иерархическая система памяти
- •Организация кэш-памяти.
- •Прямое отображение блоков оп на кэш-память
- •Наборно-ассоциативное отображение блоков оп на Кэш-память
- •6.10. Организация виртуальной памяти
- •Организация виртуальной памяти в Intel 80386 и более старших моделях.
- •Защита памяти в процессоре Intel 80386
- •Организация работы с внешней памятью
- •7.1. Типы, виды, свойства дисковых накопителей информации.
- •7.2. Магнитные дисковые накопители.
- •7.3. Основные физические и логические параметры жмд
- •7.4. Контроллеры жестких дисков
- •Логическое хранение и кодирование информации
- •Интерфейсы жестких дисков
- •Работа накопителя
- •Внешняя память на cd и dvd дисках.
- •Принципы организации raid массивов
- •Основные принципы построения raid массивов
- •Одиночные уровни raid
- •Составные уровни raid массивов
- •Сравнительные результаты
- •Системные и локальные шины
- •9.1. Общие положения и требования к шинам
- •9.2. Основные виды, характеристики и параметры шин
- •9.3. Стандарты шин
- •Организация системы ввода-вывода в вм
- •10.1. Назначение и основные требования к системе ввода-вывода вм
- •10.2. Архитектура систем ввода-вывода
- •10.3. Способы выполнения операции передачи данных
- •Синхронная передача данных
- •Ввод-вывод по программному прерыванию
- •Ввод-вывод по аппаратному прерыванию (прямой доступ к памяти)
- •10.4. Структуры контроллеров ву для различных режимов передачи данных
- •Программные средства управления вводом-выводом (пс увв)
- •Состав пс увв
- •11.2. Основные компоненты процедуры управления ввода-вывода общего вида
- •11.3 Состав и реализация устанавливаемого драйвера символьного типа
- •Список литературы
- •Приложения
- •Регистры ммх
- •Типы данных
- •Команды ммх
- •П2. Краткое введение в программирование на языке Ассемблера
- •1. Директивы задания данных
- •2. Директивы сегментации программы
- •3. Директивы группирования.
- •4. Порядок размещения сегментов.
2. Директивы сегментации программы
Два способа задания сегментов в программе.
Полное описание сегментов
имя_сегмента SEGMENT атрибуты
тело сегмента
имя_сегмента ENDS
Пример
dat_s1 segment byte public ‘data’
a db ?
dat_s1 ends
Атрибуты:
-
ReadOnly – сегмент доступен только для чтения; при попытки записи в этот сегмент MASM выдаст сообщение об ошибке.
-
Атрибут выравнивания – указывает ассемблеру и компоновщику, с какого адреса может начинаться сегмент.
BYTE – с любого адреса.
WORD – с четного адреса.
DWORD – с адреса, кратного 4.
PARA – с адреса, кратного 16 (установлен по умолчанию).
PAGE – с адреса, кратного 256.
-
Атрибут группирования, комбинирования.
PUBLIC- конкатенация (присоединение частей сегментов друг к другу).
COMMON – размещение сегментов данного класса с одного адреса (для сегментов кода и оверлейных программ).
PRIVATE – сегмент с таким атрибутом не объединяется с другими сегментами (значение по умолчанию).
-
Атрибут типа данных.
USE16 – сегмент работает с 16-битными данными.
USE32 – сегмент работает с 32-битными данными.
-
Атрибут класса – это любая метка, взятая в одинарные кавычки. Этот атрибут влияет на расположение сегментов в скомпонованной программе.
Связь сегментов с соответствующими сегментным регистром.
ASSUME {регистр_сегментный: имя_сегмента,…}
Обычно эта директива идет вслед за сегментом кода.
Пример
assume cs: code_s, ds: d_seg,
ss: stack, es: nothing
NOTHING – не устанавливать связь или отменить ее, если она была установлена.
Загрузка начальных адресов сегментов в соответствующие регистры.
mov ax, seg d_seg ; seg- необязательный оператор
mov ds, ax
3. Директивы группирования.
GROUP имя_сегмента1, имя_сегмента2,…
Все перечисленные сегменты относятся к одной группе и могут адресоваться относительно одного регистра (обычно в одну группу объединяют сегменты одного назначения, например, data и stack).
Сокращенное описание сегментов.
При таком описании требуется обязательное задание модели памяти, в условиях которой используется данная программа.
.MODEL тип_модели_памяти
Эта директива накладывает ограничения на комбинирование сегментов (таблица).
|
Модель |
Тип доступа к коду |
Тип доступа к данным |
Сегментные регистры |
Примечания |
|
TINY |
Near |
Near |
(cs)=DGroup (ds)=(ss)=DGroup |
.com |
|
SMALL |
Near |
Near |
(cs)=_Text (ds)=(ss)=DGroup |
.exe |
|
MEDIUM |
Far |
Near |
(cs)=<имя_сегмента>_Text (ds)=(ss)=DGroup |
|
|
LARGE |
Far |
Far |
(cs)=<имя_сегмента>_Text (ds)=(ss)=DGroup |
|
|
HUGE |
Far |
Far |
|
|
.CODE – директива описания сегмента кода; эта запись аналогична
_TEXT SEGMENT Word Public ‘CODE’
или
<имя_сегмента> _TEXT Word Public ‘CODE’
для модели памяти выше MEDIUM
.DATA
_DATA SEGMENT Word Public ‘DATA’
.STACK
STACK SEGMENT Para Public ‘STACK’
.CONST
CONST SEGMENT Word Public ‘CONST’
.DATA?
_BSS SEGMENT Word Public ‘BBS’
Отличие от полного описания сегментов заключается в отсутствии директивы ENDS. Таким образом, в результате создаются предопределенные переменные, которые содержат начальные адреса сегментов: @Code, @Data, @Stack, @Const, @BBS. Следовательно, можно написать:
mov ax, @data
mov ds, ax
