Способы адресации в архитектуре i80x86

 

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

При вычислении адреса, используются две составляющие адреса сегмент и смещение. Если для адресации используются метки или имена переменных, то известно, в каком сегменте определены эти переменные. При вычислении адреса используется адрес начала сегмента и смешение этой метки или переменной с данным именем по отношению к началу сегмента. Это смещение называется исполнительным адресом и он вычисляется по разному в зависимости от режима адресации. Естественно, что соответствующий сегментный регистр должен быть загруженным нужным значением, в противном случае данные будут пересылаться в/из совершенно других ячеек памяти.

При необходимости вычисления адреса в команде можно переопределить соответствующий сегмент двумя способами. Во-первых, можно задать его непосредственно в команде. Во-вторых, можно воспользоваться псевдооператором assume, чтобы ассемблеру, какой именно сегмент будет использоваться по умолчанию при обращении к памяти. Однако при этом загрузка соответствующего сегментного регистра должна выполняться программистом.