Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...
Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...
Топ:
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Техника безопасности при работе на пароконвектомате: К обслуживанию пароконвектомата допускаются лица, прошедшие технический минимум по эксплуатации оборудования...
Комплексной системы оценки состояния охраны труда на производственном объекте (КСОТ-П): Цели и задачи Комплексной системы оценки состояния охраны труда и определению факторов рисков по охране труда...
Интересное:
Мероприятия для защиты от морозного пучения грунтов: Инженерная защита от морозного (криогенного) пучения грунтов необходима для легких малоэтажных зданий и других сооружений...
Наиболее распространенные виды рака: Раковая опухоль — это самостоятельное новообразование, которое может возникнуть и от повышенного давления...
Влияние предпринимательской среды на эффективное функционирование предприятия: Предпринимательская среда – это совокупность внешних и внутренних факторов, оказывающих влияние на функционирование фирмы...
Дисциплины:
2022-10-04 | 31 |
5.00
из
|
Заказать работу |
|
|
Работа с памятью и стеком
Память трактуется как одномерный массив байтов, каждый байт ассоциируется с двоичным адресом (физическим адрес).
Физический адрес – это 20-битовое беззнаковое целое от 0h до FFFFFh, которое позволяет описать адресное пространство объемом 1 Мбайт.
Разрядность основного слова МП равна 2 Байта = 16 бит.Поэтому для вычисления физического адреса используется выделение из адресного пространства сегментов по 64Кбайта (216), и в пределах сегмента можно использовать 16-разрядный адрес.
Сегменты в адресном пространстве могут размещаться, только начиная с байтов, адреса которых кратны 16, т.е. 4 младших бита – нулевые. Такие адреса называются параграфами.
Логический адрес представляет собой пару 16-тибитовых беззнаковых целых чисел, разделенных двоеточием:
- начальный адрес сегмента (базовый),
- смещение (эффективный адрес), указывает расстояние в байтах от начала сегмента до адресуемого байта.
Например,
CS:IP
При вычислении физического адреса МП расширяет содержимое сегментного регистра четырьмя нулевыми битами справа, затем суммирует полученное число со смещением.
Сегментный регистр
| |||
|
Получим схему образования физического адреса.
15 12 11 0
DS | начальный адрес сегмента | 0 0 0 0 | ||
+ | 15 0
смещение внутри сегмента | |||
19 0 физический адрес ячейки памяти | ||||
Ячейка памяти – это неделимый в данный момент набор последовательных битов.
Команда XCHG - обмен значений операндов. Синтаксис команды:
xchg<операнд1>, <операнд2>
В качестве операндов может выступать регистр или значение в памяти. Разумеется, одновременно два значения памяти менять нельзя. Операнды могут быть любого размера.
Команда ADC - сложение с учётом флага переноса. Синтаксис команды полностью идентичен синтаксису команды ADD. Отличие команды ADC от команды ADD заключается только в том, что команда ADC после выполнения сложения прибавляет к результату значение флага CF, т. е. если этот флаг выставлен, то происходит инкремент результата.
Команда LEA - загрузка эффективного адреса. Синтаксис команды:
lea<регистр>, <переменная>
Команда загружает адрес переменной в регистр общего назначения. В целом без этой команды можно обойтись, но в некоторых случаях она бывает очень полезна. С помощью этой команды можно произвести некоторые вычисления, которые обычно делаются в два этапа; например, после выполнения этой команды leaeax, [ebx + ebx * 4] в ЕАХ мы получим значение из ЕВХ, умноженное на 5. Наиболее полезной команда LEA будет в следующем случае:
leaесх, [edx + 4]; после выполнения этой команды в регистр ЕСХ будет помещено значение EDX, увеличенное на 4 - таким образом, мы заменяем одной командой LEA пару команд MOV/ADD.
Команда PUSHF - сохранение регистра флагов в стеке. Эта команда сохраняет первые 2 байта регистра флагов в стеке. В защищённом режиме эта команда сохраняет 4 байта регистра флагов в стеке, и она уже называется PUSHFD, но опкод такой же. Соответственно команда PUSHFQ сохраняет 8 байт регистра флагов в стеке.
Работа со стеком
Стек – это область памяти, запись и чтение данных, в которой основаны на принципе LIFO (Lastinputfirstoutput).
|
Последовательность данных, которая загружается в стек, может быть считанав обратном порядке.
В ПЭВМ стек используется для временного хранения данных, необходимых для программ и процедур, для передачи параметров в процедуры и для хранения некоторых промежуточных данных.
Считывание и загрузка в стек осуществляется двухбайтовыми словами.
Для стека можно отвести любую область памяти, но к ней предъявляются 2 требования:
-максимальная емкость 64КБ (32К слов),
-конечный адрес должен быть кратным 16 (параграф).
Таким образом, стек представляет собой один сегмент памяти, называемый сегментом стека. Для него используется сегментный регистрSS, указывающим на его начало, т.е. базу стека. Для работы со стеком обычно используется косвенная адресация через указатель стека SP.
Физический адрес, формируемый парой SS:SPназывается вершиной стека.
|
|
|
Считывание числа из стека сопровождается автоматическим инкрементом указателя стека: SP:=SP+2, причем считается, что ячейка стека, содержащая считанное число свободна, но ее содержимое остается без изменения до следующей засылки в стек.
Длядополнительного произвольного обращения к элементам стека (не через вершину) можно использовать регистр ВР, называемый дополнительным указателемстека.
Доступ к элементам стека через BPосуществляется на основе определения расстояния от нужного слова до вершины стека и базовой адресации.
Например:
MOVBP,SP; BP:=SP
MOVAX,[BP+4] ; эквивалентно MOVAХ,SS:[BP+4]
Примечание: ВР по умолчанию относится к сегменту стека, а не к сегменту данных.
Если в программе нет явного использования стека, то необходимо его зарезервировать в объеме 128Б для автоматического использования.
Стековые команды
а) PUSHop; запись слова в стек, флаги не модифицируются
ор – может быть словом в регистре (в том числе и в сегментном) или в ячейке памяти, но не непосредственный операнд.
Алгоритм выполнения:
- декремент SP:=SP–2;
- пересылка содержимого ор на сводную ячейку стека с адресом[SS:SP] в польской инверсной записи (LEM).
|
Пример:
PUSHAX
Примечание:
-SPиспользуется по умолчанию;
- записывать можно только слово;
|
- Если стек меньшего размера, то при полном его заполнении каждоеследующеезаполнение разрушает область памяти вне стека.
б) РОР ор; чтение слова из стека
ор может быть регистром, в том числе сегментным регистром (кроме CS) или ячейка памяти.
Пример,
POPCX
Примечание:
Если пытаться считывать из пустого стека, то ошибка не фиксируется, а считывается слово, следующее за сегментом стека.
в) PUSHF; копирование слова из регистра FLAGSв стек
POPF;копирование слова из стека в регистр FLAGS
Операнд отсутствует. Эти команды флаги не модифицируют, но позволяют сменить флаг TF.
Чтобы изменить TF, нужно выполнить PUSHF, затем изменить 8-й бит;
POPF–измененное состояние вернуть в регистр флагов.
|
|
Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой...
Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!