Обработка данных из оперативной памяти




Оператор записи данных в память DATA

Данные можно записывать в память напрямую, используя оператор DATA.

 

Пример:

data 3132

data FFFF

И выполним сборку, нажав Ctrl+F9.

 

 

В окне Отладчика мы видим, что процессор распознал введённые данные как две команды:

Mov R3, R2

Stop

 

Такой процесс преобразования числовых кодов команд в их символьное обозначение называется дисассемблирование (или разборка).

Любая машинная команда в ЛамПанели состоит из целого числа 16-битных слов, то есть из чётного числа байт. Поэтому в окнах отладчика и данных в памяти нумерация ячеек содержит только чётные адреса (команда не может начинаться с ячейки, имеющей нечётный адрес. При этом данные записаны в память как два машинных слова (4 байта).

Рассмотрим окно Данные в памяти. Мы видим, что байты слова 313216 расположены в ней наоборот, – сначала младший 3216, а затем старший 3116.

Кроме того, в правой части окна видно, что эти коды соответствуют символам 21яя.

Все специальные коды (не соответствующие каким-то принятым изображениям символов) обозначены точками.

Таким образом, компьютер, основанный на фоннеймановской архитектуре, не может самостоятельно различить, где данные, а где команды.

 

Служебный регистр PC (Program Counter register)

 

Выполним программу из примера в пошаговом режиме. После первого шага в регистр PC записывается 0 – это стартовый адрес, с которого начинается выполнение программы.

 

В отладчике зелёным цветом выделена первая команда. Она ещё не выполнялась, но будет выполнена на следующем шаге.

После выполнения первой команды в регистр PC записывается число 2 – это начало следующей команды, которая теперь в отладчике выделена зелёным цветом.

Отсюда мы делаем вывод, что регистр PC всегда содержит адрес следующей команды.

 

Основные выводы:

ü Процессор воспринимает байты, расположенные по определённому адресу как код команды (а не как данные);

ü Программа всегда начинает выполняться некоторого известного адреса, который “вшит” в компьютер и автоматически заносится в регистр PC;

ü Программа останавливается, когда выполняется код FFFF16 – команда STOP.

Обработка данных из оперативной памяти

 

Для того чтобы обрабатывать данные из оперативной памяти, процессор должен загрузить их в регистры. Поскольку программа и данные расположены в одной области памяти, размещать данные можно сразу после команды STOP.

 

Пример:

***

stop

d:

data 1234

Здесь метка d нужна для того, чтобы было удобно загружать адрес блока данных в регистр.

Пример:

mov @d, R0; загрузка адреса метки d в регистр R0

Можно считать, что d – это переменная программы. После этого легко загрузить в регистр данные из памяти.

 

Пример:

mov (R0), R1; загрузка данных в регистр R1, адрес которых записан в регистре R0

Команда (R0) буквально значит следующее: «Значение, находящееся в памяти по адресу, записанному в регистре R0 ».

Это так называемый косвенный способ адресации, когда регистре находится адрес данных, а не конкретное значение.

 

Аналогично можно изменить содержимое ячейки памяти.

 

Пример:

mov R2, (R0); запись данных из R2 в ячейку, адрес которой записан в регистре R0

Замечание

Таким образом можно сразу обращаться к любой ячейке памяти, поэтому такой вид памяти называют памятью с произвольным доступом (от англ. RAM – Random Access Memory).

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-04-14 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: