Регистры процессора 8086
На рис. 4.2 представлены регистры процессора 8086. Такие же самые регистры имеются во всех моделях процессоров 80x86. (Процессоры 80386, 80486 и Pentium имеют дополнительные регистры и расширения, которые здесь рассматриваться не будут.) Если вы используете только регистры, содержащиеся на рис. 4.2, ваши программы обязательно будут исполняться на всех персональных компьютерах. Регистры делятся на пять категорий:
• Регистры общего назначения (ах, bx, ex, dx)
• Регистровые указатели и индексные регистры (sp, bp, si, di)
• Сегментные регистры (cs, ds, ss, qs)
• Регистр командного указателя (ip)
• Флаги (of, df, if, tf, sf, zf, af, pf, cf)
Все регистры 8086 являются 16-битовыми. Кроме того, четыре регистра общего назначения — ах, bx, ex, dx — разделены на старшую и младшую 8-битовые половины. Например, 16-битовый регистр ах состоит из двух 8-битовых частей — ah и al. Регистр bx разделен на bh и bl, сх — на ch и cl, dx — на dh и dl. Такая гибкая организация позволяет вам оперировать либо всем 16-битовым регистром, либо работать отдельно с двумя 8-битовыми половинами регистра. Помните, что изменение значения в 16-битовом регистре ах приводит к изменению значений в его 8-битовых частях — al и ah. И наоборот, при изменении значения в cl изменяется величина сх.
Замечание
В данном тексте регистры записываются строчными буквами — cs, ax, si и т.д. В программах и других руководствах часто можно встретить регистры, написанные прописными буквами—АХ, BX, DH. Обе формы записи являются правильными.
Регистры общего назначения
Программы на языке ассемблера обращаются к регистрам, используя их символические имена— ах, cl, ds и подобные им. Но, кроме того, как показано справа на рис. 4.2, регистры имеют также и менее фамильярные названия. (Хотя эти названия никогда не используются непосредственно в программах.) В регистре-сумматоре ах обычно содержат результаты сложения, вычитания и т.п. Базовый регистр bx часто указывает на начальный адрес (называемый базой) структуры в памяти. Счетчик сх определяет количество повторов некоторой операции. Регистр данных dx чаще всего содержит данные, передаваемые для обработки в подпрограммы. Эти определения никоим образом не являются полными, и большую часть времени вы сами решаете, как использовать эти регистры общего назначения. Например, несмотря на то что сх назван регистром-счетчиком, ничто не мешает вам использовать для подсчета регистр bx. Однако в ряде случаев некоторые команды процессора 8086 требуют строго определенных регистров.
Регистровые указатели и индексные регистры
В отличие от четырех регистров общего назначения, другие регистры 8086 на рис. 4.2 тесно связаны с определенными операциями. Указатель стека sp всегда указывает на вершину стека процессора. (Детально стеки мы изучим немного позже.)
Указатель базы bр обычно адресует переменные, хранимые в стеке. Индекс источника si и индекс назначения di известны под названием строковых регистров. Обычно si и di служат для выполнения операций над байтовыми строками.
Замечание
Байтовые строки отличаются от символьных строк в языках высокого уровня. В языке ассемблера байтовая строка представляет собой просто ряд последовательных байтов..
