Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Четная адресация



Процессоры 8086, 80286 и 80386 действуют более эффективно, если в программе обеспечивается доступ к словам, расположенным по четным адресам. В предыдущем примере процессор мог сделать выборку слова по адресу 4В22 для загрузки его непосредственно в регистр за одно обращение к памяти. Но если слово начинается на нечетном адресе, процессор производит два обращения к памяти. Предположим, например, что команда должна выполнить выборку слова, начинающегося по адресу 04В23, и загрузить его в регистр АХ:

Содержимое памяти: I xx I 24 I 01 I xx I

|

Адрес: 04В23

Сначала процессор получает доступ к байтам по адресам 4В22 и 4В23 и пересылает байт из ячейки 4В23 в регистр AL. Затем он получает доступ к байтам по адресам 4В24 и 4В25 и пересылает байт из ячейки 4В23 в регистр АН. В результате регистр АХ будет содержать 0124.

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

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

Ассемблер имеет директиву EVEN, которая вызывает выравнивание данных и команд на четные адреса памяти.

ПРИМЕР ПРОГРАММЫ В МАШИННЫХ КОДАХ: ОПРЕДЕЛЕНИЕ РАЗМЕРА ПАМЯТИ

В первом упражнении проводилась проверка объема памяти RAM, которую имеет компьютер. Базовая система ввода-вывода (BIOS) имеет в ROM подпрограмму, которая определяет размер памяти. Можно обратиться в BIOS по команде INT, в данном случае по прерыванию 12Н. В результате BIOS возвращает в регистр АХ размер памяти в килобайтах. Загрузите в память отладчик DEBUG и введите для команд INT 12Н и RET следующие машинные коды: Е CS: 100 CD 12СВ

Нажмите R (и Return) для отображения содержимого регистров и первой команды. Регистр IP содержит 0100, при этом высвечивается команда INT 12Н. Теперь нажмите Т (и Return) несколько раз и просмотрите выполняемые команды BIOS (отладчик показывает мнемокоды, хотяв действительности выполняются машинные коды):

STI

PUSH DS

MOV AX,0040

MOV DS, AX

MOV AX, [0013]

POP DS

IRET

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





Дата публикования: 2014-12-11; Прочитано: 287 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...