Операции доступа к памяти. Коды ASCII символов.
И команды программ, и данные, являющиеся операндами этих команд, хранятся в памяти. Для выполнения команды управляющие схемы процессора должны инициировать пересылку содержащего ее слова или слов из памяти в процессор.
Операнды и результаты также должны пересылаться между памятью и процессором. Таким образом, для выполнения команды программы необходимо произвести две операции с памятью: Load (или Read, или Fetch), то есть загрузка (или чтение, или выборка соответственно) и Store (или Write), то есть сохранение (или запись).
Операция загрузки пересылает в процессор копию содержимого памяти по заданному адресу. При этом содержимое памяти остается неизменным. Для того чтобы начать операцию загрузки, процессор отсылает в память адрес и запрашивает содержимое памяти по этому адресу. Память считывает соответствующие данные и пересылает их в процессор.
Операция сохранения пересылает элемент информации из процессора в память по заданному адресу, уничтожая предыдущие данные, хранившиеся по этому адресу. Для выполнения такой операции процессор отсылает в память данные и адрес, по которому они должны быть записаны.
Информацию из одного слова или одного байта можно переслать между процессором и памятью за одну операцию. Как рассказывалось в раньше, процессор содержит небольшое количество регистров, вмещающих по одному слову. Эти регистры служат либо источниками, либо приемниками данных, пересылаемых в память и из памяти. Пересылаемый байт обычно располагается в младшей (крайней справа) позиции в регистре.
|
|
Пример доступа к памяти персонального компьютера.
Механизм доступа к памяти персонального компьютера на базе процессора Intel рассмотрим на примере того же фрагмента программы, который приводился в предыдущей лекции.
¼
mov bx,loca ;загрузка содержимого поля данных с именем loca в регистр
add ax,bx ;сложение содержимого двух регистров ax и bx,
¼ ;результат помещается в ax
Вся память компьютера делится на сегменты, и для размещения в памяти компьютера любой программы ей выделяется необходимое количество сегментов памяти. Адреса начала каждого сегмента (индекс в таблице дескрипторов) хранятся в специальных сегментных регистрах. Программа, фрагмент которой приведен выше, использует два сегмента памяти:
- сегмент кода, в котором расположены выполнимые команды программы;
- сегмент данных, в котором расположены обрабатываемые данные программы.
На рис.4.9. приведено расположение программы в памяти компьютера. Программа расположена в двух сегментах, сегменте кода и сегменте данных. Команды и данные располагаются в своих сегментах непрерывно, начиная с нулевого адреса (смещения).
|
|
Сегмент кода | Сегмент данных | |||
Адресация внутри сегмента (смещение относительно начала) | Содержимое памяти (коды команд) | Адресация внутри сегмента (смещение относительно начала) | Содержимое памяти (двоичные чисела) | |
0000 | 0000 | |||
0004 | 0004 | |||
¼ | 0008 | |||
¼ | ||||
03D8 | 8B 1E 00 42 | |||
03DC | 03 C3 | 0042 | FF F6 (-1010) | |
03DE | Следующая команда | 0044 | FF FF FF FB (-510) | |
¼ | 0048 | |||
¼ | ||||
Рис 4.9.Расположение программы в памяти персонального компьютера
Команды загружаются в процессор для выполнения в соответствии с адресами, которые формируются регистре PC (Program Counter). Команда mov загружается из памяти в процессор на основании содержимого регистра PC, который формируется при выполнении предыдущей команды. Там она попадает в регистр IR (Instruction Regisetr) процессора. Адрес в регистре PC сформирован с использованием двух адресов:
- адреса начала сегмента кода;
- адреса внутри сегмента (смещения относительно начала), в нашем случае этот адрес в сегменте равен 03D8h.
|
|
Команда mov осуществляет обращение к памяти в сегмент данных для загрузки в регистр bx числа -1010 (FFF6h). Адрес памяти, по которому находится требуемое данное, помещается в регистр MAR (Memory Address Register) в результате расшифровки кода команды. Адрес в регистре MAR в данном случае также формируется на основании двух адресов:
- адреса начала сегмента данных;
- адреса внутри сегмента (смещения относительно начала), в нашем случае этот адрес в сегменте равен 0042h.
После этого дается команда памяти доставить данное число, и оно через регистр MDR (Memory Data Register) попадает в регистр bx процессора.
В процессе выполнения этой команды PC формируется адрес следующей команды, которая будет загружена в следующем такте процессора.
Вопросы для самопроверки.
Дата добавления: 2018-02-18; просмотров: 503; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!