Регистры процессора
Итак поговорим о регистрах процессора что они из себя представляют и для чего они нужны. Есть регистры процессора общего назначения. 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 . Таким образом в
ассемблере достигается многолинейнасть программ - это когда в
зависимости от данных выполняется то или иное действие ! на этом пока
что все.
|