Логика вычислений и организация памяти


Главная / ЭКВМ / Техническая информация / РЭ

3.3. Логика вычислений и организация памяти

 

3.3.1. Логика вычислений

ЭВМ оперирует с числами, представленными в десятичной позиционной системе счисления в естественной форме или в форме с плавающей запятой.

Для обработки чисел в ЭВМ принята обратная бесскобочная логика вычислений, предложенная польским математиком Лукасевичем. Ее характерными особенностями являются:

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

Стеком называется группа регистров памяти магазинного типа. Последнее записанное в стек число считывается из него первым. Передвижение чисел в регистрах стека осуществляется автоматически.

Пример: Выражение a ↑ b ↑c ↑ d + × ÷, где символ ↑ обозначает ввод числа в стек, эквивалентно алгебраическому выражению a/(b+(c*d)).

 

3.3.2. Стек

Стек ЭВМ состоит из специальных регистров памяти: X, Y, Z, T. Регистры стека X и Y являются операционными. Регистры Z и T используются для промежуточного хранения результатов вычислений. Регистр предыдущего результата X1 является вспомогательным и предназначен для хранения значения регистра X, существовавшего до выполнения операции. Далее регистр X1 будет рассматриваться как один из регистров стека.

Стек ЭВМ автоматически смещается при вводе чисел и при выполнении операций. В автоматическом режиме калькулятора содержимое всех регистров стека, кроме X1, выводится на индикатор.

При вводе числа или при чтении его из регистра памяти вводимое значение записывается в регистр X.

При выполнении одноместной операции ЭВМ выполняет действие с числом, находящимся в регистре X. При этом содержимое регистров Y, Z и T не изменяется. Число, находившееся до выполнения операции в регистре X, передается в регистр предыдущего результата X1. Результат одноместной операции передается в регистр X.

Таблица 1

Регистр Значение до выполнения команды Значение после выполнения команды
T t t
Z z z
Y y y
X x f(x)
X1 x1 x

При выполнении двухместной операции ЭВМ выполняет действие с числами, находящимися в регистрах X и Y. При этом в регистр Y переносится содержимое регистра Z, в регистр Z - содержимое регистра T. Значение регистра T не изменяется. Число, находившееся до выполнения операции в регистре X, передается в регистр предыдущего результата X1. Результат двухместной операции передается в регистр X.

Таблица 2

Регистр Значение до выполнения команды Значение после выполнения команды
T t t
Z z t
Y y z
X x f(x,y)
X1 x1 x
 

3.3.3. Регистры памяти и типы адресации

Регистры памяти позволяют ЭВМ организовывать работу с информацией. Каждый регистр имеет собственный номер (рис. 5), который позволяет идентифицировать размещенные в памяти данные (регистры данных) или обращаться к функциям ЭВМ (регистры функций). В каждом регистре в определенный момент времени может храниться только одно значение.

Регистры памяти с номерами от 0 до 999 используются для хранения десятичных данных, представленных в форме с естественной или плавающей запятой.

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

Регистры памяти с номерами от 1000 до 8167 используются для хранения байтовых данных. При записи в эти регистры чисел с естественной или плавающей запятой выполняется выделение целой части числа и его приведение к диапазону от 0 до 255. При считывании байтовые значения преобразуются в целые числа в указанном диапазоне.

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

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

Регистры памяти с номерами от 9000 до 9999 применяются для доступа к функциям ЭВМ.

Адресное пространство регистров памяти МК-152

Рис. 5. Регистры памяти ЭВМ.

Регистровая адресация может быть выполнена к регистрам с номерами от 0 до 14. При этом способе адресации номер используемого регистра является составной частью кода команды. При использовании в таких командах регистры с номерами от 10 до 14 имеют наименования A, B, C, D и E соответственно.

Прямая адресация может быть выполнена ко всем регистрам памяти. При этом способе адресации номер используемого регистра записывается непосредственно после кода команды. Для прямого обращения к регистрам могут использоваться команды с диапазоном задания номера от 0 до 99 или от 0 до 9999, которые имеют различную длину.

Косвенная адресация также может быть выполнена ко всем регистрам памяти. Номер регистра, к которому производится косвенное обращение, записывается в адресные регистры с номерами от 0 до 99.

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

При косвенном обращении с регистровой адресацией через регистры с номерами от 0 до 6 перед обращением происходит дополнительное изменение содержимого этих регистров. При использовании регистров от 0 до 3 происходит косвенная адресация с предварительным автодекрементированием, то есть вычитание числа 1 из содержимого адресного регистра перед выполнением обращения к памяти. При использовании регистров от 4 до 6 - косвенная адресация с предварительным автоинкрементированием, то есть прибавление числа 1 к содержимому адресного регистра перед выполнением обращения к памяти. Обращение происходит после изменения содержимого регистра адресации в соответствии с полученным значением.

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

В дальнейшем описанное выше изменение содержимого регистра адресации при косвенном обращении называется модификацией.

