Мониторинг обменных курсов валют
18c0693f

Дополнительные инструкции работы с битами полей


Турбо Ассемблер может генерировать специальные последова- тельности инструкций для задания значений и извлечения значений из битовых полей, заданных с помощью оператора RECORD. Это позво- ляет вам писать код, независимый от фактического расположения по- ля в записи. При использовании их в сочетании с оператором ENUM, записи на языке ассемблера могут получить очень высокий уровень модульности. Список данных инструкций приведен в следующей табли- це:

Инструкции для установки и извлечения значения Таблица 13.5 ----------------T-----------------------------------------------¬ ¦ Инструкция ¦ Функция ¦ +---------------+-----------------------------------------------+ ¦ SETFIELD ¦ Устанавливает значение поля записи. ¦ ¦ ¦ ¦ ¦ GETFIELD ¦ Извлекает значение из поля записи. ¦ L---------------+------------------------------------------------

Инструкция SETFIELD

Инструкция SETFIELD генерирует код, устанавливающий значение поля записи. Она имеет синтаксис:

SETFIELD имя_поля регистр/память_приемник, регистр_источник

где "имя_поля" - имя поля записи, "регистр/память_приемник" для SETFIELD представляет собой регистр или адрес в памяти типа BYTE или WORD (DWORD для процессора 80386). "Регистр_источник" должен быть регистром того же или меньшего размера. Если источник мень- ше, чем приемник, то регистр-источник должен быть младшей частью другого регистра, имеющего тот же размер, что и приемник. Этот полный регистр называется рабочим регистром. Используйте данный регистр для сдвига значения в регистре-источнике, благодаря чему оно выравнивается по приемнику. Например:

FOO RECORD R0:1,R1:4,R2:3,R3:1 . . . SETFIELD F1 AX,BL ; рабочим регистром является BX SETFIELD F1 AX,BH ; недопустимо!

SETFIELD сдвигает регистр-источник, чтобы эффективно выров- нять его на поле приемника, выполняет операцию OR и помещает ре- зультат в регистр-приемник.

Примечание: Операция SETFIELD уничтожает все содержи- мое рабочего регистра.

Чтобы выполнить свою функцию, инструкция SETFIELD генерирует эффективную и расширенную последовательность инструкций XOR, XCHG, ROL, ROR, OR и MOVZX.

Операция SETFIELD не пытается очистить целевое поле перед выполнением над его значением операции OR. Если это необходимо, вы можете очистить поле явным образом, используя инструкцию MASKFLAG.






Самый выгодный курс обмена валюты