Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архитектура ВС-пособие.docx
Скачиваний:
8
Добавлен:
01.05.2025
Размер:
728.99 Кб
Скачать

Ссылки на поля структур

Описав тип структуры и переменные этого типа, мы получаем право работать с ними. Как единое целое структуры используются редко, обычно они обрабатываются по полям. Чтобы сослаться на поле структуры, надо использовать конструкцию вида:

 Имя_переменной. имя_поля

Такая конструкция обозначает ту ячейку памяти, которую занимает указанное поле указанной переменной. Встречая эту конструкцию, ассемблер заменяет её на адрес данной ячейки. При этом тип (размер) этого адреса считается равный типу (размеру) данного поля, например, тип Dt1.year - это слово.

Использование структурированных переменных

Использовать поля структур не намного сложнее, чем простые переменные. Допускаются всё те же режимы адресации. Для задания нового значения поля day можно использовать такую команду:

mov [Dt1.day], 5

Можно также загружать значения полей в регистры:

mov ax, [Dt2.year]

Вы можете складывать, вычитать, считывать, записывать, логически объединять поля и регистры.

 Пример.

  inc [Dt1.day] ; Прибавить 1 к полю 'День'

add [Dt1.year], cx ; Прибавить cx к полю 'Год'

cmp [Dt2.month], 8 ; 'Месяц'=8?

Лекция 21. Расширенные возможности современных микропроцессоров Архитектурные особенности

Операционная система MS-DOS, язык ассемблера МП 86 и методы программирования микропроцессоров корпорации Intel разрабатывались применительно к 16-разрядному процессору 8086 и тому режиму, который впоследствии получил название реального. Появление процессора 80386 знаменовало собой начато нового этапа в развитии операционных систем и прикладного программирования - этапа многозадачных графических операционных систем защищенного режима типа Windows и 32-разрядных прикладных программ. При этом все архитектурные средства 86-го процессора входят в состав любого современного процессора, который, таким образом, можно условно разделить на две части - МП 86 и дополнительные средства, обеспечивающие защищенный режим, 32-разрядную адресацию и прочее.

Из этих дополнительных средств можно выделить те, которые обеспечивают защищенный режим, и в реальном режиме не используются (во всяком случае, явным образом; в действительности, процессор, даже работая в реальном режиме, использует по крайней мере некоторые из этих средств). Сюда, например, относятся регистры таблиц дескрипторов, регистры тестирования и отладки, привилегированные команды защищенного режима, система страничного отображения адресов и др.

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

Регистры общего назначения и регистры-указатели отличаются от аналогичных регистров МП 86 тем, что они являются 32-разрядными. К обозначениям регистров добавлена приставка E (Extended - расширенный): EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP. Возможно обращение к младшим 16 разрядам расширенных регистров по именам без приставки, например, AX, BX, а также отдельно к младшим и старшим байтам, например, AL, AH.

Однако старшие половины 32-разрядных регистров не имеют мнемонических обозначений и непосредственно недоступны. Для того, чтобы прочитать, например, содержимое старшей половины регистра ЕАХ (биты 31...16) придется сдвинуть все содержимое ЕАХ на 16 бит вправо (в регистр АХ) и прочитать затем содержимое АХ.

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

mov ЕАХ,0FFFFFFFFh ;Работа с двойным словом (32 бит)

mov AX,0FFFFh ;Работа со словом (16 бит)

mov AL, 0FFh ;Работа с байтом (8 бит)

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

Регистр указателя команд также является 32-разрядным и обычно при описании процессора его называют EIP. Младшие шестнадцать разрядов этого регистра соответствуют регистру IP процессора МП 86. Весь регистр EIP используется только в 32-разрядных приложениях; в 16-разрядных программах адреса могут быть только 16-разрядными и, соответственно, для адресации в программном сегменте используется младшая половина регистра EIP.

Регистр флагов принято называть EFLAGS (от extended flags, расширенные флаги). Хотя он имеет длину 32 бит, только младшие 18 бит (да и то не все) содержат значащую информацию. Дополнительно к шести флагам состояния (CF, PF, AF, ZF, SF и OF) и трем флагам управления состоянием процессора (TF, IF и DF), назначение которых было описано ранее, он включает новые флаги задачи, рестарта и виртуального режима, а также двухбайтовое поле привилегий ввода-вывода. Все эти биты используются только в защищенном режиме и здесь рассматриваться не будут.