Архитектура микропроцессоров и их программирование. Карягин А.П. - 9 стр.

UptoLike

Составители: 

9
Специализация регистра 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
:
Регистр CX можно интерпретировать, как два 8-разрядных регистра -
CH и CL.
Регистр DX - это единственный регистр, которые может использоваться
в качестве указателя адреса ввода-вывода в инструкциях IN и OUT. Фактиче-
ски, кроме использования регистра DX нет другого способа адресоваться к пор-
там ввода-вывода с 256 по 65535. Например, в следующем фрагменте програм-
мы в порт 878h (LPT) записывается значение 62:
:
mov al,62
mov dx,878h
out dx,al
:
Другие уникальные качества регистра DX относятся к операциям деле-
ния и умножения. Когда вы делите 32- или 16-битовый делитель, старшие 16
бит делимого должны быть помещены в регистр DX. После выполнения деле-
ния остаток также сохраняется в DX. (Младшие 16 бит делимого должны
быть помещены в AX. Частное от деления также будет записано в AX.) Ана-
        Специализация регистра 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
          :
        Регистр CX можно интерпретировать, как два 8-разрядных регистра -
CH и CL.
        Регистр DX - это единственный регистр, которые может использоваться
в качестве указателя адреса ввода-вывода в инструкциях IN и OUT. Фактиче-
ски, кроме использования регистра DX нет другого способа адресоваться к пор-
там ввода-вывода с 256 по 65535. Например, в следующем фрагменте програм-
мы в порт 878h (LPT) записывается значение 62:
          :
          mov al,62
          mov dx,878h
          out dx,al
          :
        Другие уникальные качества регистра DX относятся к операциям деле-
ния и умножения. Когда вы делите 32- или 16-битовый делитель, старшие 16
бит делимого должны быть помещены в регистр DX. После выполнения деле-
ния остаток также сохраняется в DX. (Младшие 16 бит делимого должны
быть помещены в AX. Частное от деления также будет записано в AX.) Ана-
                                                                           9