Ассемблер

Ассемблер

INHIDE

Привет, "Хацкер"... Эту идею мы вынашивали долго. Наверное, несколько лет мы штурмовали ее со всех сторон, и всякий раз нам что-нибудь мешало. С одной стороны, ассемблер — это круто настолько, насколько вообще может быть круто для нашего читателя-хакера (крякера, реверсера) умение общаться с компьютером на его языке. С другой стороны — актуальных руководств по асму, в том числе издания этого века, достаточно, а времена нынче либеральные, веб-хакеры и любители JS могут нас не понять и не одобрить. Оказалось, что сейчас, в XXI веке, тру-крякеры все еще не сдали своих позиций и нашим читателям это интересно!


Ассе́мблер (от англ. 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. Но официально развитие программы полностьюостановлено.


Microsoft поддерживает свой продукт под названием Microsoft Macro Assembler. Она продолжает развиваться ипо сей день, последние версии включены в наборы DDK. Но версия программы, направленная на созданиепрограмм для DOS, не развивается. Кроме того, Стивен Хатчессон создал пакет для программирования наMASM под названием «MASM32».

GNU и GNU/Linux

В состав операционной системы GNU входит пакет binutils, включающий в себя ассемблер gas (GNUAssembler), использующий 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, представилисвои варианты ассемблеров. В ряде случаев применение этих ассемблеров оказывается более эффективнымблагодаря удобному набору директив и наличию среды программирования, объединяющей в себепрофессиональный ассемблер и язык программирования Си, отладчик и менеджер программных проектов.

AVR

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


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

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

ARM

Создать карусель Добавьте описание Этот раздел не завершён.Вы поможете проекту, исправив и дополнив его.

PIC

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


 
        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 (в среде 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

Создать карусель Добавьте описание Этот раздел не завершён.Вы поможете проекту, исправив и дополнив его.

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)

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

В викисловаре есть статья «макроассемблер»

Не следует путать с MASM.

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

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

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

INHIDE

Спасибо за прочтение данного материала, наши проекты:

INHIDE - канал в котором вы найдете много интересного контента из мира даркнета.

Cicada 3301 - канал, посвященный взломам, даркнету, кардингу, СИ и разной чернухи.

Cicada 3301 | ЧАТ - чат, где настоящие хацкеры обсуждают черные делишки, при этом, их не загребут на зону, ведь они полностью анонимны.

Report Page