RESTORE [line] (1.13)

Где: Line — номер строки (или метка), которым помечена команда DATA. По этой команде указатель читаемых данных помещается в начало списка констант соответствующей команды DATA. По умолчанию номера и в начале работы интерпретирующей программы этот указатель помещается в начало списка самой первой команды DATA.

Запись значений в ОЗУ (в том числе и после их обработки центральным процессором) обеспечивается оператором присваивания:

[LET] variable =

{constant! cons tan tname I variablnaae ¦ expression} ('1-14)

Следует обратить внимание на то, что эта формула не является алгебраическим уравнением. Знак равенства в команде означает присвоение значения, получаемого в правой части синтаксической формулы переменной обозначенной в левой части (то есть запись этого значения в ОЗУ по адресу переменной) variable .

При этом значение в правой части может быть получено чтением данных из текста программы (так называемый «литерал» или буквальная запись присваиваемого значения) constant, чтением данных из ОЗУ по адресу обозначенной в правой части константы constantname, переменной variablename, или вычислением выражения (для чего также читаются данные из ОЗУ) expression. В правой части синтаксической формулы могут быть использованы любые переменные в том числе и та переменная, которой присваивается новое значение.

Для чтения значения переменной из ОЗУ с целью его использования в выражении, функции или процедуре достаточно записать ее идентификатор в соответствующей конструкции языка.

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

SWAP variablel, variable2. (1.15)

Где: variablel и variable2—две переменные одинакового типа.

Следует особо остановиться на том случае, когда некоторому объекту программы вследствие какой-либо ошибки программиста не присвоено никакого значения. Для числового типа в ОЗУ будет записан 0, а для строкового — ничто (строка нулевой длины). То, что интерпретатор не проверяет факт присвоения значений всем объектам программы, является его досадным недостатком. Отыскать ошибки такого рода, не зная этой особенности QBasic, бывает очень трудно, а исправить — проще простого.

Как видите, команды чтения из ОЗУ и записи в ОЗУ на языках высокого уровня записываются достаточно просто. Тем не менее некоторым программистам могут потребоваться средства как для определения адресов, так и для чтения и записи по адресам ОЗУ. В IBM совместимых компьютерах при обращении к ОЗУ необходимо указать две составляющие адреса: значение сегмента и значение смещения. Получение этих кодов по идентификатору обеспечивается двумя встроенными функциями: