Что такое ассемблер в информатике

Что такое ассемблер в информатике

Специфика системных программ, ориентированных на непосредственное взаимодействие с физическими устройствами компьютера, а так же необходимость доступа ко всем его аппаратным возможностям, часто не позволяют создавать элементы программ средствами языков высокого уровня. Более того, исполняемый код, порождаемый компиляторами, менее эффективен, чем код, созданный вручную. Поэтому повышенные требования к быстродействию и объему программ вызывают необходимость использования машинных команд или языка ассемблера.

Ассемблер (assembler, assembly language – монтаж, сборка) – язык программирования, понятия которого отражают архитектуру ЭВМ. Обеспечивает доступ к регистрам, указание методов адресации и описание операций в терминах команд конкретного процессора. Ассемблер, содержащий средства более высокого уровня: встроенные и определяемые макрокоманды, соответствующие нескольким машинным командам, автоматический выбор команды в зависимости от типов операндов, средства описания структур данных и т.д., является макроассемблером.

Язык ассемблера используется при:

1. Создании драйверов низшего уровня и некоторых других программ, требующих прямого доступа к потенциальным возможностям компьютера.

2. Достижении наибольшей эффективности использования вычислительных ресурсов при вычислениях с большим количеством вложенных циклов. Самые внутренние циклы часто программируются на языке ассемблера.

3. Решении задач в реальном масштабе времени, то есть управляющих программ, которые требуют быстрой реакции вычислительной системы на внешние воздействия, и процессы, строго привязанные к определенным моментам времени. Более того, управляющие однокристальные ЭВМ обычно имеют маленький объем памяти.

4. Для управляющих ЭВМ набор языков программирования очень ограничен. Обычно это ассемблер и Си, причем последний часто отсутствует.

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

Язык Турбо Паскаль допускает три основных вида доступа ко всем аппаратным возможностям ЭВМ:

1. Можно запрограммировать подпрограммы вне среды Паскаль на языке ассемблера или любом другом языке программирования и подключить полученный после ассемблирования или трансляции объектный модуль к Паскаль-программе.

2. Начиная с шестой версии в Паскале появились средства включения в текст программ фрагментов на языке ассемблера. Эти средства называются «встроенный ассемблер».

3. Можно непосредственно включать в текст программы фрагменты, написанные в машинном коде. Эти средства оставлены для совместимости с предыдущими версиями Турбо Паскаля и сейчас практически не используются и здесь не рассматриваются.

После трансляции с большинства языков программирования получается промежуточный объектный файл (OBJ-файл). Кроме непосредственно кодов он содержит некоторую дополнительную информацию.

Для подключения внешних подпрограмм в Паскале используется директива external, следующая за заголовком подпрограммы. Кроме этого, где-либо в тексте программы надо задать директиву компилятора $L, аргументом которой является имя OBJ-файла, содержащего код подключаемой подпрограммы, например:

Procedure SRoots(A,B,C:real); external;

Procedure CRoots(B,C,D.F:real); external;

Для обеспечения корректности такого подключения необходимо соблюдать определенные межъязыковые соглашения о связях, принятые в системе Турбо Паскаль.

Средства встроенного ассемблера позволяют подключать ассемблерный текст непосредственно в Паскаль-программы, что гораздо удобнее и гибче, чем техника подключения независимо разработанных ассемблерных программ с помощью аппарата внешних подпрограмм.

Встроенный ассемблер реализует подмножество языка ассемблера, совместимого с языками Turbo Assembler фирмы Borland (TASM) и макроассемблера фирмы Microsoft (MASM). Хотя некоторые возможности по описанию структур не реализованы, но они во многом соответствуют описаниям Паскаль-объектов – констант, переменных, подпрограмм.

Средства, образующие встроенный ассемблер, организованы в виде двух конструкций: ассемблерные операторы (asm-операторы) и ассемблерные подпрограммы.

Обычно комментарии на ассемблере следуют за точкой с запятой. Но в asm-операторах используются ограничители, принятые для Паскаля – < >и (* *). Точкой с запятой могут разделяться команды ассемблера, но обычно используется общепринятый разделитель – переход на новую строку.

Поэтому возможна следующая запись:

mov ax,Left; xchg ax,Right; mov Left,ax;

[метка:][префикс] инструкция [операнд[,операнд]]

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

Особенности использования asm-операторов.

1. Использование регистров. В связи с тем, что Паскаль использует некоторые регистры в своих целях, не допускается изменять содержимое регистров BP, SP, SS и DS.

