Вопрос 8. Ассоциативная организация: регистровая косвенная адресация со смещением
Этот вид адресации является дополнением предыдущего и предназначен для доступа к данным с известным смещением относительно некоторого базового адреса. Этот вид адресации удобно использовать для доступа к элементам структур данных, когда смещение элементов известно заранее, на стадии разработки программы, а базовый (начальный) адрес структуры должен вычисляться динамически, на стадии выполнения программы. Модификация содержимого базового регистра позволяет обратиться к одноименным элементам различных экземпляров однотипных структур данных.
К примеру, команда mov ax,[edx+3h] пересылает в регистр ах слова из области памяти по адресу: содержимое edx + 3h.
Команда mov ax,mas[dx] пересылает в регистр ах слово по адресу: содержимое dx плюс значение идентификатора mas (не забывайте, что транслятор присваивает каждому идентификатору значение, равное смещению этого идентификатора относительно начала сегмента данных).
Вопрос 9. СТЕКОВАЯ ПАМЯТЬ
Стековая память также как и ассоциативная, является безадресной, она представляет собой совокупность ячеек, образующих одномерный массив, в котором соседние ячейки связаны друг с другом разрядными цепями передачи слов. Запись слов всегда производится в верхнюю нулевую ячейку. При этом все ранее записанные слова сдвигаются вниз на одну ячейку.
Слово, находившееся ранее в 0-ой ячейке, переходит в 1-ую, из 1-ой во 2-ую и так далее.
Чтение также производится из верней ячейки. Если чтение производится с удалением слова из стека ячейки с меньшим номером. В такой последовательности порядок чтения слов соответствует правилу: «последним поступил – первым обслужен». Чтение производится в порядке обратном порядку записи.
На практике часто стековую память организуют, используя обычную адресную память. Архитектура большинства ЭВМ позволяет легко организовать стеки с так называемой скользящей вершиной.
При записи в стек байта или слова используется команда с адресацией типа «автодекрементная прямая». Выполняя такую команду, процессор автоматически уменьшает УС на единицу и только после этого записывает байт или слово.
Таким образом, при записи слова указатель вершины стека УС будет смещаться вверх на 2 байта, указывая всегда на ячейку ОЗУ, в которой записано последнее слово.
При чтении информации из стека необходимо использовать команды с адресацией типа «автоинкрементная прямая». Выполняя такую команду, процессор вначале читает байт или слово из ОЗУ по адресу, содержащемуся в УС, и только после этого увеличивает содержимое УС на 1 и 2, указывая на ячейку, в которой находится следующий байт или слово. Таким образом, в свободной области памяти можно организовать стек со скользящей вершиной.
Do'stlaringiz bilan baham: |