Скачать 0.81 Mb.
|
Рис. 9.1. Варианты размещения подпрограммы в теле программы. Передавать фактические параметры процедуре можно несколькими способами. Простейший способ – передача параметров через регистры: основная программа записывает параметры в какие-либо регистры, а процедура по мере необходимости извлекает их из этих регистров и использует в своей работе. Такой способ имеет один основной недостаток: передавать параметры через регистры можно если их немного (если много, то просто не хватит регистров). Решить это проблему можно, передавая параметры через стек. В этом случае основная программа записывает параметры в стек и вызывает подпрограмму, подпрограмма работает с параметрами и, возвращая управление, очищает стек (см. пример в разделе «5.5. Команды работы со стеком»). Для работы с подпрограммами в систему команд процессора включены специальные команды, это вызов подпрограммы CALL и возврат управления RET. Все команды вызова CALL безусловны. Внутрисегментный вызов NEAR CALL используется для передачи управления процедуре, находящейся в том же сегменте. Он указывает новое значение регистра IP и сохраняет старое значение счетчика команд (IP) в стеке в качестве адреса возврата. Межсегментный вызов FAR CALL используется для передачи управления процедуре, находящейся в другом сегменте или даже программном модуле. Он задает новые значения сегмента CS и смещения IP для дальнейшего выполнения программы и сохраняет в стеке как регистр IP, так и регистр CS. Все возвраты RET являются косвенными переходами, поскольку извлекают адрес перехода из вершины стека. Внутрисегментный возврат извлекает из стека одно слово и помещает его в регистр IP, а межсегментный возврат извлекает из стека два слова, помещая слова из меньшего адреса в регистр IP, а слово из большего адреса – в регистр CS. Команда RET может иметь операнд, который представляет собой значение, прибавляемое микропроцессором к содержимому указателя стека SP после извлечения адреса возврата (очистка стека) (см. пример в «5.5. Команды работы со стеком». Другим видом процедур являются прерывания DOS и BIOS. Прерывания это обычные процедуры, написанные разработчиками операционной системы (прерывания DOS) или разработчиками аппаратных средств компьютера (прерывания BIOS). Поэтому к этим процедурам можно обращаться точно так же, как и к другим процедурам. Отличает их лишь форма вызова: вместо команды CALL ProcName используется команда типа INT Number, где Number – номер прерывания, например INT 10h, INT 21h и т.п. Эта команда вызывает прерывание с номером Number (0< Number <255), то есть после такой команды начинает работать подпрограмма обработки прерывания, начальный адрес которой записан в Number-ом элементе таблицы векторов прерываний. (Таблица векторов прерываний представляет собой массив из 256 элементов, расположенный по адресу 0000:0000 и имеющий длину 1024 байт. Каждый элемент таблицы векторов занимает 4 байта и представляет собой начальный адрес процедуры обработки прерывания.) Закончив свое выполнения, подпрограмма передает управление на команду расположенную непосредственно за командой INT. В связи с тем, что в состав операционной системы входит много стандартных процедур и для них не хватает допустимых векторов прерываний, они (процедуры) объединяются в группы, вызываемые по прерыванию с одним и тем же номером. Подпрограммы одной группы называют функциями прерывания. Чтобы различать функции прерывания перед его вызовом в регистр AH заносится номер необходимой функции: MOV AH,<�номер функции> INT <�номер прерывания> Для выполнения вызванной таким образом процедуры может потребоваться определенная информация (например, для функции вывода символа на экран – код символа). Такая информация передается через регистры микропроцессора. Ниже приведен пример использования прерывания 21H функции 02 для вывода символа на экран. ... MOV AH,02h ;AH – номер функции MOV DL,’a’ ;DL – выводимый символ INT 21h ;инициализация прерывания ... 10. Команды работы со строками Строкой в Ассемблере называют последовательность байтов или слов длинной от 1 до 65535 байт. Операции со строками обеспечивают пересылку, сравнение, сканирование строк по значению, а также пересылку строки в аккумулятор или из него. Каждая строковая операция представленная в процессоре двумя командами: одна предназначена для обработки строк состоящих из байт, другая – из слов (их мнемоника различается наличием буквы B (byte) или W (word)). Если флаг направления DF перед выполнением команды строковой обработки установлен в 0 (выполнена команда CLD), значение в индексном регистре автоматически увеличивается, если в 1 (выполнена STD) – уменьшается. Индексные регистры уменьшаются или увеличиваются на 1, если команды работают с байтами, или на 2 – если со словами. Команды строковой обработки чаще всего используются с однобайтными префиксами (префиксами повторения), которые обеспечивают многократное автоматическое повторение выполнения команды. Команда сравнения строк CMPS (CMPSB, CMPSW). Команда CMPS сравнивает значение элемента одной строки (DS:SI) со значением элемента второй строки (ES:DI) и настраивает значения регистров на следующие элементы строк в соответствии с флагом направления DF. Сравнение происходит как и по команде сравнения CMP. Результат – сформированные флаги. Команда сканирования строки SCAS (SCASB, SCASW). Команда SCAS производит сравнение содержимого регистра (AL или AX) с байтом памяти, абсолютный адрес которого определяется парой ES:DI, после чего регистр DI устанавливается на соседний элемент памяти (байт или слово) в соответствии с флагом DF. Команда SCAS используется обычно для поиска в строке (ES:DI) элемента заданного в регистре AL или AX. Команда пересылки строки MOVS (MOVSB, MOVSW). Команда MOVS пересылает поэлементно строку DS:SI в строку ES:DI и настраивает значения индексных регистров на следующий элемент строки. Команда сохранения строки STOS (STOSB, STOSW). Команда STOS заполняет строку, содержащуюся по адресу ES:DI, элементом из регистра AL или AX. На флаги команда не влияет Команда загрузки строки LODS (LODSB, LODSW). Команда LODS записывает в регистр AL или AX содержимое ячейки памяти, адрес которой задается регистрами DS:SI. Флаги не меняются. Префиксы повторения. В системе команд процессора имеется две команды без операндов, которые называются префиксами повторения: 1-ый префикс: REPE (повторять, пока равно) REPZ (повторять, пока ноль) REP (повторять) 2-ой префикс: REPNE (повторять, пока не равно) REPNZ (повторять, пока не ноль) Префиксы повторения ставятся перед строковыми командами обязательно в той же строке, например: REPE CMPB Префикс использует регистр CX как счетчик циклов. На каждом этапе цикла выполняются следующие действия:
Фрагмент программы, иллюстрирующий работу со строковыми данными, приведен ниже. CLD ;DF=0 LEA SI,s1 ;DS:SI=начало s1 LEA DI,s2 ;ES:DI=начало s2 MOV CX,n ;CX=длинна строк REPE CMPSB ;сравнение, пока элементы равны JNE NoEq ;если s1<>s2 (ZF=0), то на NoEq ... NoEq: ... 11. Команды управления процессором К командам управления процессором чаще всего относят команды работы (установка и очистка) с флагами. Среди них наиболее часто приходится использовать следующие. Команда CLC устанавливает значение флага переноса CF, равное нулю. Все остальные флаги и регистры остаются неизменными. Команда CMC изменяет значение флага переноса CF на противоположное. Другие флаги остаются без изменений. Команда STC устанавливает флаг переноса в единицу. Команда CLD очищает флаг направления DF. Все остальные флаги и регистры остаются неизменными. После выполнения CLD используемые строковые операции будут увеличивать индексный регистр (SI или DI). Команда STD устанавливает флаг направления DF в единицу, что заставляет все последующие строковые операции уменьшать при их выполнении индексные регистр (SI или DI). Команда CLI очищает флаг прерываний, в результате чего процессор не распознает внешние маскируемые прерывания. Команда STI устанавливает флаг разрешения прерываний FI в единицу. После этого при завершении работы следующей команды процессор может выполнять обработку внешних прерываний, если эта команда снова не сбросит флаг прерываний. Приложение 1 Система команд микропроцессора Intel 8086
|
Представление содержимого регистров Цель работы: изучить назначение регистров процессора 8086 и основные принципы использования регистров для управления работой процессора.... |
Тема Архитектура предприятия Исторические аспекты архитектуры предприятия.... Ения. Комплекс проектов совершенствования деятельности. Пути развития архитектуры предприятия. Типичные пользователи. Архитектура... |
||
4. Литература. Введение в архитектуру intel Однако, первым настоящим процессором в семействе ia является 8086, и выпущенный вслед за ним более дешевый процессор 8088. Объектный... |
Полноэкранный отладчик afdpro Лабораторная работа предназначена для того, чтобы вы получили наглядные представления об архитектуре процессора на примере микропроцессора... |
||
Конспект лекций Архитектурная организация процессора ЭВМ. Структура машинной команды. Способы адресации. Особенности архитектур микропроцессоров.... |
Определения Код процессора это численно-буквенная маркировка процессора, принятая производителем cpu |
||
Управление ит-инфраструктурой Понятие «информационно-технологическая инфраструктура», связь с понятиями «архитектура предприятия», «архитектура информационной... |
Реферат удк 681 06 Пояснительная записка к курсовой работе содержит... Ключевые слова: архитектура предприятия, бизнес-процесс, бизнес-архитектура, бизнес-модель, модель предприятия |
||
Столлингс В. Структурная организация и архитектура компьютерных систем. 5-е издание Гуров В. В. Архитектура микропроцессоров: Учебное пособие. – М интернет-Университет Информационных Технологий: бином. Лаборатория... |
Федеральное государственное бюджетное образовательное учреждение... Архитектура финансов: иллюзии глобальной стабилизации и перспективы экономического роста |
||
Программа по дисциплине «Архитектура ЭВМ и систем» Учебная программа по дисциплине «Архитектура ЭВМ и систем» составлена в соответствии с требованиями гос впо. Предназначена для студентов... |
Лекция Язык sql 46 вставка одного запроса внутрь другого 68 как работает... Эти базы данных создаются и функционируют под управлением специальных программных комплексов, называемых системами управления базами... |
||
Лабораторная работа Изучение принципов функционирования простейшей микроэвм и процессора Лабораторная работа Изучение принципов функционирования простейшей микроэвм и процессора I8085A при реализации программы |
1. Показать развитие и классификацию однопроцессорных архитектур... Архитектура общая функциональная и структурная организация машины, определяющая методы кодирования данных, состав, назначение, принципы... |
||
Замена батареи и лампы подсветки, сброс процессора |
Программа дисциплины Архитектура вычислительных систем для направления... Программа предназначена для преподавателей, ведущих данную дисциплину, учебных ассистентов и студентов направления 09. 03. 04 "Программная... |
Поиск |