2. Метки. Образование меток такое же, как и в Паскале. Они могут быть глобальными или локальными в asm-операторе. Но в последнем случае они не описываются и должны начинаться с символа «@».

3. Коды инструкций. Поддерживаются только все коды инструкций процессора i8086. Для использования расширения этих кодов для процессора i80286 и арифметических сопроцессоров необходимо использовать специальные директивы компилятора.

4. Зарезервированные слова. Для совместимости с ассемблером используется 41 зарезервированное слово, имеющее область действия только в asm-операторах. Эти слова имеют приоритет над именами пользователя, например:

Здесь единица загружается в регистр процессора Ch, а не в ячейку памяти с именем Ch. Для указания описанного имени, совпадающего с зарезервированным словом, надо использовать перед именем символ «&»:

5. Выражения. Использование выражений существенно отличается в Паскале и ассемблере. В Паскале упоминание переменной понимается как ее содержимое, а в asm-операторах обозначает адрес или константу. Поэтому оператор для х,

описанного как переменная, не помещает значение х+4 в АХ, а загружает в регистр значение слова, хранящегося по адресу, на 4 байта большему х. Для увеличения х на 4 выполняются действия:

Но записывать константы возможно следующим образом:

6. Есть 3 специальных переменных, одна из которых

@Result,

обозначает переменную с результатом функции. Например, функция

Для чисто ассемблерных подпрограмм может использоваться директива assembler. Это позволяет записывать подпрограммы полностью на языке ассемблера, с отсутствием операторных скобок и единственным asm-оператором:

Function LongMul(x,y:integer):longint; assembler;

Использование @Result здесь не допускается, так как компилятор не образует переменную для результата функции. Обмен данными производится через регистры.

Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: Увлечёшься девушкой-вырастут хвосты, займёшься учебой-вырастут рога 10282 — | 7952 — или читать все.

MCS-51 (Intel 8051) — классическая архитектура микроконтроллера. Для неё существует кросс-ассемблер ASM51, выпущенный корпорацией MetaLink.

Кроме того, многие фирмы — разработчики программного обеспечения, такие как IAR или Keil, представили свои варианты ассемблеров. В ряде случаев применение этих ассемблеров оказывается более эффективным благодаря удобному набору директив и наличию среды программирования, объединяющей в себе профессиональный ассемблер и язык программирования Си, отладчик и менеджер программных проектов.

Читайте также:  Как поменять тип нат

На данный момент существуют 3 компилятора производства Atmel (AVRStudio 3, AVRStudio 4, AVRStudio 5 и AVRStudio 6).

В рамках проекта AVR-GCC (он же WinAVR) существует компилятор avr-as (это портированный под AVR ассемблер GNU as из GCC).

Также существует свободный минималистический компилятор avra [1] .

Этот раздел не завершён.

Пример программы на языке Assembler для микроконтроллера PIC16F628A:

AVR32

Этот раздел не завершён.

MSP430

Пример программы на языке Assembler для микроконтроллера MSP430G2231 (в среде Code Composer Studio):

PowerPC

Этот раздел не завершён.

Программный пакет The PowerPC Software Development Toolset от IBM включает в себя ассемблер для PowerPC.

Этот раздел не завершён.

Архитектуры MISC

Этот раздел не завершён.

SeaForth

  • 8-разрядные Flash-контроллеры семейства MCS-51
  • 8-разрядные RISC-контроллеры семейства AVR (ATtiny, ATmega, classic AVR). На данный момент семейство classic AVR трансформировано в ATtiny и ATmega
  • 8-разрядные RISC-контроллеры семейства PIC (PIC10,PIC12,PIC16,PIC18)
  • 16-разрядные RISC-контроллеры семейства PIC (PIC24HJ/FJ,dsPIC30/33)
  • 32-разрядные RISC-контроллеры семейства PIC (PIC32) с архитектурой MIPS32 M4K
  • 32-разрядные RISC-контроллеры семейства AVR32 (AVR32)
  • 32-разрядные RISC-контроллеры семейства ARM Thumb высокой производительности (серия AT91)

Макроассемблер

Макроассемблер (от греч. μάκρος — большой, обширный) — макропроцессор, базовым языком которого является язык ассемблера. [2]

Ассемблирование и компилирование

