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

4.1.6 Операции над битами и байтами

BT (Bit Test)

Тестирование бита с номером из CX в AX и перенос его во флаг CF.

4.1.7 Команда сравнения и условного перехода

CMP (CoMPare operands)

Данная команда используется для сравнения двух операндов методом вычитания, при этом операнды не изменяются. По результатам выполнения команды устанавливаются флаги. Команда cmp применяется с командами условного перехода и командой установки байта по значению setcc.

JNZ (Jump if not zero)

Команда условного перехода на метку. Осуществляет переход, если флаг ZF не равен нулю.

4.1.8 Префиксы

CMPSB (CoMPare String Byte/Word/Double word operands)

Команда без префикса осуществляет простое сравнение двух элементов в памяти. Транслятор, обработав команду cmps и выяснив тип операндов, генерирует одну из машинных команд cmpsb, cmpsw или cmpsd. Машинного аналога для команды cmps нет. Для адресации назначения обязательно должен использоваться регистр ES, а для адресации источника можно делать замену сегмента с использованием соответствующего префикса. Для того чтобы эти команды можно было использовать для сравнения последовательности элементов, имеющих размерность байт, слово, двойное слово, необходимо использовать один из префиксов repe или repne. Префикс repe заставляет циклически выполняться команды сравнения до тех пор, пока содержимое регистра ECX/CX не станет равным нулю или пока не совпадут очередные сравниваемые элементы цепочек (флаг zf=1).

REPE (REPeat string operation)

Команда repe в силу специфики своей работы называется префиксом. Она имеет смысл только при использовании цепочечных операций, заставляя их циклически выполняться и тем самым без организации внешнего цикла обрабатывать последовательности элементов фиксированной длины. Большинство применяемых префиксов являются условными, то есть они прекращают работу цепочечной команды при выполнении определенных условий.

4.2 Регистры общего назначения

Регистрами общего назначения называются 32-битные регистры EAX, EBX, ECX, EDX, EBP, ESP, ESI и EDI. Данные регистры используются для хранения операндов логических и арифметических команд. Кроме того, они могут использоваться для хранения операндов при вычислении адресов (кроме регистра ESP, который не может быть использован как индексный операнд). Имена указанных регистров наследованы от имен регистров общего назначения процессора 8086 - AX, BX, CX, DX, BP, SP, SI и DI. Эти 16-ти разрядные, в свою очередь имеют адресуемые младшие и старшие одно байтовые половинки. Каждый байт 16-битных регистров AX, BX, CX и DX также имеет свое имя. Байты этих регистров называются AH, BH, CH и DH (старшие байты) и AL, BL, CL и DL (младшие байты).

Рисунок 13 - Регистры общего назначения

Регистры EAX и AX являются аккумуляторами и применяются для всех основных операций ввода-вывода, некоторых операций над строками и некоторых арифметических операций. Например, команды умножения, деления и сдвига предполагают использование регистров EAX и AX. Некоторые команды генерируют более эффективный код, если они имеют ссылки на регистры EAX и AX.

Рисунок 14 - Регистры EAX и AX

Регистры EBX и BX являются базовыми регистрами. Эти регистры общего назначения могут использоваться в качестве "индекса" для расширенной адресации. Другое общее их применение - вычисления.

Рисунок 15 - Регистры EBX и BX

Регистры ECX и CX являются счетчиками. Они необходимы для управления числом повторений циклов и для операций сдвига влево или вправо. Эти регистры используется также для вычислений.

Рисунок 16 - Регистры ECX и CX

Регистры EDX и DX являются регистрами данных. Они применяется для некоторых операций ввода-вывода и тех операций умножения и деления над большими числами, которые используют регистровые пары EDX:EAX или DX:AX.

Рисунок 17 - Регистры EDX и DX.