
- •Системное программное обеспечение
- •Способы адресации данных
- •Способы адресации данных
- •Способы адресации данных
- •Структура программы на языке Ассемблер
- •Структура программы на языке Ассемблер
- •Структура программы на языке Ассемблер
- •Структура программы на языке Ассемблер
- •Структура программы на языке Ассемблер
- •Структура программы на языке Ассемблер
- •Структура программы на языке Ассемблер
- •Структура программы на языке Ассемблер
- •Структура программы на языке Ассемблер
- •Структура программы на языке Ассемблер
- •Структура программы на языке Ассемблер
- •Структура программы на языке Ассемблер
- •Структура программы на языке Ассемблер
- •Структура программы на языке Ассемблер
- •Структура программы на языке Ассемблер
- •Структура программы на языке Ассемблер
- •Структура программы на языке Ассемблер
- •Структура программы на языке Ассемблер
- •Структура программы на языке Ассемблер
- •Системное программное обеспечение
- •Система команд процессора 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

Команды обработки строк
3.Команды этой группы обрабатывают строку поэлементно (по одному байту или слову). Адрес текущего элемента строки-приемника ES:[DI], строки-источника DS:[SI]
4.Бит флага направления DF в регистре флагов процессора 8086 определяет направление обработки строк – от начала к концу или от конца к началу, т.е. будут ли значения регистров SI и DI увеличены или уменьшены по завершении выполнения команды манипулирования строками. Если флаг DF равен 0, то значения регистров SI и DI увеличиваются после исполнения каждой команды; если флаг DF равен 1, то они уменьшаются. Если элемент строки - байт, то значение изменяется на 1, если слово – на 2

Команды обработки строк
Команды обработки строк предоставляют возможность выполнения пяти основных операций, называемых примитивами. Каждый примитив представлен тремя разными командами. Первая из них имеет один или два операнда, а две остальные не имеют операндов. Процессор 8086 может исполнять только те команды обработки строк, которые не имеют операндов. При трансляции программы Ассемблер всегда преобразует команду с операндами в одну из команд без операндов.
Эти примитивы (пересылка, сравнение, сканирование, загрузка и сохранение) описаны в таблице

Команды обработки строк

Команды обработки строк


Системное программное обеспечение
Лекция № 6 «Расширение системы команд в процессорах 80286 и 80386»

Расширение системы команд в процессоре 80286
В систему команд процессора 80286 был введен ряд специальных команд, которые можно разбить на следующие группы:
1. Команды для использования компиляторами языков высокого уровня, хотя, безусловно, их можно применять в чисто ассемблерном коде.
bound regW, memDW
Команда bound проверяет, находится ли индекс в заданном диапазоне — и иногда называется проверкой диапазона в языках высокого уровня. Поскольку большинство таких языков выполняет вызов специальных подпрограмм для проверки индексов массивов, использование bound может увеличить скорость программы, сохраняя безопасность проверки диапазонов, которую многие программисты запрещают для увеличения скорости.

Расширение системы команд в процессоре 80286
Команда bound требует два операнда. Первый из операндов должен быть 16-битовым регистром и должен содержать проверяемое индексное значение. Второй операнд - это адрес 32- битового двойного слова в памяти, содержащего младшее и старшее значение диапазона индекса. Если величина первого операнда не входит в установленный диапазон, процессор осуществляет прерывание 5. В программе необходимо установить соответствующую процедуру перехвата и обслуживания этого прерывания.
Прерывание 5 в BIOS – это печать экрана, что приводит к конфликту: если при проверке индекса он оказывается за пределами диапазона, а клавиша <PrtScr> не запрещена, то возникновение ошибки приведет к печати содержимого экрана и будет происходить

Расширение системы команд в процессоре 80286
Эта команда не меняет флаги.
; в сегменте данных |
|
|
||
BoundMas |
|
label |
word |
|
Low_Bound |
dw |
0 |
|
|
Upp_Bound |
dw |
20 |
|
|
mas |
dw |
10 dup (?) |
|
|
; в сегменте кода |
|
|
||
|
xor |
di,di |
;очистка индексного регистра |
|
cycl: |
|
|
|
|
|
mov |
ax,mas[di] |
;перебор элементов массива |
|
|
add |
di,2 |
|
|
|
bound |
di,BoundMas |
|
;если значение в di не будет попадать в границы, то будет вызван
;обработчик прерывания 5, где можно скорректировать
;значение ip в стеке с тем, чтобы выйти
;из бесконечного цикла, например, на метку М2 или
;выполнить другие действия
jmp cycl
М2:

Расширение системы команд в процессоре 80286
enter n, level
Команда предназначена для выделения соответствующего пространства в стеке для локальных переменных процедуры.
Такие переменные динамические — они существуют только во время работы подпрограммы. Эти методы обычно применяются в языках высокого уровня как составная часть их методов использования функций и процедур, но при желании их можно применять и в чисто ассемблерном коде.
Команда enter обычно первая строка процедуры. enter требует двух операндов, каждый из которых должен быть числом. Первый операнд представляет собой число байтов, которые необходимо зарезервировать в стеке. Второй операнд представляет собой уровень вложения процедуры.