Регистр CX


Специализация регистра CX использование в качестве счетчика. Предположим, мы хотим 10 раз повторить выполнение блока инструкций. Это можно сделать следующим образом:

mov cx,10

Begin:

<блок инструкций, который нужно повторить>

sub cx,1

jnz Begin

Не беспокойтесь, если в программе вы увидите незнакомые элементы. Важно то, что инструкции между меткой Begin и инструкцией JNZ будут повторяться до тех пор, пока содержимое регистра CX не станет равным 0. Заметим, что чтобы уменьшить содержимое CX и перейти на начало цикла Begin, если регистр CX еще не равен 0, здесь используются две инструкции SUB CX,1 и JNZ.

Уменьшение значения счетчика и цикл это часто используемый элемент программы, поэтому в процессоре 8086 используется специальная инструкция для того, чтобы циклы выполнялись быстрее и были более компактными. Эта инструкция называется LOOP. Инструкция LOOP (инструкция цикла) вычитает 1 из значения регистра CX и выполняет переход, если содержимое регистра CX не равно 0 (все это в одной инструкции). Для приведенного выше примера можно записать такой эквивалент:

mov cx,10

Begin:

<блок инструкций, который нужно повторить>

loop Begin

К рассмотрению циклов мы вернемся в Главе 5 «Основные элементы программы на языке Ассемблера». А пока запомните, что регистр CX особенно полезен для использования в циклах и в качестве счетчика.

Как и регистры AX, BX и DX, регистр CX можно интерпретировать, как два 8разрядных регистра CH и CL.

Загрузка...