Язык Ассемблера - Компьютерный парк централизованной библиотечной системы
Язык ассеемблера (англ. assemblylanguage) - машино-ориентированный язык низкого уровня с командами, обычно соответствующими командам машины, который может обеспечить дополнительные возможности вроде макрокоманд; автокод, расширенный конструкциями языков программирования высокого уровня, такими как выражения, макрокоманды, средства обеспечения модульности программ.
Автокод - язык программирования, предложения которого по своей структуре в основном подобны командам и обрабатываемым данным конкретного машинного языка.
Язык ассемблера - система обозначений, используемая для представления в удобочитаемой форме программ, записанных в машинном коде. Язык ассемблера позволяет программисту пользоваться алфавитными мнемоническими кодами операций, по своему усмотрению присваивать символические имена регистрам ЭВМ и памяти, а также задавать удобные для себя схемы адресации (например, индексную или косвенную). Кроме того, он позволяет использовать различные системы счисления (например, десятичную или шестнадцатеричную) для представления числовых констант и дает возможность помечать строки программы метками с символическими именами с тем, чтобы к ним можно было обращаться (по именам, а не по адресам) из других частей программы (например, для передачи управления).
Перевод программы на языке ассемблера в исполнимый машинный код (вычисление выражений, раскрытие макрокоманд, замена мнемоник собственно машинными кодами и символьных адресов на абсолютные или относительные адреса) производится ассемблером программой транслятором, которая и дала языку ассемблера его название.
Содержание языка
Команды языка ассемблера один к одному соответствуют командам процессора. Фактически, они и представляют собой более удобную для человека символьную форму записи - мнемокоды - команд и их аргументов. При этом одной команде языка ассемблера может соответствовать несколько вариантов команд процессора.
Кроме того, язык ассемблера позволяет использовать символические метки вместо адресов ячеек памяти, которые при ассемблировании заменяются на вычисляемые ассемблером или компоновщиком абсолютные или относительные адреса, а также так называемые директивы (команды ассемблера, не переводимые в машинные команды процессора, а выполняемые самим ассемблером).
Директивы ассемблера позволяют, в частности, включать блоки данных, задать ассемблирование фрагмента программы по условию, задать значения меток, использовать макрокоманды с параметрами.
Каждая модель (или семейство) процессоров имеет свой набор систему команд и соответствующий ему язык ассемблера. Наиболее популярные синтаксисы языков ассемблера Intel - синтаксис и AT&;T - синтаксис.
Применение
Исторически, если первым поколением языков программирования считать машинные коды, то язык ассемблера можно рассматривать как второе поколение языков программирования. Недостатки языка ассемблера, сложность разработки на нем больших программных комплексов привели к появлению языков третьего поколения - языков программирования высокого уровня (таких как Фортран, Лисп, Кобол, Паскаль, Си и др.). Именно языки программирования высокого уровня и их наследники в основном используются в настоящее время в индустрии информационных технологий. Однако языки ассемблера сохраняют свою нишу, обусловленную их уникальными преимуществами в части эффективности и возможности полного использования специфических средств конкретной платформы.
На языке ассемблера пишут программы или их фрагменты в тех случаях, когда критически важны:
- * быстродействие (драйверы, игры); * объем используемой памяти (загрузочные секторы, встраиваемое (англ. embedded) программное обеспечение, программы для микроконтроллеров и процессоров с ограниченными ресурсами, вирусы, программные защиты).
С использованием программирования на языке ассемблера производятся:
- * Оптимизация критичных к скорости участков программ в программах на языках высокого уровня, таких как C++ или Pascal. Это особенно актуально для игровых приставок, имеющих фиксированную производительность, и для мультимедийных кодеков, которые стремятся делать менее ресурсоемкими и более быстрыми. * Создание операционных систем (ОС) или их компонентов. В настоящее время подавляющее большинство ОС пишут на более высокоуровневых языках (в основном на Си - языке высокого уровня, который специально был создан для написания одной из первых версий UNIX). Аппаратно зависимые участки кода, такие как загрузчик ОС, уровень абстрагирования от аппаратного обеспечения (hardwareabstractionlayer) и ядро, часто пишутся на языке ассемблера. Фактически, ассемблерного кода в ядрах Windows или Linux совсем немного, поскольку авторы стремятся обеспечить переносимость и надежность, но, тем не менее, он там присутствует. Некоторые любительские ОС, такие как MenuetOS и KolibriOS, целиком написаны на языке ассемблера. При этом MenuetOS помещается на дискету и содержит графический многооконный интерфейс. * Программирование микроконтроллеров (МК) и других встраиваемых процессоров. По мнению профессора Таненбаума, развитие МК повторяет историческое развитие компьютеров новейшего времени. Сейчас (2013 г.) для программирования МК весьма часто применяют язык ассемблера (хотя и в этой области широкое распространение получают языки вроде Си). В МК приходится перемещать отдельные байты и биты между различными ячейками памяти. Программирование МК весьма важно, так как, по мнению Таненбаума, в автомобиле и квартире современного цивилизованного человека в среднем содержится 50 микроконтроллеров. * Создание драйверов. Драйверы (или их некоторые программные модули) программируют на языке ассемблера. Хотя, в настоящее время, драйверы также стремятся писать на языках высокого уровня (на высокоуровневом языке много проще написать надежный драйвер), в связи с повышенными требованиями к надежности, и достаточной производительностью современных процессоров (быстродействие обеспечивает временное согласование процессов в устройстве и процессоре) и достаточным совершенством компиляторов с языков высокого уровня (отсутствие ненужных пересылок данных в сгенерированном коде), подавляющая часть современных драйверов пишется на языке ассемблера. Надежность для драйверов играет особую роль, поскольку в Windows NT и UNIX (в том числе в Linux) драйверы работают в режиме ядра системы. Одна тонкая ошибка в драйвере может привести к краху всей системы. * Создание антивирусов и других защитных программ. * Написание трансляторов языков программирования.
Набор команд
Типичными командами языка ассемблера являются (большинство примеров даны для Intel-синтаксиса архитектуры x86):
- * Команды пересылки данных (mov и др.) * Арифметические команды (add, sub, imul и др.) * Логические и побитовые операции (or, and, xor, shr и др.) * Команды управления ходом выполнения программы (jmp, loop, ret и др.) * Команды вызова прерываний (иногда относят к командам управления): int * Команды ввода/вывода в порты (in, out) * Для микроконтроллеров и микрокомпьютеров характерны также команды, выполняющие проверку и переход по условию, например: * cjne - перейти, если не равно * djnz - декрементировать, и если результат ненулевой, то перейти * cfsneq - сравнить, и если не равно, пропустить следующую команду
Инструкции
Типичный формат записи команд:
[метка:] мнемокод [операнды] [;комментарий]
Где мнемокод - непосредственно мнемоника инструкции процессору. К ней могут быть добавлены префиксы (повторения, изменения типа адресации и пр.).
В качестве операндов могут выступать константы, адреса регистров, адреса в оперативной памяти и пр. Различия между синтаксисом Intel и AT&;T касаются в основном порядка перечисления операндов и указания различных методов адресации.
Используемые мнемоники обычно одинаковы для всех процессоров одной архитектуры или семейства архитектур (среди широко известных - мнемоники процессоров и контроллеров x86, ARM, SPARC, PowerPC, M68k). Они описываются в спецификации процессоров. Возможные исключения:
- * если ассемблер использует кросс платформенный AT&;T-синтаксис (оригинальные мнемоники приводятся к синтаксису AT&;T); * если изначально существовало два стандарта записи мнемоник (система команд была наследована от процессора другого производителя).
Например, процессор Zilog Z80 наследовал систему команд Intel 8080, расширил ее и поменял мнемоники (и обозначения регистров) на свой лад. Процессоры MotorolaFireball наследовали систему команд Z80, несколько ее урезав. Вместе с тем, Motorola официально вернулась к мнемоникам Intel и в данный момент половина ассемблеров для Fireball работает с мнемониками Intel, а половина - с мнемониками Zilog.
Похожие статьи
-
Микропроцессор - Компьютерный парк централизованной библиотечной системы
Микропроцессор представляет собой по существу миниатюрную электронно-вычислительную машину, размещенную в сверхбольшой интегральной схеме (СБИС). На...
-
Языки и системы программирования, их эволюция - Автоматизация решения задач пользователя
Язык программирования - это способ записи программ решения различных задач на ЭВМ в понятной для компьютера форме. Процессор компьютера непосредственно...
-
Характеристика стандарта IEEE 1284 - Компьютерный парк централизованной библиотечной системы
Стандарт IEEE 1284 определяет физические характеристики приемников и передатчиков сигналов, которые по уровням совместимы с ТТЛ. Спецификации...
-
Характеристика предприятия, Системный блок - Компьютерный парк централизованной библиотечной системы
Компьютерный парк централизованной библиотечной системы (ЦБС) Железинского района состоит из 15 компьютеров, 6 лазерных принтеров, 3 планшетных сканера и...
-
Плата оцифровки видеоизображения - Компьютерный парк централизованной библиотечной системы
Плата оцифровки видеоизображения или видеозахвата - электронное устройство (чаще PCI или PCI-E, реже USB-совместимая плата) для преобразования...
-
Инфракрасные порты - Компьютерный парк централизованной библиотечной системы
Все большее число настольных и переносных компьютеров и периферийных устройств оснащается инфракрасными последовательными портами. Свое название - IrDA -...
-
Заправка картриджа Задача: Заправка картриджа Выполнение ремонта: Заправка картриджа (англ. toner refill-добавление чернил) относится к процессу очищения...
-
Питания - Компьютерный парк централизованной библиотечной системы
В настольных системах, как правило, используются стандартные источники питания ATX. К важнейшим техническим характеристикам стандартных источников...
-
Эволюция языков программирования - Модульное и объектно-ориентированное программирование
Принцип программного управления компьютером состоит в том, что человек подает команды на логические схемы, которые управляют различными подсистемами...
-
Завершив выбор схемы работы системы и общего принципа работы ее частей и выбрав тип базы данных, следует перейти к выбору языка программирования....
-
Если проблема возникла в Windows XP, используйте консоль восстановления. Загрузившись с установочного диска в консоль, выполните команду: Chkdsk c: /r...
-
Проверка и диагностика жесткого диска - Компьютерный парк централизованной библиотечной системы
Запуск проверки диска из графического интерфейса В ОС Windows имеется собственная утилита проверки дисков. Ее можно запускать из графического интерфейса...
-
Поколения языков программирования Языки программирования принято делить на пять поколений. В первое поколение входят языки, созданные в начале 50-х...
-
Системный монитор - Компьютерный парк централизованной библиотечной системы
Системный монитор даст точную информацию о том, что происходит с вашим компьютером. Чтобы запустить системный монитор, в меню "Пуск" выберите "Настройка"...
-
Адаптеры и контроллеры - Компьютерный парк централизованной библиотечной системы
Для обеспечения взаимодействия различных устройств компьютера с микропроцессором и оперативной памятью, а также преобразования сигналов управления,...
-
Введение - Технология разработки программного обеспечения систем управления
С++ является языком объектно-ориентированного программирования (ООП). Объект - абстрактная сущность, наделенная характеристиками объектов реального мира....
-
Иерархия параллельных вычислительных систем - Повышение производительности работы библиотеки GridMD
Одной из основополагающих классификаций параллельных систем является Таксономия Флинна , в которой различаются следующие типы систем по взаимодействию...
-
Структурированный язык запросов SQL - Система управления базами данных
Запрос представляет собой специальным образом описанное требование, определяющее состав производимых над БД операций по выборке, удалению или модификации...
-
- Входной ток микросхемы (втекающий и вытекающий) не должен превышать 20 мкА, входные линии соединяются с шиной питания +5 В резистором 1,2 кОм. -...
-
Базовые понятия информации - Компьютерные и сетевые технологии
Информация компьютер математический сеть Мы начинаем первое знакомство с величайшим достижением нашей цивилизации, стоящем в одном ряду с изобретением...
-
Системы, расположенные на материнской плате - Усовершенствование материнской платы
Процессор - основная микросхема компьютера, в которой и производятся все вычисления. Конструктивно процессор состоит из ячеек, похожих на ячейки...
-
ЗАДАНИЕ, КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ - Основы программирования в операционной системе Unix
Цель работы : изучение и использование языка программирования С++ для работы с ресурсами операционной системы Unix. Написать программу на языке С++ в...
-
Информация с точки зрения информационной безопасности обладает следующими категориями: * конфиденциальность -- гарантия того, что конкретная информация...
-
Языки и методы параллельного программирования - Администрирование параллельных процессов
Применение параллельных архитектур повышает производительность при решении задач, явно сводимых к обработке векторов. Автоматическое распараллеливание...
-
Для написания АИС использовались следующие языки программирования, программные средства и библиотеки: - Язык программирования PHP 5.4; -...
-
Технология программирования Для реализации поставленной задачи наиболее удобной парадигмой программирования будет являться объектно-ориентированная...
-
ПО развивается исходя из требований других подсистем. ПО при обработке данных является связующим звеном между комплексом технических средств и другими...
-
Использование языка PERL для написания CGI-cкриптов - Язык программирования PERL. Сфера применения
Как вы узнали из предыдущей главы, CGI обеспечивает узлам Web вoзмoжнoсть интерактивной работы с клиентскими программами, в качестве которых обычно...
-
При создании программ и формировании структур баз данных нередко применяются формальные способы их представления - формальные нотации, с помощью которых...
-
Цель работы - Разработка компилятора подмножества языка Паскаль на язык Ассемблера
Изучение составных частей, основных принципов построения и функционирования компиляторов. Создание компилятора с заданного подмножества языка Паскаль с...
-
Языки программирования высокого уровня - Инструментальные средства разработки экспертных систем
Языки высокого уровня являются в руках опытного программиста прекрасным средством быстрого создания прототипа экспертной системы, позволяют обеспечить...
-
Объектно-ориентированные языки - Инструментальные средства разработки экспертных систем
В главе 12 мы уже обращали ваше внимание на то, что формат правил хорошо согласуется с представлением знаний в форме "при выполнении условий СЬ ..., С"...
-
Языки описания порождающих правил - Инструментальные средства разработки экспертных систем
Но, естественно, возможности языков высокого уровня также не беспредельны -- каждый из них имеет свои ограничения. Например, в языке OPS5 возможности...
-
Назначение и краткая характеристика встроенного языка Встроенный язык системы 1С: Предприятие предназначен для описания (на стадии разработки...
-
Процессор - Изучение устройства ЭВМ, системного блока РС и подключение к нему оборудования
Процессор - основная микросхема компьютера, в которой и производятся все вычисления. Конструктивно процессор состоит из ячеек, похожих на ячейки...
-
Что происходит во время записи? - Компьютерные и сетевые технологии
При обращениях к кэш-памяти на реальных программах преобладают обращения по чтению. Все обращения за командами являются обращениями по чтению и...
-
Модели параллельных вычислений - Администрирование параллельных процессов
Параллельное программирование представляет дополнительные источники сложности необходимо явно управлять работой тысяч процессоров, координировать...
-
Система IP-адресации. - Использование компьютерных сетей
Для организации всемирной сети нужна хорошая система адресации, которая будет использоваться для направления информации всем адресатам. Союз Internet...
-
Защита информации в БД - Банки и базы данных. Системы управления базами данных
Целью защиты информации является обеспечение безопасности ее хранения и обрабатывания. Процесс построения эффективной защиты начинается на начальных...
-
Файловая система - это часть операционной системы, назначение которой состоит в том, чтобы обеспечить пользователю удобный интерфейс при работе с...
Язык Ассемблера - Компьютерный парк централизованной библиотечной системы