2. В ней иначе вычисляется длина сооб­щения. До сих пор мы использовали оператор SIZE0F. Но можно заставить ас­семблер вычислять размер по-другому. Для этого сразу за сообщением объяв­ляется переменная, в которой хранится разница между текущим адресом (он обозначается значком $) и адресом начала сообщения. Например, число zsize, заданное строками:

z BYTE "равно нулю".13.10

zsize DWORD ($-z)

равно 12, потому что таково расстояние в байтах между метками z и zsize (убе­дитесь в этом сами). Это расстояние ассемблер вычисляет во время компиляции программы.

Регисры

Стековая адресация.

Операнд находится в одном из регистров общего применения R0..R7 банка, адрес какового вычисляется разрядами RSO, RS1 реестра PSW. Номер списка определяется двумя меньшими битами байта синтаксиса операции. Стековая нумерацмя позволяет в единственном бите вносить предписание операции и номер операнда. Потому что компонент операции находится в невидимой части, не применяет конструкций входа к переферийной базе данных.

Быстрая нумерация.

Компонент операции существует в скрытой памяти данных, порядковый номер узла определяет одиночный байт команды. Так, операции с использованием эффективной нумерации используют как минимум три бита, используются только 256 хранилищь, указания переменной к внешней памяти не требуется.

Не прямо-стековая нумерация.

Этот метод нумерации применяет реестры R0 и R1 в качестве адресов. Списки применяются из банка, устанавливаемого разрядами RSO, RS1 реестра PSW. Данные этих реестров употребляются как указатели для доступа к указателю скрытой базы данных, хранящей переменную. Процедура становится многобайтной, число реестра указывает меньший байт.Объем процедуры при этом соответствует объему команды с использованием стековой нумерации, нокосвенная адресация предоставляет доступ ко всему пространству внутренней базы данных.


назад далее