
- •Системное программное обеспечение
- •Способы адресации данных
- •Способы адресации данных
- •Способы адресации данных
- •Структура программы на языке Ассемблер
- •Структура программы на языке Ассемблер
- •Структура программы на языке Ассемблер
- •Структура программы на языке Ассемблер
- •Структура программы на языке Ассемблер
- •Структура программы на языке Ассемблер
- •Структура программы на языке Ассемблер
- •Структура программы на языке Ассемблер
- •Структура программы на языке Ассемблер
- •Структура программы на языке Ассемблер
- •Структура программы на языке Ассемблер
- •Структура программы на языке Ассемблер
- •Структура программы на языке Ассемблер
- •Структура программы на языке Ассемблер
- •Структура программы на языке Ассемблер
- •Структура программы на языке Ассемблер
- •Структура программы на языке Ассемблер
- •Структура программы на языке Ассемблер
- •Структура программы на языке Ассемблер
- •Системное программное обеспечение
- •Система команд процессора 8086
- •Команды передачи данных
- •Команды передачи данных
- •Арифметические команды
- •Арифметические команды
- •Арифметические команды
- •Арифметические команды
- •Логические команды
- •Логические команды
- •Команды управления потоком вычислений
- •Команды управления потоком вычислений
- •Команды управления потоком вычислений
- •Команды управления потоком вычислений
- •Команды управления потоком вычислений
- •Команды управления процессором
- •Команды управления процессором
- •Команды обработки строк
- •Команды обработки строк
- •Команды обработки строк
- •Команды обработки строк
- •Системное программное обеспечение
- •Расширение системы команд в процессоре 80286
- •Расширение системы команд в процессоре 80286
- •Расширение системы команд в процессоре 80286
- •Расширение системы команд в процессоре 80286
- •Расширение системы команд в процессоре 80286
- •Расширение системы команд в процессоре 80286
- •Расширение системы команд в процессоре 80286
- •Расширение системы команд в процессоре 80286
- •Расширение системы команд в процессоре 80286
- •Расширение системы команд в процессоре 80286
- •Расширение системы команд в процессоре 80286
- •Расширение системы команд в процессоре 80286
- •Расширение системы команд в процессоре 80286
- •Расширение системы команд в процессоре 80386
- •Расширение системы команд в процессоре 80386
- •Расширение системы команд в процессоре 80386
- •Расширение системы команд в процессоре 80386
- •Расширение системы команд в процессоре 80386
- •Расширение системы команд в процессоре 80386
- •Расширение системы команд в процессоре 80386
- •Расширение системы команд в процессоре 80386
- •Расширение системы команд в процессоре 80386
- •Расширение системы команд в процессоре 80386
- •Расширение системы команд в процессоре 80386
- •Расширение системы команд в процессоре 80386
- •Расширение системы команд в процессоре 80386
- •Расширение системы команд в процессоре 80386
- •Расширение системы команд в процессоре 80386
- •Расширение системы команд в процессоре 80386

Расширение системы команд в процессоре 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 - вывести строку двойных слов в порт.
