Операции доступа к памяти. Коды 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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!