- •Что надо знать, перед изучением ассемблера.
- •Какие системы счисления использует ассемблер
- •Понятие системы счисления
- •Двоичная
- •Восьмеричная
- •Шестнадцатеричная
- •Как и где программа хранит код и данные
- •Виды памяти
- •Способы адресации
- •Сегменты
- •Страницы
- •Регистры
- •Регистры общего назначения (РОН)
- •Регистры данных
- •Регистры указатели
- •Сегментные регистры
- •Служебные регистры
- •Как программа исполняется ЦПУ
- •Структура программы на Ассемблере MASM32
- •Комментарии
- •Сегменты
- •Переменные
- •Метки
- •Инструкции ассемблера
- •Основные инструкции ассемблера х86:
- •Используемая литература
КАК И ГДЕ ПРОГРАММА ХРАНИТ КОД И ДАННЫЕ
Виды памяти
Вообще видов памяти можно придумать множество, но тех, которыми ЦПУ может распоряжаться непосредственно, всего три:
1)Оперативная память (ОЗУ). Находится вне ЦПУ, т.е. на отдельной плате. Обладает большим объёмом (единицы
– десятки гигабайт), но относительно невысоким быстродействием. Как правило, имеет структуру линейного массива, номера ячеек, в котором, называются адресами. К ОЗУ можно обращаться непосредственно процессорными инструкциями, указывая адрес ячейки в памяти.
2)КЭШ память. Как правило, расположена на том же кристалле, что и ЦПУ. Имеет, приблизительно, в 1000 - 10000 раз меньший объём, но в 10 - 20 раз большее быстродействие. В каждый момент времени хранит копии тех участки ОЗУ, с которыми ЦПУ, в настоящий момент работает. Управляется автоматически, контроллером памяти ЦПУ. При помощи процессорных инструкций управлять непосредственно КЭШ памятью нельзя.
3)Регистры. Не только расположены на том же кристалле, но и являются частью архитектуры процессора. Обладают самым большим быстродействием. Считать или записать значение в регистр процессор может за один такт. Но регистров относительно мало, суммарный объём регистровой памяти в современных процессорах не превышает нескольких килобайт (включая векторные и служебные регистры). Регистры могут программироваться явно, соответствующими процессорными инструкциями. Так же для выполнения большинства операций процессору нужно, что бы хотя бы один из операндов был предварительно загружен в регистры.
Далее мы будем рассматривать только два из трёх указанных выше видов памяти: ОЗУ и регистры.
ОЗУ
Способы адресации
Несмотря на то, что ОЗУ представляет собой линейный массив, существует несколько способов её адресации. В основном, их наличие связано с необходимостью выделять определённые участки общей памяти для конкретных целей: машинного кода, данных, стека и т.д.
…
Сегменты
При сегментной адресации вся память разбита на сегменты размером по 64 килобайта. Сегменты расположены не ровно друг за другом, а могут накладываться. То есть существуют ячейки памяти, принадлежащие сразу нескольким сегментам.
…
Страницы
Способ организации памяти, при котором единицей отображения виртуальных адресов на физические является регион постоянного размера (т. н. страница). Типичный размер страницы - 4096 байт, для некоторых архитектур - до
128 КБ.
…
Регистры
Регистры общего назначения (РОН)
Регистры данных
Для хранения промежуточных результатов вычислений в процессорах x86 программисту доступно лишь 4 регистра: AX, BX, CX, DX. Все регистры имеют размер по 2 байта. Так же каждый регистр имеет псевдонимы для обращения только к младшему или только к старшему байту:
x8 |
AL, AH |
BL, BH |
CL, CH |
DL, DH |