![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
TLINK [ключи] список_объектных_файлов [,имя_загрузочного_модуля] [,имя_файла_карты] [,имя_файла_библиотеки] [,имя_файла_определений]
[,имя_ресурсного_файла]
Ключ /v указывает на необходимость сохранения отладочной информации в исполняемом файле.
48. Основные регистры процессора Pentium.
В организации вычислительного процесса важную роль играют регистры процессора. В процессорах Pentium эти регистры делятся на несколько групп:
· регистры общего назначения;
· регистры сегментов;
· указатель инструкций;
· регистр флагов;
· управляющие регистры;
· регистры системных адресов;
· регистры отладки и тестирования, а также регистры математического сопроцессора, выполняющего операции с плавающей точкой.
В процессоре Pentium имеется восемь 32-разрядных регистров общего назначения. Четыре из них используются для временного хранения операндов арифметических, логических и других команд.
Программист может обращаться к этим регистрам как к единому целому, используя обозначения ЕАХ, ЕВХ, ЕСХ, EDX, а также к некоторым их частям.
Остальные четыре регистра общего назначения — ESI, EDI, EBP и ESP — предназначены для задания смещения адреса относительно начала некоторого сегмента данных.
Регистры сегментов CS, SS, DS, ES, FS и GS в защищенном режиме ссылаются на дескрипторы сегментов памяти — описатели, в которых содержатся такие параметры сегментов, как базовый адрес, размер сегмента, атрибуты защиты и некоторые другие. Регистр CS (Code Segment) предназначен для хранения индекса дескриптора кодового сегмента, регистр SS (Stack Segment) — дескриптора сегмента стека, а остальные регистры используются для указания на дескрипторы сегментов данных.
Указатель инструкций EIP содержит смещение адреса текущей инструкции, которое используется совместно с регистром CS для получения соответствующего виртуального адреса.
Регистр флагов EFLAGS содержит признаки, характеризующие результат выполнения операции, например флаг знака, флаг нуля, флаг переполнения, флаг паритета, флаг переноса и некоторые другие. Кроме того, здесь хранятся некоторые признаки, устанавливаемые и анализируемые механизмом прерываний, в частности флаг разрешения аппаратных прерываний IF.
В процессоре Pentium имеется пять управляющих регистров — CRO, CR1, CR2, CR3 и CR4, которые хранят признаки и данные, характеризующие общее состояния процессора.
Регистр CR0 содержит все основные признаки, существенно влияющие на работу процессора, такие как реальный/защищенный режим работы, включение/ выключение страничного механизма системы виртуальной памяти, а также признаки, влияющие на работу кэша и выполнение команд с плавающей точкой.
Регистр CR1 в настоящее время не используется (зарезервирован).
Регистры CR2 и CR3 предназначены для поддержки работы системы виртуальной памяти. Регистр CR2 содержит линейный виртуальный адрес, который вызвал так называемый страничный отказ (отсутствие страницы в оперативной памяти или отказ из-за нарушения прав доступа).
Регистр CR3 содержит физический адрес таблицы разделов, используемой страничным механизмом процессора.
В регистре CR4 хранятся признаки» разрешающие работу так называемых архитектурных расширений, например возможности использования страниц размером 4 Мбайт и т. п.
49. Ассемблерные команды пересылки данных. Пример программы.
К группе команд пересылки данных относятся следующие команды:
mov <операнд назначения>,<операнд-источник>
xchg <операнд!>,<операнд2>
MOV — это основная команда пересылки данных. Она реализует самые разнообразные варианты пересылки.
Основные особенности применения этой команды:
1. Командой MOV нельзя осуществить пересылку из одной области памяти в другую. Если такая необходимость возникает, то нужно использовать в качестве промежуточного буфера любой доступный в данный момент регистр общего назначения.
masm
model small
.data
fls db 5
fld db?
.code
start:
…..
mov al, fls
mov fld,al
end start
2. Нельзя загрузить в сегментный регистр значение непосредственно из памяти. Для такой загрузки требуется промежуточный объект. Это может быть регистр общего назначения или стек.
Например:
mov ax,dseg; в регистр ах записывается адрес сегмента данных
mov ds,ax;адрес сегмента данных записывается в регистр ds
; сегмент данных
dseg segment
mes db 64 dup('~')
dseg ends
В начале сегмента кода две команды MOV, выполняющие настройку сегментного регистра DS.
3. Нельзя переслать содержимое одного сегментного регистра в другой сегментный регистр. Выполнить такую пересылку можно, используя в качестве промежуточных все те же регистры общего назначения:
mov ax,ds
mov es,ax
Но есть и другой способ выполнения данной операции -использование стека и команд PUSH и POP:
push ds;поместить значение регистра ds в стек
pop es;записать в es число из стека
Для двунаправленной пересылки данных применяют команду XCHG. Естественно, что операнды должны иметь один тип. Не допускается (как и для всех команд ассемблера) напрямую обменивать между собой содержимое двух ячеек памяти. К примеру:
xchg ax,bx;обменять содержимое регистров ах и bx
xchg ax, word ptr [si];обменять содержимое регистра ах и слова в памяти по адресу в [si]
50. Работа с адресами и указателями на ассемблере. Пример программы.
При написании программ на ассемблере производится интенсивная работа с адресами операндов, находящимися в памяти. Для поддержки такого рода операции есть специальная группа команд, в которую входят следующие команды:
·,<источник> — загрузка эффективного адреса;
· lds <приемник>,< а указателя в регистр сегмента данных ds;
· les <приемник>,<источник> — загрузка указателя в регистр дополнительного сегмента данных es;
· lgs <приемник>,<источник> — загрузка указателя в регистр дополнительного сегмента данных gs;
· lfs <приемник>,<источник> — загрузка указателя в регистр дополнительного сегмента данных fs;
· Iss <приемник>,<источник> — загрузка указателя в регистр сегмента стека ss.
В команде в качестве источника нельзя указывать непосредственно имя операнда в памяти, на который мы бы хотели получить указатель. Предварительно необходимо получить само значение полного указателя в некоторой области памяти и задать в команде получения полного адреса имя этой области.
Дата публикования: 2014-11-03; Прочитано: 457 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!