Данные, введенные пользователем в регистры памяти с клавиатуры ЭВМ, сохраняются в энергонезависимой памяти и восстанавливаются после выключения и последующего включения питания. Также возможно сохранение содержимого регистров данных в энергонезависимой памяти средствами программы пользователя.

Далее при записи команд используются обозначения: M - регистр памяти от 0 до E (от 0 до 14) в командах с непосредственной адресацией, MM - регистр памяти от 0 до 99 и MMMM - регистр памяти от 0 до 9999 в командах с прямой адресацией.

 

3.3.4. Память программ пользователя и типы адресации

В ЭВМ принята десятичная система адресации памяти. Память программ состоит из 10000 ячеек, в каждую из которых записан один байт. Программа состоит из отдельных команд. Каждая команда имеет длину от одного до трех байт.

Местонахождение команды в памяти программ определяется адресом, который может принимать значения от 0 до 9999. Для управления выполнением программы в ЭВМ имеется счетчик адреса. В нем хранится адрес текущей исполняемой или записываемой команды.

Часть команд переходов, циклов и подпрограмм использует страничную адресацию памяти программ. При использовании механизма страничной адресации память разбита на 100 страниц по 100 байт на каждой странице. Запись программ на электронный диск и считывание с него также выполняется постранично.

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

Память программ ЭВМ циклически замкнута. После выполнения команды по адресу 9999 происходит автоматический переход к адресу 0000. Переход к адресам памяти вне указанного диапазона вызывает останов программы и выдачу сообщения об ошибке.

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

При использовании прямой короткой адресации происходит переход внутри страницы, на адрес от 0 до 99, указанный в команде. Текущий номер страницы при этом не изменяется.

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

Использование прямой короткой адресации позволяет создавать перемещаемые программы и подпрограммы, которые могут быть исполнены после загрузки в любую страницу памяти.

Примечание. Таким образом обеспечивается совместимость ЭВМ с существующим программным обеспечением, разработанным для программируемых калькуляторов Б3-34, МК-52, МК-61 и других аналогичных. В памяти ЭВМ может одновременно храниться до 100 программ данного типа и любая из них может быть запущена на выполнение.

При использовании команд прямой расширенной адресации возможен переход на произвольный адрес в диапазоне от 0 до 9999. При этом происходит изменение текущего номера страницы. Например, при использовании в командах перехода адресов от 0000 до 0099 происходит переход к адресам на нулевой странице.

Команды, использующие косвенную адресацию, обеспечивают переход на произвольный адрес в диапазоне от 0 до 9999. Для хранения адреса используются регистры с номерами от 0 до 99. При косвенном обращении содержимое этих регистров модифицируется так же, как и при косвенной адресации регистров памяти.

В памяти программ могут храниться неизменяемые данные пользователя, такие как текстовые строки, графические изображения, команды для устройств, или любые другие, которые могут быть представлены в виде последовательности байтов. Байтовые значения считываются из памяти программ в стек при помощи специальной команды ("К ИПРГ") или с использованием регистров функций. Запись или изменение значений в памяти программ средствами программы пользователя не выполняются.

Далее при записи адресов в командах используются обозначения: NN - короткий адрес от 0 до 99 в пределах страницы, NNNN - расширенный адрес от 0 до 9999.

 

3.3.5. Адресация с использованием шестнадцатиричных значений

В памяти программ хранятся байты, соответственно коды команд и адреса представлены в виде шестнадцатиричных чисел. Значения десятичных адресов и номеров регистров в командах с прямой адресацией хранятся в программе в одном или двух байтах в упакованном BCD формате. При этом в записи десятичных значений адресов и номеров регистров используются только те шестнадцатиричные числа, цифры в которых принимают значения от 0 до 9.

Если в команде перехода или при обращении к регистру в поле команды с прямой адресацией тем или иным способом записано шестнадцатиричное значение с цифрами от A до F, то адрес перехода или номер регистра вычисляются особым образом.

Значение шестнадцатиричной цифры умножается на вес десятичного разряда, после чего полученные для каждой цифры значения складываются, образуя десятичный эквивалент записанного в команде значения.

Например, шестнадцатиричное значение 0ABh эквивалентентно десятичному 111, поскольку 0Ah*10 + 0Bh = 10*10+11=100+11=111. Здесь и далее символ 'h' после числа указывает на шестнадцатиричное представление.

Если полученное значение эквивалентно допустимому десятичному адресу или номеру регистра, то действия команд с использованием шестнадцатиричного и эквивалентного десятичного значения не отличаются.

При выходе значения адреса за границу 9999 при выполнении команды перехода формируется сообщение об ошибке. При обращении к номеру регистра свыше 9999 никаких действий не выполняется.

Применение команд с прямой короткой адресацией со значениями адреса от 9Ah до 0FFh позволяет выполнять переход на адреса, расположенные на следующей странице. Применение команд с косвенной адресацией с аналогичными значениями номера регистра позволяет использовать в качестве адресных регистры с номерами от 100 до 165.

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

Примечание. Не следует использовать в программах данную особенность без необходимости.


НПП "СЕМИКО" (383) 271-01-25 (многоканальный)