Процесс трансляции программы на языке ассемблера в объектный код принято называть ассемблированием. В отличие от компилирования, ассемблирование — более или менее однозначный и обратимый процесс. В языке ассемблера каждой мнемонике соответствует одна машинная инструкция, в то время как в языках программирования высокого уровня за каждым выражением может скрываться большое количество различных инструкций. В принципе, это деление достаточно условно, поэтому иногда трансляцию ассемблерных программ также называют компиляцией.

Примечания

  1. Проект Ассемблер на сайте SourceForge.net
  2. Словарь по кибернетике / Под ред. академика В. С. Михалевича. — 2-е изд. — К. : Главная редакция Украинской Советской Энциклопедии имени М. П. Бажана, 1989. — 751 с. — (С48). — 50 000 экз. — ISBN 5-88500-008-5

См. также

Литература

  • Вострикова З. П. Программирование на языке ассемблера ЕС ЭВМ. М.: Наука, 1985.
  • Галисеев Г. В. Ассемблер для Win 32. Самоучитель. — М .: Диалектика, 2007. — С. 368. — ISBN 978-5-8459-1197-1
  • Зубков С. В. Ассемблер для DOS, Windows и UNIX.
  • Кип Ирвина. Язык ассемблера для процессоров Intel = Assembly Language for Intel-Based Computers. — М .: Вильямс, 2005. — С. 912. — ISBN 0-13-091013-9
  • Калашников О. А. Ассемблер? Это просто! Учимся программировать. — БХВ-Петербург, 2011. — С. 336. — ISBN 978-5-9775-0591-8
  • Магда Ю. С. Ассемблер. Разработка и оптимизация Windows-приложений. СПб.: БХВ-Петербург, 2003.
  • Нортон П., Соухэ Д. Язык ассемблера для IBM PC. М.: Компьютер, 1992.
  • Владислав Пирогов. Ассемблер для Windows. — СПб. : БХВ-Петербург, 2002. — 896 с. — ISBN 978-5-9775-0084-5
  • Владислав Пирогов. Ассемблер и дизассемблирование. — СПб. : БХВ-Петербург, 2006. — 464 с. — ISBN 5-94157-677-3
  • Сингер М. Мини-ЭВМ PDP-11: Программирование на языке ассемблера и организация машины. М.: Мир, 1984.
  • Скэнлон Л. Персональные ЭВМ IBM PC и XT. Программирование на языке ассемблера. М.: Радио и связь, 1989.
  • Юров В., Хорошенко С. Assembler: учебный курс. — СПб. : Питер, 2000. — С. 672. — ISBN 5-314-00047-4
  • Юров В. И. Assembler: учебник для вузов / 2-е изд. СПб.: Питер, 2004.
  • Юров В. И. Assembler. Практикум: учебник для вузов / 2-е изд. СПб.: Питер, 2004.
  • Юров В. И. Assembler. Специальный справочник. СПб.: Питер, 2000.

Ссылки

  • Крис Касперски. Сравнение ассемблерных трансляторов
Язык ассемблера
IDE

RadASM • WinAsm • ASMedit • Easy Code • Fresh • GSS Visual Assembler

Форматы синтаксиса
Микроконтроллеры
Архитектура
8-бит MCS-51 • MCS-48 • PIC • AVR • Z8 • H8 • COP8 • 68HC08 • 68HC11
16-бит MSP430 • MCS-96 • MCS-296 • PIC24 • MAXQ • Nios • 68HC12 • 68HC16
32-бит ARM • MIPS • AVR32 • PIC32 • 683XX • M32R • SuperH • Nios II • Am29000 • LatticeMico32 • MPC5xx • PowerQUICC • Parallax Propeller
Производители Analog Devices • Atmel • Silabs • Freescale • Fujitsu • Holtek • Hynix • Infineon • Intel • Microchip • Maxim • Parallax • NXP Semiconductors • Renesas • Texas Instruments • Toshiba • Ubicom • Zilog • Cypress Компоненты Регистр • Процессор • SRAM • EEPROM • Флеш-память • Кварцевый резонатор • Кварцевый генератор • RC-генератор • Корпус Периферия Таймер • АЦП • ЦАП • Компаратор • ШИМ-контроллер • Счётчик • LCD • Датчик температуры • Watchdog Timer Интерфейсы CAN • UART • USB • SPI • I²C • Ethernet • 1-Wire ОС FreeRTOS • μClinux • BeRTOS • ChibiOS/RT • eCos • RTEMS • Unison • MicroC/OS-II • Nucleus Программирование JTAG • C2 • Программатор • Ассемблер • Прерывание • MPLAB • AVR Studio • MCStudio

