Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ntjhbz_igjhs.docx
Скачиваний:
22
Добавлен:
17.09.2019
Размер:
82.25 Кб
Скачать

19) Цепочечные команды. Префиксы повторения в цепочечных командах.

Под цепочкой понимается последовательность байт или слов в памяти, а цепочной операцией называется команда, выполняемая над элементом цепочки. Для обработки строковых данных ассемблер имеет пять команд обработки строк:

MOVS переслать один байт или одно слово из одной области памяти в другую;

LODS загрузить из памяти один байт в регистр AL или одно слово в регистр AX;

STOS записать содержимое регистра AL или AX в память;

CMPS сравнить содержимое двух областей памяти, размером в один байт или в одно слово;

SCAS сравнить содержимое регистра AL или AX с содержимым памяти.

Insb считать из входного порта в приемник по адресу [di]

OUTS вывести из источника по адресу [si] в порт.

LODS считать из источника по адресу [si] в AL.

STOS сохранить содержимое AL в приемнике по адресу [di].

Эти команды предполагают, что регистры SI и DI содержат относительные

адреса, указывающие на необходимые области памяти. Регистр SI связан с регистром сегмента данных DS:SI, а регистр DI с регистром дополнительного сегмента ES:DI.

Следовательно, при использовании в программе цепочных команд необходимо инициализировать регистр ES. Цепочные команды выполняются с модификацией индексных регистров, и выполняют действие над одним байтом или словом. Чтобы обеспечить цикл используют префикс повторения REP. Длина цикла заносится в регистр СХ. При выполнении цепочной команды с префиксом REP СХ уменьшается на 1. Таким образом, можно обрабатывать цепочку любой длины. Модификация индексных регистров зависит от состояния флага DF. Флаг направления DF определяет направление повторяющейся операции:

1) если DF=0, то индексные регистры инкрементируются.

2) если DF=1, то индексные регистры декрементируются.

Установка DF осуществляется с помощью команд: CLD (DF:=0) и STD (DF:=1).

20) Команды пересылки данных.

Пересылка данных и адресов:

MOV Пересылка операнда

РUSН Запись операнда в стек

РUSHА Запись в стек содержимого всех регистров

РОР Чтение операнда из стека

РОРА Чтение из стека содержимого всех регистров

ХСНG Обмен между регистрами или памятью и регистром

ХLАТ Преобразование кодов

ВSWАР Перестановка байтов

Ввод-вывод данных:

IN Ввод операнда из порта в аккумулятор

ОUТ Вывод операнда из аккумулятора в порт

Загрузка адреса и селекторов:

LЕА Загрузка эффективного адреса ЕА в регистр

LDS Загрузка селектора в регистр DS

LES Загрузка селектора в регистр ES

LFS Загрузка селектора в регистр FS

LGS Загрузка селектора в регистр GS

LSS Загрузка селектора в регистр SS

Значения признаков при выполнении команд не изменяются.

Команда MOV - пересылка операнда

формат команды: MOV <приемник>,<источник>;

21) Арифметические команды: сложение и умножение двоичных и двоично-­десятичных чисел.

Сложение:

ADD Сложение операндов

ADC Сложение операндов с признаком СF (перенос)

INC Инкремент операнда

AAA ASCII-коррекция результата сложения

DAA Десятичная коррекция результата сложения

Умножение:

MUL Беззнаковое умножение

IMUL Знаковое (целочисленное) умножение

AAM АSCII-коррекция результата умножения

Изменение разрядности путем расширения знака:

CBW Преобразование байта (АL) в слово (АХ)

CWDE Преобразование слова (АХ) в двойное слово (ЕАХ)

CWD Преобразование слова (АХ) в двойное слово (DХ, АХ)

CDQ Преобразование двойного слова (ЕАХ) в учетверенное слово (ЕDХ, ЕАХ)

1. Команды сложения ADD

ADD <приемник> <источник>. Действие: <приемник> = <приемник> + <источник>. Складывает приемник и источник, содержимое заносит в приемник.

ADC<приемник><источник>. Сложение с учетом флага CF флаг переноса.

Действие: <приемник> = <приемник> + <источник> + CF .

ААА - команда коррекции результата при сложении двоично-десятичных чисел, представленных в неупакованном формате. Корректирует результат сложения, находящийся в регистре AL, преобразуя его в правильную неупакованную десятичную цифру по правилу: если содержимое AL>9 то к нему прибавляется 6, а в регистр АН добавляется 1.

DAA - команда коррекции двух упакованных двоично-десятичных чисел в формате BCD.

Если 4 младших бита результата в AL содержат значение >9, то к регистру AL добавляется цифра 6, если значение в AL>9F, то к нему прибавляется 60h.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]