Главная /
Ассемблер /
Для чайников /
Введение в Ассемблер /
Регистры-указатели
|
Лучшие книги по Ассемблеру
Сделал подборку не новых, но проверенных книг по программированию на языке ассемблера. Если вы также как и я любите погружаться на низкий уровень, в те закоулки мира программирования, куда не всем путь открыт, то посмотрите. Возможно, что-то вам понравится.
Подробнее...
|
В общих чертах о регистрах я рассказал здесь. А в этой статье более подробно о регистрах-указателях и индексных регистрах (хотя часто их все называют указателями).
Итак, список регистров-указателей и их назначение:
- SI - индекс источника
- DI - индекс приёмника
- BP - регистр для работы со стеком (база стека)
- SP - регистр для работы со стеком (вершина стека)
В 32-разрядных процессорах есть, соответственно, 32-разрядные аналоги этих регистров: ESI, EDI, EBP, ESP.
Регистры SI и DI используются в строковых операциях. В этих регистрах хранится смещение адреса строки.
Совместно с регистром SI используется регистр DS, тогда полный адрес выглядит как DS:SI.
Совместно с регистром DI используется регистр ES, тогда полный адрес выглядит как ES:DI.
При работе со строками адрес исходной строки (источника) предварительно помещается в регистр SI. Адрес строки, в которую будет помещён результат выполнения операции, записывается в DI. При обработке строк команды, предназначенные для этих целей, перебирают элементы строк поочерёдно, и автоматически изменяют значения индексных регистров. Они потому и называются индексными, что хранят текущий индекс (номер) элемента строки.
Регистры BP и SP применяются при работе со стеком (иногда в арифметических операциях).
Стек - это область памяти, отведённая для временного хранения промежуточных (временных) данных. В стеке данные хранятся как листы в пачке бумаги - один над одним. Соответственно, у этой “пачки” есть границы - адрес начала (дна, базы) стека и адрес конца (вершины) стека.
В регистре SP (Stack Pointer - указатель стека) хранится смещение адреса вершины стека.
Регистр BP - Base Pointer (указатель базы) хранит адрес смещения “дна” (базы) стека.
Как вы поняли, регистры SP и BP хранят смещение. А для определения полного адреса с использованием этих регистров применяется регистр SS. То есть полный адрес при работе со стеком выглядит так: SS:SP или SS:BP.
Обычно значения в регистрах SP и BP изменяются автоматически при работе со стеком. Однако в некоторых случаях возникает необходимость изменять их значения вручную. Но это уже другая история…
|
Первые шаги в программирование
Главный вопрос начинающего программиста – с чего начать? Вроде бы есть желание, но иногда «не знаешь, как начать думать, чтобы до такого додуматься».
У человека, который никогда не имел дело с информационными технологиями, даже простые вопросы могут вызвать большие трудности и отнять много времени на решение.
Подробнее...
|