Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

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

Читайте также:
  1. III. Рассчетная часть
  2. Лабораторная работа 5. Относительная и абсолютная адресация. Условное форматирование
  3. Расчетная часть
  4. РАСЧЕТНАЯ ЧАСТЬ
  5. СРЕДНЯЯ РАСЧЕТНАЯ СТОИМОСТЬ
  6. Статья 12. Учетная оценка активов, обязательств, собственного капитала, доходов, расходов организации
  7. Статья 9. Учетная политика организации

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

Адрес: 04B23 Содержимое памяти: |хх|24|01|хх|

Сначала процессор получает доступ к байтам по адресам 4B22 и 4B23 и пересылает байт из ячейки 4B23 в регистр AL. Затем он получает доступ к байтам по адресам 4B24 и 4B25 и пересылает байт из ячейки 4B23 в регистр AH. В результате регистр AX будет содержать 0124. Нет необходимости в каких-либо специальных методах программирования для получения четной или нечетной адресации, не обязательно также знать является адрес четным или нет. Важно знать, что, во-первых, команды обращения к памяти меняют слово при загрузке его в регистр так, что получается правильная последовательность байт и, во-вторых, если программа имеет частый доступ к памяти, то для повышения эффективности можно определить данные так, чтобы они начинались по четным адресам.

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

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

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

В первом упражнении проводилась проверка размера памяти (RAM), которую имеет компьютер. BIOS (базовая система ввода/вывода) в ROM имеет подпрограмму, которая определяет размер памяти. Можно обратиться в BIOS по команде INT, в данном случае по прерыванию 12h. В результате BIOS возвращает в регистр AX размер памяти в килобайтах.

Загрузите DEBUG и введите для INT 12h и RET следующие машинные коды:

E CS:100 CD 12 CB

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

STI

PUSH DS

MOV AX,0040

MOV DS,AX

MOV AX,[0013]

POP DS

IRET

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

 


Дата добавления: 2015-11-13; просмотров: 24 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
NV UP DI PL NZ NA PO NC| During their traineeship, trainees shall be obliged to consult with their traineeship adviser on any action they propose taking with regard to the EESC's activities.

mybiblioteka.su - 2015-2024 год. (0.006 сек.)