Автоинкрементная адресация

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

Аналогичное увеличение адреса может производиться и при выполнении команд ELD, ELDB, ST, STB, EBMOVI, использующих расширенную косвенно-регистровую адресацию. Таким образом реализуется вариант расширенной автоинкрементной адресации. Так как данные команды выполняют операции загрузки или записи в память, то такой вариант адресации эффективно использовать при пересылках массивов данных из внешней памяти в регистровый файл или наоборот.

Признаком автоинкрементной адресации служит установка «1» в младшем разряде байта, указывающего номер содержащего адрес регистра. Так как фактический номер этого регистра должен быть четным или кратным четырем (при расширенной адресации), то эта «1» не учитывается при формировании адреса.

Индексная адресация. В этом случае адрес операнда формируется путем суммирования содержимого заданного в команде регистра, который служит индексным регистром, и смещения, которое задается одним или двумя байтами команды. Индексный регистр содержит 16 разрядов, поэтому он должен иметь четный номер. Смещение представляет собой число со знаком, поэтому формируемый адрес может быть больше или меньше содержимого индексного регистра.

Возможны два варианта индексной адресации. Короткая индексная адресация использует 8-разрядное смещение, разрядность которого при сложении с индексом увеличивается до 16 путем расширения знака. Таким способом можно формировать адреса в диапазоне (index)-128.(index)+127. Длинная индексная адресация использует 16-разрядное смещение, которое суммируется с 16-разрядным индексом без учета возникающего переноса. При этом можно получить любой адрес в пределах 64 Кбайт (на текущей странице). Коды операций для команд с короткой и длинной индексной адресацией совпадают, но при длинной индексной адресации в младшем бите второго байта команды, задающего четный номер индексного регистра, ставится «1» (как при автоинкрементной адресации), а при короткой индексной младший бит сохраняет значение «О».

Comments are closed.