Wikimedia Foundation . 2010 .

Смотреть что такое "Ассемблер" в других словарях:

АССЕМБЛЕР — [англ. assembler Словарь иностранных слов русского языка

Ассемблер — транслятор с языка ассемблера в машинные команды. См. также: Трансляторы Языки ассемблера Финансовый словарь Финам … Финансовый словарь

ассемблер — сущ., кол во синонимов: 4 • микроассемблер (1) • мини ассемблер (1) • наноассемблер … Словарь синонимов

ассемблер — Программа или техническое средство, выполняющие ассемблирование. [ГОСТ 19781 90] ассемблер машинно ориентированный язык программирования Программа, преобразующая исходный текст программы на Ассемблере в объектный файл или непосредственно в… … Справочник технического переводчика

АССЕМБЛЕР — (англ. assembler от assemble собирать, монтировать), вспомогательная программа в составе операционной системы для автоматического перевода исходной программы, подлежащей выполнению на ЭВМ, на машинный язык. Один из видов транслятора … Большой Энциклопедический словарь

Читайте также:  Параллельное программирование на c в действии

АССЕМБЛЕР — (assembler) Компьютерная программа, которая обрабатывает команды, данные пользователем в виде сокращенных записей, называемых языком ассемблера (assembly language) и конвертирует их в форму, распознаваемую компьютером. Бизнес. Толковый словарь. М … Словарь бизнес-терминов

ассемблер — [сэ], а; м. [англ. assembly program (routine)]. Информ. Вспомогательная программа в операционной системе для автоматического перевода программы с автокода на машинный язык. * * * ассемблер (англ. assembler, от assemble собирать, монтировать),… … Энциклопедический словарь

ассемблер — Assembler Ассемблер Прибор (молекулярная машина) общего назначения для молекулярного производства, способный направлять химические реакции за счет позиционирования молекул; может быть запрограммирован на создание практически любой… … Толковый англо-русский словарь по нанотехнологии. — М.

ассемблер — asembleris statusas T sritis automatika atitikmenys: angl. assembler vok. Assembler, m; Assemblierer, m rus. ассемблер, m pranc. programme d assemblage, m … Automatikos terminų žodynas

Ассемблер — 41. Ассемблер Assembler Программа или техническое средство, выполняющие ассемблирование Источник: ГОСТ 19781 90: Обеспечение систем обработки информации программное. Термины и определения … Словарь-справочник терминов нормативно-технической документации

Содержание статьи

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

Но что такое программирование само по себе по своей сути, вне зависимости от какого-либо языка? Разнообразие ответов поражает. Наиболее часто можно услышать такое определение: программирование — это составление инструкций или команд для последовательного исполнения их машиной с целью решить ту или иную задачу. Такой ответ вполне справедлив, но, на мой взгляд, не отражает всей полноты, как если бы мы назвали литературу составлением из слов предложений для последовательного прочтения их читателем. Я склонен полагать, что программирование ближе к творчеству, к искусству. Как любой вид искусства — выражение творческой мысли, идеи, программирование представляет собой отражение человеческой мысли. Мысль же бывает и гениальная, и совершенно посредственная.

Но, каким бы видом программирования мы ни занимались, успех зависит от практических навыков вкупе со знанием фундаментальных основ и теории. Теория и практика, изучение и труд — вот краеугольные камни, на которых основывается успех.

В последнее время ассемблер незаслуженно находится в тени других языков. Обусловлено это глобальной коммерциализацией, направленной на то, чтобы в максимально короткие сроки получить как можно большую прибыль от продукта. Иными словами, массовость взяла верх над элитарностью. А ассемблер, по моему мнению, ближе к последнему. Гораздо выгоднее в сравнительно небольшие сроки поднатаскать ученика в таких, например, языках, как С++, С#, PHP, Java, JavaScript, Python, чтобы он был более-менее способен создавать ширпотребный софт, не задаваясь вопросами, зачем и почему он так делает, чем выпустить хорошего специалиста по ассемблеру. Примером тому служит обширнейший рынок всевозможных курсов по программированию на любом языке, за исключением ассемблера. Та же тенденция прослеживается как в преподавании в вузах, так и в учебной литературе. В обоих случаях вплоть до сегодняшнего дня большая часть материала базируется на ранних процессорах серии 8086, на так называемом «реальном» 16-битном режиме работы, операционной среде MS-DOS! Возможно, что одна из причин в том, что, с одной стороны, с появлением компьютеров IBM PC преподавателям пришлось перейти именно на эту платформу из-за недоступности других. А с другой стороны, по мере развития линейки 80х86 возможность запуска программ в режиме DOS сохранялась, что позволяло сэкономить деньги на приобретение новых учебных компьютеров и составление учебников для изучения архитектуры новых процессоров. Однако сейчас такой выбор платформы для изучения совершенно неприемлем. MS-DOS как среда выполнения программ безнадежно устарела уже к середине девяностых годов, а с переходом к 32-битным процессорам, начиная с процессора 80386, сама система команд стала намного более логичной. Так что бессмысленно тратить время на изучение и объяснение странностей архитектуры реального режима, которые заведомо никогда уже не появятся ни на одном процессоре.

Что касается выбора операционной среды для изучения ассемблера, то, если говорить о 32-битной системе команд, выбор сравнительно невелик. Это либо операционные системы Windows, либо представители семейства UNIX.

Также следует сказать несколько слов о том, какой именно ассемблер выбрать для той или другой операционной среды. Как известно, для работы с процессорами х86 используются два типа синтаксиса ассемблера — это синтаксис AT&T и синтаксис Intel. Эти синтаксисы представляют одни и те же команды совершенно по-разному. Например, команда в синтаксисе Intel выглядит так:

В синтаксисе же AT&T уже будет иной вид:

В среде ОС UNIX более популярен синтаксис типа AT&T, однако учебных пособий по нему нет, он описывается исключительно в справочной и технической литературе. Поэтому логично выбрать ассемблер на основе синтаксиса Intel. Для UNIX-систем есть два основных ассемблера — это NASM (Netwide Assembler) и FASM (Flat Assembler). Для линейки Windows популярностью пользуются FASM и MASM (Macro Assembler) от фирмы Microsoft, и также существовал еще TASM (Turbo Assembler) фирмы Borland, которая уже довольно давно отказалась от поддержки собственного детища.

В данном цикле статей изучение будем вести в среде Windows на основе языка ассемблера MASM (просто потому, что он мне нравится больше). Многие авторы на начальном этапе изучения ассемблера вписывают его в оболочку языка си, исходя из тех соображений, что перейти к практическим примерам в операционной среде якобы довольно трудно: нужно знать и основы программирования в ней, и команды процессора. Однако и такой подход требует хоть мало-мальских начатков знаний в языке си. Данный же цикл статей от самого своего начала будет сосредоточен только на самом ассемблере, не смущая читателя ничем иным, ему непонятным, хотя в дальнейшем и будет прослеживаться связь с другими языками.

Следует отметить, что при изучении основ программирования, и это касается не только программирования на ассемблере, крайне полезно иметь представление о культуре консольных приложений. И совершенно нежелательно начинать обучение сразу же с создания окошечек, кнопочек, то есть с оконных приложений. Бытует мнение, что консоль — архаичный пережиток прошлого. Однако это не так. Консольное приложение почти лишено всякой внешней зависимости от оконной оболочки и сосредоточено главным образом на выполнении конкретно поставленной задачи, что дает прекрасную возможность, не отвлекаясь ни на что другое, концентрировать внимание на изучении базовых основ как программирования, так и самого ассемблера, включая знакомство с алгоритмами и их разработку для решения практических задач. И к тому моменту, когда настанет время перейти к знакомству с оконными приложениями, за плечами уже будет внушительный запас знаний, ясное представление о работе процессора и, самое главное, осознание своих действий: как и что работает, зачем и почему.

Читайте также:  Как в эксель формулу заменить на значение

Что такое ассемблер?

Само слово ассемблер (assembler) переводится с английского как «сборщик». На самом деле так называется программа-транслятор, принимающая на входе текст, содержащий условные обозначения машинных команд, удобные для человека, и переводящая эти обозначения в последовательность соответствующих кодов машинных команд, понятных процессору. В отличие от машинных команд, их условные обозначения, называемые также мнемониками, запомнить сравнительно легко, так как они представляют собой сокращения от английских слов. В дальнейшем мы будем для простоты именовать мнемоники ассемблерными командами. Язык условных обозначений и называется языком ассемблера.

На заре компьютерной эры первые ЭВМ занимали целые комнаты и весили не одну тонну, имея объем памяти с воробьиный мозг, а то и того меньше. Единственным способом программирования в те времена было вбивать программу в память компьютера непосредственно в цифровом виде, переключая тумблеры, проводки и кнопочки. Число таких переключений могло достигать нескольких сотен и росло по мере усложнения программ. Встал вопрос об экономии времени и денег. Поэтому следующим шагом в развитии стало появление в конце сороковых годов прошлого века первого транслятора-ассемблера, позволяющего удобно и просто писать машинные команды на человеческом языке и в результате автоматизировать весь процесс программирования, упростить, ускорить разработку программ и их отладку. Затем появились языки высокого уровня и компиляторы (более интеллектуальные генераторы кода с более понятного человеку языка) и интерпретаторы (исполнители написанной человеком программы на лету). Они совершенствовались, совершенствовались — и, наконец, дошло до того, что можно просто программировать мышкой.

Таким образом, ассемблер — это машинно ориентированный язык программирования, позволяющий работать с компьютером напрямую, один на один. Отсюда и его полная формулировка — язык программирования низкого уровня второго поколения (после машинного кода). Команды ассемблера один в один соответствуют командам процессора, но поскольку существуют различные модели процессоров со своим собственным набором команд, то, соответственно, существуют и разновидности, или диалекты, языка ассемблера. Поэтому использование термина «язык ассемблера» может вызвать ошибочное мнение о существовании единого языка низкого уровня или хотя бы стандарта на такие языки. Его не существует. Поэтому при именовании языка, на котором написана конкретная программа, необходимо уточнять, для какой архитектуры она предназначена и на каком диалекте языка написана. Поскольку ассемблер привязан к устройству процессора, а тип процессора жестко определяет набор доступных команд машинного языка, то программы на ассемблере не переносимы на иную компьютерную архитектуру.

Поскольку ассемблер всего лишь программа, написанная человеком, ничто не мешает другому программисту написать свой собственный ассемблер, что часто и происходит. На самом деле не так уж важно, язык какого именно ассемблера изучать. Главное — понять сам принцип работы на уровне команд процессора, и тогда не составит труда освоить не только другой ассемблер, но и любой другой процессор со своим набором команд.

Синтаксис

Общепринятого стандарта для синтаксиса языков ассемблера не существует. Однако большинство разработчиков языков ассемблера придерживаются общих традиционных подходов. Основные такие стандарты — Intel-синтаксис и AT&T-синтаксис.

Общий формат записи инструкций одинаков для обоих стандартов:

Опкод — это и есть собственно ассемблерная команда, мнемоника инструкции процессору. К ней могут быть добавлены префиксы (например, повторения, изменения типа адресации). В качестве операндов могут выступать константы, названия регистров, адреса в оперативной памяти и так далее. Различия между стандартами Intel и AT&T касаются в основном порядка перечисления операндов и их синтаксиса при разных методах адресации.

Используемые команды обычно одинаковы для всех процессоров одной архитектуры или семейства архитектур (среди широко известных — команды процессоров и контроллеров Motorola, ARM, x86). Они описываются в спецификации процессоров.

Например, процессор Zilog Z80 наследовал систему команд Intel i8080, расширил ее и поменял некоторые команды (и обозначения регистров) на свой лад. Например, сменил Intel-команду mov на ld. Процессоры Motorola Fireball наследовали систему команд Z80, несколько ее урезав. Вместе с тем Motorola официально вернулась к Intel-командам, и в данный момент половина ассемблеров для Fireball работает с Intel-командами, а половина — с командами Zilog.

Директивы

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

  • определение данных (констант и переменных);
  • управление организацией программы в памяти и параметрами выходного файла;
  • задание режима работы компилятора;
  • всевозможные абстракции (то есть элементы языков высокого уровня) — от оформления процедур и функций (для упрощения реализации передачи параметров) до условных конструкций и циклов;
  • макросы.

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее

Ссылка на основную публикацию
Что делать если завис телефон андроид
Что делать, если завис Андроид и не реагирует не на что? В этой статье мы посмотрим четыре простых способа как...
Фум лента в стоматологии фото
Автор: G. Freedman Перевод: Александр Зыбайло Автор: G. Freedman Перевод: Александр Зыбайло Ограничение количества цемента для фиксации и использование определенной...
Функции жесткого диска в компьютере
Жесткий диск, он же винчестер, является основным местом, где хранится вся информация. В отличие от оперативной памяти, он энергетически независим,...
Что дают за рейтинговые бои
В кои-то веки разработчики решили прислушаться к мнению игроков и ввести в Варфейс рейтинговые матчи. Теперь каждый игрок, достигший 26...
Adblock detector