ВІКІСТОРІНКА
Навигация:
Інформатика
Історія
Автоматизація
Адміністрування
Антропологія
Архітектура
Біологія
Будівництво
Бухгалтерія
Військова наука
Виробництво
Географія
Геологія
Господарство
Демографія
Екологія
Економіка
Електроніка
Енергетика
Журналістика
Кінематографія
Комп'ютеризація
Креслення
Кулінарія
Культура
Культура
Лінгвістика
Література
Лексикологія
Логіка
Маркетинг
Математика
Медицина
Менеджмент
Металургія
Метрологія
Мистецтво
Музика
Наукознавство
Освіта
Охорона Праці
Підприємництво
Педагогіка
Поліграфія
Право
Приладобудування
Програмування
Психологія
Радіозв'язок
Релігія
Риторика
Соціологія
Спорт
Стандартизація
Статистика
Технології
Торгівля
Транспорт
Фізіологія
Фізика
Філософія
Фінанси
Фармакологія


Использование логических и сдвиговых операций.

12) Логические и сдвиговые операции.

Логичиские операции: AND - Команда выполняет побитовое «логическое И» над приемником (регистр или переменная) и источником (число, регистр или переменная; источник и приемник не могут быть переменными одновременно) и помещает результат в приемник. OR - Выполняет побитовое «логическое ИЛИ» над приемником (регистр или переменная) и источником (число, регистр или переменная; источник и приемник не могут быть переменными одновременно) и помещает результат в приемник. XOR - Выполняет побитовое «логическое исключающее ИЛИ» над приемником (регистр или переменная) и источником (число, регистр или переменная; источник и приемник не могут быть переменными одновременно) и помещает результат в приемник.NOT - Каждый бит приемника (регистр или переменная), равный нулю, устанавливается в 1, и каждый бит, равный 1, сбрасывается в 0. Сдвиговые операции SAR - Арифметический сдвиг вправо. SAL - Арифметический сдвиг влево. SHR - Логический сдвиг вправо. SHL - Логический сдвиг влево. ROR - Циклический сдвиг вправо. ROL - Циклический сдвиг влево. RCR - Циклический сдвиг вправо через флаг переноса. RCL - Циклический сдвиг влево через флаг переноса.

mov al,10010001b

shl al,1 ;al=00100010b

sal al,1 ;al=01000100b

mov al,10100011

mov cl,3

shl al,cl ;al=00011000b

6. Стандартные директивы определения сегментов.

Директива SEGMENT используется для описания сегментов. Формат директивы: <имя>SEGMENT[параметры]…<имя> ENDS. Данная директива может содержать три типа параметров: выравнивание; объединение; класс. 1. Выравнивание – определяет границу памяти для стартового адреса сегмента: byte – на границе байта word – на гр. слово dword – на гр. двойное слово para – на гр. параграфа page – 256 байт. По умолчанию используется знач. PARA. 2. Объединение – показывает как должны объединятся сегменты с одинаковыми именами в разных модулях. Возможны сл. типы объединений: COMMON – для сегментов с одним и тем же именем и классом и имеющим параметр объединения common устанавл. один общий адрес загрузки(размер сегмента – максимальный из совм. сегментов.) Это позволяет: - уменьшить объем памяти исп. программой; - к одним и тем же данным можно обращаться с исп. разных имен; - к одним и тем же данным получ. разл. способ доступа(byte, word, dword и т.п.), PUBLIC – сегменты с одним и тем же именем, классов и топом объединения public загружаются в смежные блоки памяти (объед.) и размер всего сегмента равен сумме размеров объединенных сегментов. Требуется когда несколько разр. создают общий сегмент данных к которому необходим доступ из различных программных модулей., MEMORY – тип объединение подобный PUBLIC, STACK – все сегменты с одинаковым именем, классом и типом объединения stack компонуются в один общий сегмент, аналогично сегментам с типом public(различие в том что сегмент с типом компоновки stack и классом ‘stack’ считается сегментом стека. , AT-выражение – выражение определяет сегментный адрес памяти, т.е. задает номер параграфа с которого в памяти будет распологаться данный сегмент., PRIVATE – данный сегмент не будет объединяться с другими. Этот тип компановки модулей устанавливается по умолчанию.

MOD1

D1 SEGMENT COMMON

a dd 9

b dw 7

D1 ENDS

;MOD2

D1 SEGMENT COMMON

k db 5

z db 2

D1 ENDS

7. Упрощенные директивы определения сегментов.

После того как модель памяти установлена, вступают в силу упрощенные директивы определения сегментов, объединяющие действия директив SEGMENT и ASSUME. Кроме того, сегменты, объявленные упрощенными директивами, не требуется закрывать директивой ENDS — они закрываются автоматически, как только ассемблер обнаруживает новую директиву определения сегмента или конец программы.

Директива .CODE описывает основной сегмент кода

.code имя_сегмента

NAME_TEXT. .stack размер

Директива .STACK описывает сегмент стека. Необязательный параметр указывает размер стека. По умолчанию он равен 1 Кб.

.data

Описывает обычный сегмент данных

.data?

Описывает сегмент неинициализированных данных:

Этот сегмент обычно не включается в программу, а располагается за концом памяти, так что все описанные в нем переменные на момент загрузки программы имеют неопределенные значения.

.const

Описывает сегмент неизменяемых данных.

.fardata имя_сегмента

Сегмент дальних данных. Доступ к данным, описанным в этом сегменте, потребует загрузки сегментного регистра.

Организация и использование стека.

Стек - нек. область оперативной памяти которая исп. механизм безадресной записи и выборки данных. Эти механизмы работают : последний запис. - первый выбранный. Адрес сегмента памяти в кот. нах. стек определ. в регистре ss. ЄAaВершина стека в sp. Для 16 бит. процессора данные в стек помещ. в виде слов. ss:sp - в любой момент определ. вершина. push - занести в стек. (sp уменьш на 2). Для извлечения слова из стека исп. команда типа pop, при этом снач. произв. чтение слова, а потом sp увелич на 2. Особенности: 1)Несмотря на то что знач. sp можно изменять, этого делать не следует, т.к. стек исп. довольно часто и не только самой программой(но и при вызове различных подпрограмм). ОП могут исп. стек при вызове сервисных процедур. 2) Необходимо обращ. внимание для выделения памяти для стека. Для адрес. данных стека можно исп. bp (можно рассматр. как базовый регистр в сегменте стека и находить данные в стеке через смещение заданные относит. этого регистра).

