Ассемблер
Ассе́мблер (от англ. assembler — сборщик) — транслятор исходного текста программы, написанной на языке ассемблера, в программу на машинном языке.
Как и сам язык, ассемблеры, как правило, специфичны для конкретной архитектуры, операционной системы и варианта синтаксиса языка. Вместе с тем существуют мультиплатформенные или вовсе универсальные (точнее, ограниченно-универсальные, потому что на языке низкого уровня нельзя написать аппаратно-независимые программы) ассемблеры, которые могут работать на разных платформах и операционных системах. Среди последних можно также выделить группу кросс-ассемблеров, способных собирать машинный код и исполняемые модули (файлы) для других архитектур и операционных систем.
Ассемблирование может быть не первым и не последним этапом на пути получения исполнимого модуля программы. Так, многие компиляторы с языков программирования высокого уровня выдают результат в виде программы на языке ассемблера, которую в дальнейшем обрабатывает ассемблер. Также результатом ассемблирования может быть не исполняемый, а объектный модуль, содержащий разрозненные блоки машинного кода и данных программы, из которого (или из нескольких объектных модулей) в дальнейшем с помощью редактора связей может быть получен исполнимый файл.
Содержание
Архитектура x86
Ассемблеры для DOS
Наиболее известными ассемблерами для операционной системы DOS являлись Borland Turbo Assembler (TASM), Microsoft Macro Assembler (MASM) и Watcom Assembler (WASM). Также в своё время был популярен простой ассемблер A86.
Windows
При появлении операционной системы Windows появилось расширение TASM, именуемое TASM 5+ (неофициальный пакет, созданный человеком с ником !tE), позволившее создавать программы для выполнения в среде Windows. Последняя известная версия TASM — 5.3, поддерживающая инструкции MMX, на данный момент включена в Turbo C++ Explorer. Но официально развитие программы полностью остановлено. Последнее развитие компилятор получил благодаря современной среде разработки TASM Visual. Среда неофициальная, но с её помощью работа с компилятором многократно упрощается.
Microsoft поддерживает свой продукт под названием Microsoft Macro Assembler. Она продолжает развиваться и по сей день, последние версии включены в наборы DDK. Но версия программы, направленная на создание программ для DOS, не развивается. Кроме того, Стивен Хатчессон создал пакет для программирования на MASM под названием «MASM32».
GNU и Linux
В состав операционной системы GNU входит пакет binutils, включающий в себя ассемблер gas (GNU Assembler), использующий AT&T-синтаксис, в отличие от большинства других популярных ассемблеров, которые используют Intel-синтаксис (поддерживается с версии 2.10).
Переносимые ассемблеры
Также существует открытый проект ассемблера, версии которого доступны под различные операционные системы, и который позволяет получать объектные файлы для этих систем. Называется этот ассемблер NASM (Netwide Assembler).
Yasm — это переписанная с нуля версия NASM под лицензией BSD (с некоторыми исключениями).
flat assembler (fasm) — молодой ассемблер под модифицированной для запрета перелицензирования (в том числе под GNU GPL) BSD-лицензией. Есть версии для KolibriOS, Linux, DOS и Windows; использует Intel-синтаксис и поддерживает инструкции x86-64.
Архитектуры RISC
MCS-51
MCS-51 (Intel 8051) — классическая архитектура микроконтроллера. Для неё существует кросс-ассемблер ASM51, выпущенный корпорацией MetaLink.
Кроме того, многие фирмы-разработчики программного обеспечения, такие, как IAR или Keil, представили свои варианты ассемблеров. В ряде случаев применение этих ассемблеров оказывается более эффективным благодаря удобному набору директив и наличию среды программирования, объединяющей в себе профессиональный ассемблер и язык программирования Си, отладчик и менеджер программных проектов.
Пример программы на языке ASM-51 для микроконтроллера AT89S52:
mov SCON, #50h
mov TH1, #0FDh
orl TMOD, #20h
setb TR1
again:
clr RI
jnb RI, $
mov A, SBUF
jnb RI, $
clr TI
mov SBUF, A
jnb TI, $
sjmp again
AVR
На данный момент для AVR существуют 5 компиляторов производства Atmel (AVRStudio 3, AVRStudio 4, AVRStudio 5, AVRStudio 6 и AVRStudio 7).
В рамках проекта AVR-GCC (он же WinAVR) существует компилятор avr-as (это портированный под AVR ассемблер GNU as из GCC).
Также существует свободный минималистический компилятор avra[1].
Платные компиляторы: IAR (EWAVR), CodeVisionAVR, Imagecraft. Данные компиляторы поддерживают языки Assembler и C, а IAR ещё и C++.
Существует компилятор с языка BASIC — BASCOM, также платный.
ARM
Этот раздел статьи ещё не написан. Согласно замыслу одного из участников Википедии, на этом месте должен располагаться специальный раздел.
Вы можете помочь проекту, написав этот раздел. |
PIC
Этот раздел не завершён. Вы поможете проекту, исправив и дополнив его.
|
Пример программы на языке ассемблера для микроконтроллера PIC16F628A (архитектура PIC):
LIST p=16F628A
__CONFIG 0309H
STATUS equ 0x003
TRISB equ 0x086
PORTB equ 0x006
RP0 equ 5
org 0
goto start
start:
bsf STATUS,RP0
movlw .00
movwf TRISB
bcf STATUS,RP0
led:
movlw .170
movwf PORTB
goto led
end
AVR32
Этот раздел статьи ещё не написан. Согласно замыслу одного из участников Википедии, на этом месте должен располагаться специальный раздел.
Вы можете помочь проекту, написав этот раздел. |
MSP430
Этот раздел не завершён. Вы поможете проекту, исправив и дополнив его.
|
Пример программы на языке Assembler для микроконтроллера MSP430G2231 (архитектура MSP, в среде Code Composer Studio):
.cdecls C,LIST, "msp430g2231.h"
;------------------------------------------------------------------------------
.text ; Program Start
;------------------------------------------------------------------------------
RESET mov.w #0280h,SP ; Initialize stackpointer
StopWDT mov.w #WDTPW+WDTHOLD,&WDTCTL ; Stop WDT
SetupP1 bis.b #001h,&P1DIR ; P1.0 output
;
Mainloop bit.b #010h,&P1IN ; P1.4 hi/low?
jc ON ; jmp--> P1.4 is set
;
OFF bic.b #001h,&P1OUT ; P1.0 = 0 / LED OFF
jmp Mainloop ;
ON bis.b #001h,&P1OUT ; P1.0 = 1 / LED ON
jmp Mainloop ;
;
;------------------------------------------------------------------------------
; Interrupt Vectors
;------------------------------------------------------------------------------
.sect ".reset" ; MSP430 RESET Vector
.short RESET ;
.end
PowerPC
Этот раздел не завершён. Вы поможете проекту, исправив и дополнив его.
|
Программный пакет The PowerPC Software Development Toolset от IBM включает в себя ассемблер для PowerPC.
MIPS
Этот раздел статьи ещё не написан. Согласно замыслу одного из участников Википедии, на этом месте должен располагаться специальный раздел.
Вы можете помочь проекту, написав этот раздел. |
Архитектуры MISC
Этот раздел статьи ещё не написан. Согласно замыслу одного из участников Википедии, на этом месте должен располагаться специальный раздел.
Вы можете помочь проекту, написав этот раздел. |
Макроассемблер
Макроассемблер (от греч. μάκρος — большой, обширный) — макропроцессор, базовым языком которого является язык ассемблера[2].
Ассемблирование и компилирование
Процесс трансляции программы на языке ассемблера в объектный код принято называть ассемблированием. В отличие от компилирования, ассемблирование — более или менее однозначный и обратимый процесс. В языке ассемблера каждой мнемонике соответствует одна машинная инструкция, в то время как в языках программирования высокого уровня за каждым выражением может скрываться большое количество различных инструкций. В принципе, это деление достаточно условно, поэтому иногда трансляцию ассемблерных программ также называют компиляцией.
См. также
Напишите отзыв о статье "Ассемблер"
Примечания
- ↑ [avra.sourceforge.net Проект Ассемблер] на сайте SourceForge.net
- ↑ Словарь по кибернетике / Под ред. академика В. С. Михалевича. — 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. — М.: ДМК Пресс, 2006. — С. 608. — ISBN 5-94074-259-9.
- Ирвин Кип. Язык ассемблера для процессоров 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.
|
|
Отрывок, характеризующий Ассемблер
– Да, разве это! – сказал князь Андрей. – Иди, Маша, я сейчас приду.По дороге к комнате сестры, в галлерее, соединявшей один дом с другим, князь Андрей встретил мило улыбавшуюся m lle Bourienne, уже в третий раз в этот день с восторженною и наивною улыбкой попадавшуюся ему в уединенных переходах.
– Ah! je vous croyais chez vous, [Ах, я думала, вы у себя,] – сказала она, почему то краснея и опуская глаза.
Князь Андрей строго посмотрел на нее. На лице князя Андрея вдруг выразилось озлобление. Он ничего не сказал ей, но посмотрел на ее лоб и волосы, не глядя в глаза, так презрительно, что француженка покраснела и ушла, ничего не сказав.
Когда он подошел к комнате сестры, княгиня уже проснулась, и ее веселый голосок, торопивший одно слово за другим, послышался из отворенной двери. Она говорила, как будто после долгого воздержания ей хотелось вознаградить потерянное время.
– Non, mais figurez vous, la vieille comtesse Zouboff avec de fausses boucles et la bouche pleine de fausses dents, comme si elle voulait defier les annees… [Нет, представьте себе, старая графиня Зубова, с фальшивыми локонами, с фальшивыми зубами, как будто издеваясь над годами…] Xa, xa, xa, Marieie!
Точно ту же фразу о графине Зубовой и тот же смех уже раз пять слышал при посторонних князь Андрей от своей жены.
Он тихо вошел в комнату. Княгиня, толстенькая, румяная, с работой в руках, сидела на кресле и без умолку говорила, перебирая петербургские воспоминания и даже фразы. Князь Андрей подошел, погладил ее по голове и спросил, отдохнула ли она от дороги. Она ответила и продолжала тот же разговор.
Коляска шестериком стояла у подъезда. На дворе была темная осенняя ночь. Кучер не видел дышла коляски. На крыльце суетились люди с фонарями. Огромный дом горел огнями сквозь свои большие окна. В передней толпились дворовые, желавшие проститься с молодым князем; в зале стояли все домашние: Михаил Иванович, m lle Bourienne, княжна Марья и княгиня.
Князь Андрей был позван в кабинет к отцу, который с глазу на глаз хотел проститься с ним. Все ждали их выхода.
Когда князь Андрей вошел в кабинет, старый князь в стариковских очках и в своем белом халате, в котором он никого не принимал, кроме сына, сидел за столом и писал. Он оглянулся.
– Едешь? – И он опять стал писать.
– Пришел проститься.
– Целуй сюда, – он показал щеку, – спасибо, спасибо!
– За что вы меня благодарите?
– За то, что не просрочиваешь, за бабью юбку не держишься. Служба прежде всего. Спасибо, спасибо! – И он продолжал писать, так что брызги летели с трещавшего пера. – Ежели нужно сказать что, говори. Эти два дела могу делать вместе, – прибавил он.
– О жене… Мне и так совестно, что я вам ее на руки оставляю…
– Что врешь? Говори, что нужно.
– Когда жене будет время родить, пошлите в Москву за акушером… Чтоб он тут был.
Старый князь остановился и, как бы не понимая, уставился строгими глазами на сына.
– Я знаю, что никто помочь не может, коли натура не поможет, – говорил князь Андрей, видимо смущенный. – Я согласен, что и из миллиона случаев один бывает несчастный, но это ее и моя фантазия. Ей наговорили, она во сне видела, и она боится.
– Гм… гм… – проговорил про себя старый князь, продолжая дописывать. – Сделаю.
Он расчеркнул подпись, вдруг быстро повернулся к сыну и засмеялся.
– Плохо дело, а?
– Что плохо, батюшка?
– Жена! – коротко и значительно сказал старый князь.
– Я не понимаю, – сказал князь Андрей.
– Да нечего делать, дружок, – сказал князь, – они все такие, не разженишься. Ты не бойся; никому не скажу; а ты сам знаешь.
Он схватил его за руку своею костлявою маленькою кистью, потряс ее, взглянул прямо в лицо сына своими быстрыми глазами, которые, как казалось, насквозь видели человека, и опять засмеялся своим холодным смехом.
Сын вздохнул, признаваясь этим вздохом в том, что отец понял его. Старик, продолжая складывать и печатать письма, с своею привычною быстротой, схватывал и бросал сургуч, печать и бумагу.
– Что делать? Красива! Я всё сделаю. Ты будь покоен, – говорил он отрывисто во время печатания.
Андрей молчал: ему и приятно и неприятно было, что отец понял его. Старик встал и подал письмо сыну.
– Слушай, – сказал он, – о жене не заботься: что возможно сделать, то будет сделано. Теперь слушай: письмо Михайлу Иларионовичу отдай. Я пишу, чтоб он тебя в хорошие места употреблял и долго адъютантом не держал: скверная должность! Скажи ты ему, что я его помню и люблю. Да напиши, как он тебя примет. Коли хорош будет, служи. Николая Андреича Болконского сын из милости служить ни у кого не будет. Ну, теперь поди сюда.
Он говорил такою скороговоркой, что не доканчивал половины слов, но сын привык понимать его. Он подвел сына к бюро, откинул крышку, выдвинул ящик и вынул исписанную его крупным, длинным и сжатым почерком тетрадь.
– Должно быть, мне прежде тебя умереть. Знай, тут мои записки, их государю передать после моей смерти. Теперь здесь – вот ломбардный билет и письмо: это премия тому, кто напишет историю суворовских войн. Переслать в академию. Здесь мои ремарки, после меня читай для себя, найдешь пользу.
Андрей не сказал отцу, что, верно, он проживет еще долго. Он понимал, что этого говорить не нужно.
– Всё исполню, батюшка, – сказал он.
– Ну, теперь прощай! – Он дал поцеловать сыну свою руку и обнял его. – Помни одно, князь Андрей: коли тебя убьют, мне старику больно будет… – Он неожиданно замолчал и вдруг крикливым голосом продолжал: – а коли узнаю, что ты повел себя не как сын Николая Болконского, мне будет… стыдно! – взвизгнул он.
– Этого вы могли бы не говорить мне, батюшка, – улыбаясь, сказал сын.
Старик замолчал.
– Еще я хотел просить вас, – продолжал князь Андрей, – ежели меня убьют и ежели у меня будет сын, не отпускайте его от себя, как я вам вчера говорил, чтоб он вырос у вас… пожалуйста.
– Жене не отдавать? – сказал старик и засмеялся.
Они молча стояли друг против друга. Быстрые глаза старика прямо были устремлены в глаза сына. Что то дрогнуло в нижней части лица старого князя.
– Простились… ступай! – вдруг сказал он. – Ступай! – закричал он сердитым и громким голосом, отворяя дверь кабинета.
– Что такое, что? – спрашивали княгиня и княжна, увидев князя Андрея и на минуту высунувшуюся фигуру кричавшего сердитым голосом старика в белом халате, без парика и в стариковских очках.
Князь Андрей вздохнул и ничего не ответил.
– Ну, – сказал он, обратившись к жене.
И это «ну» звучало холодною насмешкой, как будто он говорил: «теперь проделывайте вы ваши штуки».
– Andre, deja! [Андрей, уже!] – сказала маленькая княгиня, бледнея и со страхом глядя на мужа.
Он обнял ее. Она вскрикнула и без чувств упала на его плечо.
Он осторожно отвел плечо, на котором она лежала, заглянул в ее лицо и бережно посадил ее на кресло.
– Adieu, Marieie, [Прощай, Маша,] – сказал он тихо сестре, поцеловался с нею рука в руку и скорыми шагами вышел из комнаты.
Княгиня лежала в кресле, m lle Бурьен терла ей виски. Княжна Марья, поддерживая невестку, с заплаканными прекрасными глазами, всё еще смотрела в дверь, в которую вышел князь Андрей, и крестила его. Из кабинета слышны были, как выстрелы, часто повторяемые сердитые звуки стариковского сморкания. Только что князь Андрей вышел, дверь кабинета быстро отворилась и выглянула строгая фигура старика в белом халате.
– Уехал? Ну и хорошо! – сказал он, сердито посмотрев на бесчувственную маленькую княгиню, укоризненно покачал головою и захлопнул дверь.
В октябре 1805 года русские войска занимали села и города эрцгерцогства Австрийского, и еще новые полки приходили из России и, отягощая постоем жителей, располагались у крепости Браунау. В Браунау была главная квартира главнокомандующего Кутузова.
11 го октября 1805 года один из только что пришедших к Браунау пехотных полков, ожидая смотра главнокомандующего, стоял в полумиле от города. Несмотря на нерусскую местность и обстановку (фруктовые сады, каменные ограды, черепичные крыши, горы, видневшиеся вдали), на нерусский народ, c любопытством смотревший на солдат, полк имел точно такой же вид, какой имел всякий русский полк, готовившийся к смотру где нибудь в середине России.
С вечера, на последнем переходе, был получен приказ, что главнокомандующий будет смотреть полк на походе. Хотя слова приказа и показались неясны полковому командиру, и возник вопрос, как разуметь слова приказа: в походной форме или нет? в совете батальонных командиров было решено представить полк в парадной форме на том основании, что всегда лучше перекланяться, чем не докланяться. И солдаты, после тридцативерстного перехода, не смыкали глаз, всю ночь чинились, чистились; адъютанты и ротные рассчитывали, отчисляли; и к утру полк, вместо растянутой беспорядочной толпы, какою он был накануне на последнем переходе, представлял стройную массу 2 000 людей, из которых каждый знал свое место, свое дело и из которых на каждом каждая пуговка и ремешок были на своем месте и блестели чистотой. Не только наружное было исправно, но ежели бы угодно было главнокомандующему заглянуть под мундиры, то на каждом он увидел бы одинаково чистую рубаху и в каждом ранце нашел бы узаконенное число вещей, «шильце и мыльце», как говорят солдаты. Было только одно обстоятельство, насчет которого никто не мог быть спокоен. Это была обувь. Больше чем у половины людей сапоги были разбиты. Но недостаток этот происходил не от вины полкового командира, так как, несмотря на неоднократные требования, ему не был отпущен товар от австрийского ведомства, а полк прошел тысячу верст.