Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции / Лекция № 4 Способы адресации данных Структура программы на языке Ассемблер.ppt
Скачиваний:
7
Добавлен:
07.08.2024
Размер:
1.91 Mб
Скачать

Расширение системы команд в процессоре 80386

popfd

(POP eFlags Double word register from the stack — извлечение расширенного регистра флагов из стека)

Извлекает из стека содержимое регистра флагов eflags. Действие на флаги аналогично командам pushf и popf с

учетом 32-разрядного расширения. 5. Set-команды

Набор команд, общий синтаксис которых, может быть представлен следующим образом:

setcc dest

(byte SET on condition — установка байта по условию)

Расширение системы команд в процессоре 80386

Установка приемника (байтового регистра или ячейку памяти) логическим значением (0 или 1) в зависимости от истинности условия, заданного модификатором кода операции cc. Окончание cc у set такие же, как и у команд условного перехода: seta, setae, setb, setbe и т.д.

Пример:

;подсчитать число единичных битов в регистре ax

 

mov

cx,16

 

mov

bh,0

m1:

rol

ax,1

 

setc

bl

 

add

bh,bl

 

clc

 

 

loop

m1

Расширение системы команд в процессоре 80386

6. Сдвиги двойной точности

shld dest, src, cnt

(SHift Left Double word — cдвиг двойного слова влево)

Первый операнд определяет приемник результата и может быть регистром слова либо двойного слова или ссылкой на память. Второй операнд, который должен быть регистром слова или двойного слова, содержит биты, сдвигаемые в первый операнд. Сам он при этом не меняется. Третий операнд представляет собой число битов, которые надо сдвинуть влево. Этот операнд может быть конкретной величиной от 0 до 31 или же регистром cl.

shrd dest, src, cnt

(SHift Right Double word — cдвиг двойного слова вправо) То же самое, что shld, только сдвиг вправо.

Расширение системы команд в процессоре 80386

Два двойных слова, vl и v2, образуют в памяти 64-битовую переменную. Только четыре инструкции требуются для сдвига этой переменной влево на любое число битов — в данном примере­ на 8. Прежде всего в cl загружается счетчик сдвига. Затем вторая часть значения загружается­ в еах. Инструкция shld сдвигает биты из еах в v1, которое также сдвигается влево равное число раз. Инструкция shl завершает сдвиг, сдвигая v2 в соответствии с этим же счетчиком, хранящимся в cl. Эффективным ре­ зультатом является умножение за очень короткий промежуток времени полного 64-битового значения двойной точности на 28 (256 десятичное).

Расширение системы команд в процессоре 80386

7. Команды обработки строк Во все примитивы команд обработки строк процессоров 8086

и 80286 добавлются команды для работы со строками, состоящими из двойных слов:

movsd – копировать строку двойных слов; cmpsd – сравнение строк двойных слов; scasd – сканировать строку двойных слов; lodsd – загрузить строку двойных слов; stosd – сохранить строку двойных слов; insd – ввести строку двойных слов из порта; outsd - вывести строку двойных слов в порт.