Оперативная память

Сегмент кода

Сегмент данных

Сегмент стека

Вершина стека

Дно стека

Структура программ типа .com и .exe.

Программа в формате ЕХЕ, созданная компоновщиком, состоит из следующих двух частей:

1) заголовка - записи, содержащей информацию по управлению и настройке программы;

2) собственно загрузочного модуля.

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

Заголовок имеет минимальный размер 512 байт и может быть больше , если программа содержит большое число настраиваемых элементов. Позиция 06 в заголовке указывает число элементов в выполняемом модуле, нуждающихся в настройке. Каждый элемент настройки в таблице, начинающейся в позиции 1С заголовка, состоит из 2-х байтовых величин смещений и 2-х байтовых сегментных значений. Система строит префикс программного сегмента (PSP) следом за резидентной частью COMMAND.COM, которая выполняет операцию загрузки.

Различия между программами в ЕХЕ и СОМ файлах:

- РАЗМЕР ПРОГРАММЫ. Программа в формате ЕХЕ может иметь любой размер, в то время как СОМ-файл ограничен размером одного сегмента и не превышает 64 К. Размер СОМ - файла всегда меньше, чем размер соответствующего ЕХЕ-файла; одна из причин этого - отсутствие в СОМ - файле 512-байтового заголовка ЕХЕ-файла.

- СЕГМЕНТ СТЕКА. В ЕХЕ-программе определяется сегмент стека, в то время как СОМ-программа генерирует стек автоматически. Таким образом, при создании ассемблерной программы, которая будет преобразована в СОМ - файл, стек должен быть опущен.

- СЕГМЕНТ ДАННЫХ. В ЕХЕ-программе обычно определяется сегмент данных, а регистр DS инициализируется адресом этого сегмента. В СОМ-программе все данные должны быть определены в сегменте кода.

- ИНИЦИАЛИЗАЦИЯ. В ЕХЕ-программе выполняется инициализация регистра DS. Так как в СОМ-программе стек и сегмент данных не определены, то эти шаги отсутствуют. Когда СОМ-программа начинает работать, все сегментные регистры содержат адрес PSP - 256 байтовый блок, который резервируется операционной системой DOS непосредственно перед СОМ- или ЕХЕ-программой в памяти.

Организация обслуживания прерываний. Типы прерываний. Таблица векторов прерываний.

Посредством прерывания работы микропроцессора можно приостанавл. работу текущей программы и осущ. запуск другой программы.Прерывания: 1)Внешние;2)Внутренние. Каждому прерыв. ставятся в соотв. 4-х байтный вектор с номером 0<n<255. Все векторы можно размещать по порядку в младш. килобайте памяти. Любой из них задает точку входа или старт адрес программы для обслуж. треб ситуации. В виде сегмент. прогр:смещ. прогр. (Вектор прерывания - адрес!!!) Внешн прер. вызываются на входе INTR(запрос маскируемого прерывания и на NMI(немаскер. прерывание). Если признак I в регистре флаг = 0, сигнал на входе INTR не распознается и прерывание не происх. При I=1 и налич сигнала ШТЕК возник маскируемое прерывание. Действие кот. будет при этом выполн.:1) На вход INTR - поступ. запрос прерывание;2) Послед. действия определ. допустимой ситуацией:а) ожид. завершение текущей команды; б)-||- сл. команды;в) запрос обраб во время вып. текущей команды.---В нек случаях сигнал INTR распазн только при б).--Имеются 2 случ. когда в): 1..При строковых командах с повторением.2.. При вып. команды wait. 3) Микропроц. выраб. 2 сигнала подтверждения INTX. 4) По шине адресов/данных в микропроц. передается байт с номером n прерываний. 5) Текущее содерж. регистра признаков и регистра CS и IP загруж. в стек. В стек загруж. IP соответ. смещениюкоманды перед которой возникло прерыв. 6) Признаки I,T сбрасываются в 0.7)В CS:IP загруж. содержимое вектора n. 8) Выполн. программа обработки прерывания. 9) В конце обработки прерыв. команда iret восстан. знач. регистра IP,ES и FL.10)Прерванная программа продолж. свое выполнение.

Внутренне прерывание возникает либо при появлении некоторых микро сигналов внутри микропроцессора либо по команде внутри программы

© 2013 wikipage.com.ua - Дякуємо за посилання на wikipage.com.ua | Контакти