- •Оглавление
- •7.Фиббоначи. Золотое сечение.
- •12.Основы теории экспертных систем.
- •17.Описание процедур и функции языка программированияPascal.
- •Описание и вызов процедур и функций
- •19.Мультимедийные возможностиDelphi
- •20.Архитектура эвм
- •21.Ассемблер.Основные понятии
- •22.Аппаратные и программные прерывания. Адресное пространство и смещение.
- •23. Аппаратные и программные средства обработки информации.
- •24.Этапы развития информационных технологий
- •25. Информационная емкость. Формула информационной емкости.
- •26. Перспективы развития информационных технологий.
- •27. Математический пакет Maple — среда для решения математических задач. Основы работы, команды. Построение графиков функций. Решение дифференциальных уравнений.
- •28. Алгебра высказываний как модель алгебры Буля, ее аксиоматическое задание. Принцип двойственности и теорема двойственности.
- •29. Проблема разрешимости (разрешения) для класса однотипных задач. Проблема разрешимости в алгебре высказываний и способы их разрешения.
- •48. Понятие математического моделирования.
21.Ассемблер.Основные понятии
Язык ассемблера — язык программирования низкого уровня, команды которого (за редким исключением) соответствуют инструкциям процессора вычислительной системы. Трансляция программы в исполняемый машинный код производится ассемблером программой-транслятором, которая и дала языку ассемблера его название.
Язык ассемблера — это язык, в котором каждое высказывание соответствует ровно одной машинной команде.
Мы используем язык ассемблера, а не программируем на машинном языке (в шестнадцатеричной системе счисления), поскольку на языке ассемблера программировать гораздо проще. Использовать символьные имена и адреса вместо двоичных и восьмеричных намного удобнее. Программисту на языке ассемблера нужно знать только символические названия, поскольку ассемблер транслирует их в машинные команды.
Это утверждение касается и адресов. Программист на языке ассемблера может дать имена ячейкам памяти, и уже ассемблер должен будет выдавать правильные числа. Программист на машинном языке всегда должен работать с числовыми номерами адресов. Сейчас уже нет программистов, которые пишут программы на машинном языке, хотя несколько десятилетий назад до изобретения ассемблеров программы именно так и писались.
Рассмотрим пример:
Program mm;
Begin
ASM
Mov ax, 234 вводит 234 в регистр ах
Sub ax,ax вычетает
Mov bx, 235 вводит 235 в регистр bх
Add bx, ax добавляет рез-ты ах в bх
END;
End.
Набор команд
Команды пересылки данных (mov, lea и др.)
Арифметические команды (add, sub, imul и др.)
Логические и побитовые операции (or, and, xor, shr и др.)
Команды управления ходом выполнения программы (jmp, loop, ret и др.)
Команды вызова прерываний (иногда относят к командам управления): int, into
Команды ввода/вывода в порты (in, out)
Для микроконтроллеров и микрокомпьютеров характерны также команды, выполняющие проверку и переход по условию, например:
cbne — перейти, если не равно
dbnz — декрементировать, и если результат ненулевой, то перейти
cfsneq — сравнить, и если не равно, пропустить следующую команду
22.Аппаратные и программные прерывания. Адресное пространство и смещение.
Прерывание (англ. interrupt) — сигнал, сообщающий процессору о наступлении какого-либо события. При этом выполнение текущей последовательности команд приостанавливается и управление передаётся обработчику прерывания, который реагирует на событие и обслуживает его, после чего возвращает управление в прерванный код
В зависимости от источника возникновения сигнала прерывания делятся на:
- асинхронные или внешние (аппаратные) - события, которые исходят от внешних источников (например, периферийных устройств) и могут произойти в любой произвольный момент: сигнал от таймера, сетевой карты или дискового накопителя, нажатие клавиш клавиатуры, движение мыши. Факт возникновения в системе такого прерывания трактуется как запрос на прерывание (англ. Interrupt request, IRQ);
- синхронные или внутренние - события в самом процессоре как результат нарушения каких-то условий при исполнении машинного кода: деление на ноль или переполнение, обращение к недопустимым адресам или недопустимый код операции;
- программные (частный случай внутреннего прерывания) — инициируются исполнением специальной инструкции в коде программы. Программные прерывания как правило используются для обращения к функциям встроенного программного обеспечения, драйверов и операционной системы.
Программные прерывания могут использоваться для доступа к сервисам операционной системы (например, INT $21 - сервисы DOS, INT $80 - сервисы Linux), функциям драйверов устройств (например, INT $33 - драйвер мыши) или специальным сервисам (INT $10 - видео-сервис BIOS, INT $31 - DPMI-сервис), INT $67 - сервис EMS).
Сегментная адресация памяти — схема логической адресации памяти компьютера в архитектуре x86. Линейный адрес конкретной ячейки памяти, который в некоторых режимах работы процессора будет совпадать с физическим адресом, делится на две части: сегмент и смещение. Сегментом называется условно выделенная область адресного пространства определённого размера, а смещением — адрес ячейки памяти относительно начала сегмента. Базой сегмента называется линейный адрес (адрес относительно всего объёма памяти), который указывает на начало сегмента в адресном пространстве. В результате получается сегментный (логический) адрес, который соответствует линейному адресу база сегмента+смещение и который выставляется процессором на шину адреса.
Селектором называется число (в x86 — 16-битное), однозначно определяющее сегмент. Селектор загружается в сегментные регистры.