Навигация сайта

  • Главная
  • Статьи
  • Учебники
  • Программы
  • Друзья сайта

Регистры процессора

Итак поговорим о регистрах процессора что они из себя представляют и для чего они нужны. Есть регистры процессора общего назначения.

EAX EBX ECX EDX
AX BX CX DX
AH AL BH BL CH CL DH

DL

 

EAX (Accumulator register - аккумулятор). Применяется для хранения промежуточных данных также  иногда обязателен в использование некоторых API функциях и прерываниях.

EBX (Base register - база).  Применяется для хранения базового адреса некоторого объекта в памяти.

ECX (Count register - счетчик). Применяется в командах,для множественно выполнения одних и тех же команд. ( циклы )

EDX (DATA register - регистр данных). Тоже самое что и eax регистр.

 

Размер регистра  eax = 4 байтам или 32 битам. ax = 2 байтом или 16 битам. al , ah = 1 байту или 8 битам.

 

Регистры указателей процессора

ESI - Указатель на следующую команду которую выполнит процессор.

CS - сегмент кода о сегментах мы поговорим позже когда я вам буду рассказывать о адресации   памяти в реальном режиме и в WIN32.

Оба регистра работают в паре ! и сегменты по прежнему 16 битные регистры процессора.

ESI - Индекс источника.

EDI -Индекс приемника.

EBP - Указатель базы.

ESP - Указатель стека.

указатели используются как это не странно для того чтобы указывать на ячейку в сегменте вот пример MOV ds:[esi] , edx ; команда пересылает значение из регистра edx  по адресу esi относительно ds о команде mov мы поговорим подробней позже.

 

Сегментные регистры процессора

cs - сегмент кода.

ds - сегмент данных.

es - сегмент дополнительных данных.

fs - сегмент дополнительных данных.

gs - сегмент дополнительных данных.

SS - сегмент стека.

 

Флаги процессора

Также есть флаги размер 4 байта или 32 бита.

Для чего они нужны вообще я планирую этому посветить отдельную тему  так как она достаточна сложна но в кратце я расскажу вам некоторые команды смотрят на флаги и в зависимости установлен тот или иной флаг прыгает или игнорирует прыжок например команда jz также некоторые команды после их выполнения изменяют флаги например команда cmp . Таким образом в ассемблере достигается многолинейнасть программ - это когда в зависимости от данных выполняется то или иное действие ! на этом пока что все. В следующей теме мы узнаем адресацию памяти защищенного режима процессора.

Сайт по программированию на ассемблере.

 

Техническая поддержка и аудит сайта.