Помню, когда я начинал изучать ассемблер, то меня многое вгоняло в трепетный ужас - столько незнакомых слов! Как во всём этом разобраться.
И, не знаю почему, но одной из самых больших загадок для меня были регистры. Я почему-то страшился изучения этого вопроса, хотя теперь уже не помню и не понимаю почему.
Как известно, в типовой микропроцессорной системе есть два вида памяти - оперативная и постоянная. В оперативную память (ОЗУ), как правило, загружаются программы и данные, необходимые для выполнения этих программ.
И ОЗУ, и постоянная память, выполнены в виде отдельных устройств. А вот регистры процессора - это тоже небольшие ячейки памяти, но они физически находятся в самом процессоре. То есть это тоже как бы память, но, так сказать, сверхоперативная (то есть сверхбыстрая).
В регистры процессора записываются команды, которые процессор затем выполняет, а также данные, необходимые для выполнения этих команд.
Разрядность регистров (количество битов в ячейке) зависит от разрядности процессора. У 8-разрядных процессоров регистры также 8-разрядные. У 16-разрядных процессоров регистры, соответственно, 16-разрядные. Ну и так далее.
Большинство регистров также делятся на несколько частей. Даже в 16-разрядных процессорах регистры делились на две части. Например, регистр АХ, в котором может храниться одно слово, делится ещё на два регистра: АН - старший байт и AL - младший байт.
При этом, если записать данные в регистр АН и/или AL, то автоматически изменится информация в регистре АХ. Потому что это деление число логическое, физически есть только один регистр - АХ. А это деление сделано только для удобства программирования на ассемблере, потому что часто в одном регистре, в том же АХ, в одной части может храниться код команды, а в другой - какие-то данные, с которыми эта команда работает.
Для того, чтобы записать число в регистр, в ассемблере существует команда MOV:
MOV AL, 1
MOV AH, 3
Здесь мы сначала записываем единицу в регистр AL, а затем число три в регистр АН. Но, поскольку эти регистры являются частью регистра АХ, то после выполнения этих команд в регистре АХ будет число
00000011 00000001
или 769 в десятичной системе. При этом работать можно отдельно как с регистрам АХ, так и с регистрами АН и AL.
На этом пока всё. Вот здесь можно найти больше сведений о регистрах. Подписывайтесь на канал, чтобы ничего не пропустить.