Архитектура Intel-процессора. Оперативная память RAM. Регистр флагов

Страницы работы

Фрагмент текста работы

Немного об архитектуре процессора

Семейство Intel-процессоров (CPU) являются реализацией абстрактной вычислительной машины с архитектурой, которую разработал Дж. Фон Нейман (Von Neumann). Эта архитектура содержит 3 главных модуля: CPU (central processing unit), memory, и I/O (input/output devices). Они соединены друг с другом с помощью системной шины (system bus).

Регистры

Самой главной частью CPU являются регистры. Они разбиты на 4 категории: регистры общего назначения (general purpose registers), специальные регистры приложений, специальные регистры ядра системы (kernel mode), регистры сегментов. Регистры сегментов почти не используются в 32-bit операционных системах. Специальные регистры ядра используют люди, которые пишут ОС, отладчики и другие системные утилиты. Поэтому мы не будем их рассматривать.

Регистр — это тип памяти, часть процессора, предназначенная для хранения и обработки данных. Регистры можно сравнить с операционным столом, на котором процессор препарирует данные. К данным, хранящимся в регистрах, процессор может обратиться очень быстро. Они обрабатываются значительно быстрее, чем данные обычной памяти (RAM). Команды используют регистры разнообразным образом. Для начала познакомимся с регистрами общего назначения, которые являются своего рода рабочими лошадками процессора. Вот их имена:

EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP

Префикс E означает extended. Он отличает 32-bit регистры от 16-bit регистров, которые именуются:

AX, BX, CX, DX, SI, DI, BP, SP

Кроме того, процессоры 80x86 имеют восемь 8-bit регистров, которые именуются:

AL, AH, BL, BH, CL, CH, DL, DH

На самом деле, последующие—являются частями предыдущих. Эта вложенность отражает исторический процесс развития архитектуры процессоров и позволяет поддерживать совместимость (backward compatibility). Рассмотрим регистры поближе.

Возьмем один из них — EAX. Он вмещает 32 bits. Физически существует один регистр EAX (32-bit), логически в него встроен регистр AX (16-bit), который логически делится еще на два: старшую (AH) и младшую (AL) части (high and low). Итак, 32-битный регистр делится на две части, затем 16-битная часть этого регистра вновь делится на две части. Это помогает обеспечить совместимость с языками ассемблера предыдущих процессоров Intel. Они работали с 8-битными регистрами.

1.  Нажмите LWin+R и запустите консоль командной строки, введя cmd.

2.  Введите debug. Запустится утилита Debug.exe. (Она находится в папке WINDOWS\SYSTEM32\).

3.  Когда появится приглашение (символ минус), введите букву r (или R) и нажмите на Enter.

Вы увидите содержимое регистров процессора. Мой вариант выглядит так.

-r

AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000

DS=0B65  ES=0B65  SS=0B65  CS=0B65  IP=0100  NV UP EI PL NZ NA PO NC

0B65:0100 E88E04        CALL    0591

Как видите, значения регистров AX, BX, CX, DX равны 0.  Уточним тип этих переменных. Это — шестнадцатеричные числа в диапазоне (0, FFFF). В десятичном исчислении диапазон равен (0, 65535), и, наконец, в двоичном исчислении: (0, 1111 1111 1111 1111). Создатели первых IBM-совместимых компьютеров считали, что диапазон в 65 тысяч достаточно велик. В те времена любили экономно программировать (я и сейчас люблю).

Заметьте, что утилита Debug.exe ничего не знает о существовании расширенных регистров (с префиксом E). Она — старая и работает в стиле DOS. Для работы с расширенными регистрами надо пользоваться современными инструментами (MASM, Soft Ice).

Мы можем записать в регистр AX значение (например, 72F9h) двумя разными способами:

¨  AX = 72F9h                        (одна команда);

¨  AH = 72h;   AL = F9h          (две команды).

Аналогично, (двумя способами) можно изменить значение регистра AH:

¨  AH = 78h

¨  AX = 7800h

Для регистра AL варианты присвоений будут иметь вид:

¨  AL = 78h

¨  AX = 0078h

Регистр AX имеет длину 16 бит, которые принято нумеровать справа налево. Представим, что в нем хранится число 2F4Dh. Следующая таблица моделирует этот факт.

AX

2F4D

AH - AL

2F

4D

Тетрады

2

D

4

D

Значения битов

0

0

1

0

1

1

1

1

0

1

0

0

1

1

0

1

Номера битов

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

Одному байту соответствуют две шестнадцатеричные цифры, а одной цифре соответствует четверка (тетрада) двоичных цифр (или 4 бита). Емкость регистров AH и AL — две тетрады, или 8 бит. Такую же длину имеют: коды символов, скан-коды клавиш, номера функций прерываний и другие сущности

Похожие материалы

Информация о работе