Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КС-ZAO / Лекции ЦЭВМруский вариант11.doc
Скачиваний:
188
Добавлен:
07.02.2016
Размер:
15.82 Mб
Скачать

Преобразование данных типа dword или qword

Для преобразования значений со знаком размером в байт в регистре AL в значения со знаком размером в слово и значений со знаком в регистре AL размером в слово в значения со знаком размером в двойное слово в процессоре 80386 предусмотрены соответственно инструкции CBW и CWD. В процессор 80386 добавлены еще две инструкции преобразования, CWDE и CDQ, которые облегчают работу с 32-разрядными регистрами процессора 80386.

Инструкция CWDE преобразует значение со знаком размером в слово, записанное в регистре AX, в значение со знаком размером в двойное слово, так же как инструкция CWD. Различие между этими двумя инструкциями состоит в том, что в то время как CWD помещает 32-разрядный результат в DX:AX, инструкция CWDE помещает помещает 32-разрядный результат в регистр EAX, который можно затем использовать в 32-разрядных инструкциях процессора 80386.

Инструкция CWD преобразует значение со знаком размером в двойное слово в регистре EAX в значение со знаком (8-байтовое) в EDX:EAX.

Сдвиг нескольких слов

Инструкции процессора 80386 SHRD и SHLD, обеспечивают сдвиг на несколько битов двух регистров или регистра и ячейки памяти.

Первый операнд инструкции SHLD - это 16- или 32-разрядный общий регистр или ячейка памяти, для которых нужно выполнить сдвиг. Второй операнд представляет собой 16- или 32-разрядный регистр, в который нужно выполнить сдвиг, а третий операнд - это число битов, на которые нужно осуществить сдвиг. Размеры первого и второго операнда должны совпадать. Третий операнд должен представлять собой непосредственное значение или регистр CL. В последнем случае целевой операнд сдвигается на число битов, определяемый регистров CL.

Инструкция SHRD аналогична инструкции SHLD, однако она выполняет сдвиг из наиболее значащего (старшего) бита в направлении младших битов.

Условная установка битов

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

Проверку в любом из знакомых вам условных переходах можно выполнить с помощью инструкции SET. Инструкция SETNC устанавливает целевой операнд в значение 1, если флаг переноса равен 0, и сбрасывает значение целевого операнда в 0, если флаг переноса равен 1. Инструкция SETS устанавливает приемник, если флаг знака равен 1, и сбрасывает его, если флаг

знака равен 0 и т. д. Операнд инструкции SET может быть 8-битовым общим регистром или 8-битовой переменной в памяти. 16- и 32-разрядные операнды не допускаются.

Загрузка регистров ss, fs и gs

Инструкция процессора 8086 LDS позволяет вам загружать как регистр DS, так и один из общих регистров из памяти в одной инструкции, позволяя, таким образом, очень эффективно устанавливать дальние указатели. Инструкция LES обеспечивает аналогичную возможность, но вместо DS загружает регистр ES. В процессоре 80386 для загрузки дальних указателей добавлены инструкции LSS, LFS и LGS, которые загружают дальние указатели на основе сегментных регистров SS, FS и GS соответственно.

Соседние файлы в папке КС-ZAO