Автор работы: Пользователь скрыл имя, 18 Марта 2015 в 02:52, шпаргалка
Ответы на вопросы к экзамену по предмету "Основы информатики".
Любая информация, поступающая в ЭВМ, преобразуется в двоичный код. Это могут быть тексты, изображения, числа, звуки и т.д. Рассмотрим теперь более подробно процесс кодирования чисел в компьютере. Среди чисел, которые мы используем, встречаются натуральные, целые, рациональные, иррациональные. В вычислительных машинах применяются две формы представления чисел:
- естественная
форма или форма с
- нормализованная форма или форма с плавающей запятой (точкой);
С фиксированной запятой числа изображаются в виде последовательности цифр с постоянным для всех чисел положением запятой, отделяющей целую часть от дробной. Например, 32,54; 0,0036; –108,2. Эта форма проста, естественна, но имеет небольшой диапазон представления чисел и поэтому не всегда приемлема при вычислениях. Если в результате операции получится число, выходящее за допустимый диапазон, происходит переполнение разрядной сетки и дальнейшие вычисления теряют смысл. В современных компьютерах форма представления чисел с фиксированной запятой используется только для целых чисел. С плавающей запятой числа изображаются в виде X = ±M×P±r, где M - мантисса числа (правильная дробь в пределах 0,1 ≤ M < 1), r - порядок числа (целое), P - основание системы счисления. Например, приведенные выше числа с фиксированной запятой можно преобразовать в числа с плавающей запятой так: 0,3254×102, 0,36×10–2, –0,1082×103. Нормализованная форма представления имеет огромный диапазон чисел и является основной в современных ЭВМ.
7.Архитектура IA-32. Регистры общего назначения и сегментные регистры.
Первую часть вопроса см. 5 вопрос
Регистр процессора — сверхбыстрая оперативная память (СОЗУ) внутри процессора, предназначенная прежде всего для хранения промежуточных результатов вычисления — РОН (регистр общего назначения) или содержащая данные, необходимые для работы процессора — смещения базовых таблиц, уровни доступа и т. д. (специальные регистры). Регистр представляет собой цифровую электронную схему, служащую для временного хранения двоичных чисел. В процессоре имеется значительное количество регистров, большая часть которых используется самим процессором и недоступна программисту (например, при выборке из памяти очередной команды она помещается в регистр команд, и программист обратиться к этому регистру не может). Имеются также регистры, которые в принципе программно доступны, но обращение к ним осуществляется из программ операционной системы (например, управляющие регистры и теневые регистры дескрипторов сегментов). Этими регистрами пользуются в основном разработчики операционных систем. Существуют также так называемые регистры общего назначения (РОН), представляющие собой часть регистров процессора, использующихся без ограничения в арифметических операциях, но имеющие определенные ограничения, например в строковых. РОН, не характерные для эпохи мейнфреймов типа IBM/370[2] стали популярными в микропроцессорах архитектуры X86 — i8085, i8086 и последующих[3].
Доступ к значениям, хранящимся в регистрах, как правило, в несколько раз быстрее, чем доступ к ячейкам оперативной памяти (даже если кеш-память содержит нужные данные), но объём оперативной памяти намного превосходит суммарный объём регистров (объём среднего модуля оперативной памяти сегодня составляет 1-4 Гб[4], суммарная «ёмкость» регистров общего назначения/данных для процессора Intel 80x86 16 битов * 4 = 64 бита (8 байт)).
Регистры общего назначения
Восемь регистров общего назначения имеют длину в 32 бит и содержат адреса или данные. Они поддерживают операнды-данные длиной 1, 8, 16, 32 и (при использовании двух регистров) 64 бит; битовые поля от 1 до 32 бит; операнды-адреса длиной 16 и 32 бит. Эти регистры называются EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP. Доступ к младшим 16 бит этих регистров выполняется независимо при использовании соответствующих имен 16-битных регистров: AX, BX, CX, DX, SI, DI, BP и SP. Также могут использоваться индивидуально младший (0-7) и старший (8-15) байты регистров AX, BX, CX, DX. Им соответствуют обозначения AH, DH, CH, BH и AL, DL, CL, BL. Формат регистров общего назначения показан на рисунке. Хотя регистр ESP тоже относится к регистрам общего назначения, он содержит указатель на вершину стека и его не стоит использовать для других целей.
Следует отметить, что регистры могут быть неравнозначны и при использовании определенных инструкций могут иметь специальное значение:
Сегментные регистры
Микропроцессор 80386 включает шесть непосредственно доступных 16-битных регистров селекторов сегментов. С каждым сегментным регистром ассоциирован программно-недоступный кэш дескриптора соответствующего сегмента, содержащий базовый адрес сегмента в линейном адресном пространстве, предел сегмента и атрибуты сегмента. Этот кэш заполняется при загрузке значения в сегментный регистр. В реальном режиме предел сегмента всегда 0FFFFh, атрибуты игнорируются, а базовый адрес вычисляется сдвигом значения селектора на 4 бита влево. В защищенном режиме кэш заполняется соответствующими значениями из дескрипторной таблицы.
Значения селекторов могут быть загружены при исполнении программы и являются специфичными для задачи. Это значит, что регистры сегментов в защищенном режиме перезагружаются автоматически при переключении микропроцессора на другую задачу. В то же время, использование сегментных регистров зависит от того, какая модель адресного пространства используется. При использовании сплошной модели в сегментные регистры загружается один и тот же селектор сегмента с базой 0 и пределом 0FFFFFFFFh, обеспечивая доступ ко всему линейному адресному пространству. При ис пользовании сегментированной модели значения селекторов в сегментных регистрах независимы, так что программа может одновременно обращаться к шести сегментам.
Не все сегментные регистры равнозначны. Регистр CS хранит селектор сегмента кода. Процессор извлекает очередную инструкцию для исполнения, формируя логический адрес из селектора в CS и смещения в регистре EIP. Значение этого регистра нельзя изменить непосредственно, оно меняется в командах межсегментоного перехода (FAR JMP), межсегментного вызова (FAR CALL), при вызове обработчика прерывания (INT) и при возврате из далекой процедуры (RETF) или обработчика прерывания (IRET).
Регистр SS хранит селектор сегмента стека. Стек используется для передачи параметров подпрограммам и для сохранения адреса возврата при вызове подпрограммы или обработчика прерывания. Вершиной стека считается байт, логический адрес которого образуется из селектора в регистре SS и смещения в регистре ESP. Программа может непосредственно изменить значение SS, что дает ей возможность переключаться между несколькими стеками. Причем на время выполнения команды MOV SS,xxxx и одной команды следующей за ней (обычно это MOV ESP,xxxx) запрещаются маскируемые и блокируются немаскируемые прерывания.
Регистры DS, ES, FS и GS хранят селекторы сегментов данных. Если инструкция обращается к памяти, но содержит только смещение, то считается, что она обращается к данным в сегменте DS. Сегмент ES может использоваться без явного указания в цепочечных командах. Сегменты FS и GS используются при обращении к памяти только при явном использовании в инструкции префиксов этих сегментов
9. Архитектура IA-32. Регистры смещений и регистр флагов.
Указатель команд Регистры смещений IP, SP,BP, SI, DI используются для хранения относительных адресов ячеек памяти внутри сегментов (иначе говоря, смещений относительно начала сегментов):
- регистр IP хранит смещение адреса текущей команды программы;
- регистр SP указывает на вершину стека — смещение относительно начала стека;
- в регистр BP записывается начальный адрес поля памяти, непосредственно отведенного под стек;
- регистры SI и DI предназначены для
хранения адресов индексов
Указатель команд (EIP) является 32-разрядным регистром. Он содержит смещение (относительный адрес) следующей команды, подлежащей выполнению. Относительный адрес отсчитывается от начала (или базового адреса) сегмента исполняемой задачи. Указатель команд непосредственно недоступен программисту, но он управляется явно командами управления потоком, прерываниями и исключениями (JMP, CALL, RET, IRET, команды условного перехода). Получить текущее значение EIP можно, если выполнить команду CALL, а затем прочитать слово на вершине стека. Младшие 16 бит регистра EIP обозначаются IP и могут быть использованы процессором независимо при исполнении 16-битного кода. Регистр системных флагов Регистр EFLAGS содержит группу флагов состояния, управления и системных флагов. Младшие 16 бит регистра представляют собой 16-разрядный регистр флагов и состояния МП 8086, называемый FLAGS, который наиболее полезен при исполнении программ для МП 8086 и 80286. Структура регистра флагов показана на рисунке. Неопределенные биты зарезервированы, то есть на данный момент они не имеют значения, однако могут быть использованы для специальных целей в последующих версиях микропроцессора. Далее термин "установлен" означает значение 1, а термин "сброшен" - значение 0. Некоторые из флагов могут быть изменены специально предназначенными для этой цели инструкциями. Для изменения или проверки группы флагов можно воспользоваться командами:
Флаги статуса CF, PF, AF, ZF, SF и OF отражают статус выполнения арифметических инструкций (таких как ADD, SUB, MUL, DIV).
Системные флаги и поле IOPL влияют на процесс исполнения задачи, и поэтому не должны изменяться прикладной программой. Назначение этих флагов следующее: TF - флаг ловушки (Trap Flag). Установка флага TF переводит МП в пошаговый режим для отладки. Процессор автоматически генерирует исключение #1 после каждой команды, что позволяет проверить программу на исполнение каждой команды. Когда флаг TF сброшен, то ловушка по исключению #1 возникает в точках адресов останова, загружаемых в регистры отладки DR0-DR3. IF - флаг разрешения прерываний (Interrupt enable Flag). Установка флага IF позволяет МП воспринимать запросы внешних маскируемых прерываний. Очистка этого бита запрещает такие прерывания. Флаг не влияет на обработку, как немаскируемых внешних прерываний, так и исключений. IOPL - уровень привилегий ввода-вывода (I/O Privilege Level field, 286+). Это двухбитовое поле используется в защищенном режиме. Биты IOPL показывают наивысшее значение текущего уровня привилегий (CPL), позволяющее выполнять команды ввода-вывода, не приводя к исключению #13 или обращению к битовой карте разрешения ввода-вывода. Это поле показывает также наивысшее значение CPL, которое позволяет изменять бит IF с помощью команд STI или CLI, а также при выборке нового значения из стека в регистр EFLAGS. Это поле может быть изменено инструкциями POPF или IRET только, если текущий уровень привилегий задачи равен 0. NT - флаг вложенной задачи (Nested Task flag, 286+). Если при переключении задач происходит вложение задач, то этот флаг устанавливается в 1. Совместно с полем "Связь TSS" в сегменте состояния задачи обеспечивает корректное вложение задач. RF - флаг возобновления (Resume Flag, 386+). Временно приостанавливает обработку исключений отладки (т.е. возвращает к нормальному исполнению программы) так, что исполнение команды может быть повторено после обработки исключения для отладки, не вызывая немедленно обработку другого исключения для отладки. VM - режим виртуального МП 8086 (Virtual-8086 Mode flag, 386+). Бит обеспечивает для задачи функционирование в режиме виртуального МП 8086. Бит VM может быть установлен только двумя способами: при восстановлении флагов из стека по инструкции IRET на нулевом уровне привилегий; переключением на задачу, в TSS которой в образе EFLAGS бит VM выставлен. AC - флаг контроля выравнивания (Alignment Check flag, 486+). Разрешает контроль выравнивания для текущей задачи. Контроль выравнивания производится, если CR0.AM=1 и EFLAGS.AC=1 и CR0.PE=1 и CPL=3. Т.е. при обращениях к памяти двойное слово обязательно должно начинаться с адреса, кратного 4, а 16-битное слово - с адреса, кратного 2, иначе генерируется нарушение контроля выравнивания (исключение #17). VIF - виртуальный флаг прерывания (Virtual Interrupt Flag, Pentium+). Виртуальный образ флага IF, используется совместно с флагом VIP. Процессор распознает VIF, если CR4.VME=1 или CR4.PVI=1 (разрешено расширение виртуального режима) и IOPL<3. VIP - виртуальный флаг задержки прерывания (Virtual Interrupt Pending flag, Pentium+). Системное ПО устанавливает этот флаг, если требуется отложить обработку прерывания. Используется совместно с VIF. Процессор читает этот флаг, но никогда не изменяет его. Флаг распознается, если CR4.VME=1 или CR4.PVI=1 (разрешено расширение виртуального режима) и IOPL<3.
Информация о работе Шпаргалка по предмету "Основы информатики"