Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЭВМ ответы копия.docx
Скачиваний:
4
Добавлен:
20.09.2019
Размер:
100.61 Кб
Скачать

Команды условного перехода

Типы данных, над которыми выполняются

арифметические операции и операции сравнения определяют какими командами

пользоваться: беззнаковыми или знаковыми. Беззнаковые данные используют

все биты как биты данных; характерным примером являются символьные строки:

имена, адреса и натуральные числа. В знаковых данных самый левый бит

представляет собой знак, причем если его значение равно нулю, то число

положительное, и если единице, то отрицательное. Многие числовые значения

могут быть как положительными так и отрицательными.

В качестве примера предположим, что регистр AX содержит 11000110, а

BX - 00010110. Команда

CMP AX,BX

сравнивает содержимое регистров AX и BX. Если данные беззнаковые, то

значение в AX больше, а если знаковые - то меньше.

для беззнаковых данных есть переходы по состояниям равно, выше или ниже, а

для беззнаковых - равно, больше или меньше. Переходы по проверкам флагов

переноса, переполнения и паритета имеют особое назначение. Ассемблер

транслирует мнемонические коды в объектный код независимо от того, какую

из двух команд вы применили. Однако, команды JAE и JGE являясь явно

одинаковыми, проверяют различные флаги.

Расширенные операции пересылки

Процедура BEGIN инициализирует сегментные регистры и затем вызывает

процедуры B10MOVE и C10MOVE. Процедура B10MOVE пересылает содержимое поля

NAME1 в поле NAME2. Так как каждый раз пересылается только один байт, то

процедура начинает с самого левого байта в поле NAME1 и в цикле пересылает

затем второй байт, третий и т.д.:

NAME1: A B C D E F G H I

| | | | | | | | |

NAME2: J K L M N O P Q R

Для продвижения в полях NAME1 и NAME2 в регистр CX заносится значение 9, а

регистры SI и DI используются в качестве индексных. Две команды LEA

загружают относительные aдреса полей NAME1 и NAME2 в регистры SI и DI:

LEA SI,NAME1 ;Загрузка относительных адресов

LEA DI,NAME2 ; NAME1 и NAME2

Для пересылки содержимого первого байта из поля NAME1 в первый байт поля

NAME2 используются адреса в регистрах SI и DI. kвадратные скобки в

командах MOV обозначают, что для доступа к памяти используется адрес в

регистре, указанном в квадратных cкобках. Таким образом, команда

MOV AL,[SI]

означает: использовать адрес в регистре SI (т.е.NAME1) для пересылки

соответствующего байта в регистр AL. А команда

MOV [DI],AL

означает: пересылать содержимое регистра AL по адресу, лежащему в регистре

DI (т.е. NAME2).

Следующие команды увеличивают значения регистров SI и DI и уменьшают

значение в регистре SH. Если в регистре CX не нулевое значение, управление

передается на следующий цикл (на метку B20). Так как содержимое регистров

SI и DI было увеличено на 1, то следующие команды MOV будут иметь дело с

адресами NAME1+1 и NAME2+1. Цикл продолжается таким образом, пока не будет

передано содержимое NAME1+8 и NAME2+8.

Процедура C10MOVE аналогична процедуре B10MOVE с двумя исключениями:

она пересылает данные из поля NAME2 в поле NAME3 и использует команду LOOP

вместо DEC и JNZ.

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