Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой...
Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
Топ:
Методика измерений сопротивления растеканию тока анодного заземления: Анодный заземлитель (анод) – проводник, погруженный в электролитическую среду (грунт, раствор электролита) и подключенный к положительному...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Оценка эффективности инструментов коммуникационной политики: Внешние коммуникации - обмен информацией между организацией и её внешней средой...
Интересное:
Мероприятия для защиты от морозного пучения грунтов: Инженерная защита от морозного (криогенного) пучения грунтов необходима для легких малоэтажных зданий и других сооружений...
Берегоукрепление оползневых склонов: На прибрежных склонах основной причиной развития оползневых процессов является подмыв водами рек естественных склонов...
Уполаживание и террасирование склонов: Если глубина оврага более 5 м необходимо устройство берм. Варианты использования оврагов для градостроительных целей...
Дисциплины:
2022-10-04 | 27 |
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–измененное состояние вернуть в регистр флагов.
|
|
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...
Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...
Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!