18c0693f

    Программирование на языке Assembler

Программирование на языке ассемблера (Assembler) — это создание программ, которые представляют команды процессора в виде, доступном для чтения человеком. Это язык программирования низкого уровня, максимально приближённый к аппаратному обеспечению компьютера.

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

Команды чаще всего состоят из двух частей:

Мнемоники — сокращённого слова или предложения, описывающего выполняемую операцию.

Операндов — списка из 0–3 элементов, описывающих то, на что влияет операция. Операнды могут быть ячейками оперативной памяти или регистрами — внутренней памятью процессора.

Метки позволяют присвоить конкретным командам человекочитаемые имена, повышают понятность кода и позволяют ссылаться на эти команды из других частей программы.

Ассемблерные файлы обычно имеют расширение .s или .asm и разделены на три части: data (определяют константы и инициализированные переменные), bss (определяют неинициализированные переменные), text (вводят код).

Точка с запятой (;) — символ комментария: то, что идёт после него, не будет исполняться.

  • Assembler - язык неограниченных возможностей
    Минимальная единица информации называется битом. Бит может принимать только два значения - обычно 0 и 1. На самом деле эти значения совершенно необязательны - один бит может принимать значения "да" и "нет", показывать присутствие и отсутствие жесткого диска, является ли персонаж игры магом или воином - важно лишь то, что бит имеет только два значения

  • Assembler для начинающих
    Мы назвали "битом" двоичную цифру, еденичное значение 0 или 1.  Для удобства введем специальные названия для некоторых последовательностей битов.  Группу из 8 бит принято называть байтом.  Во всей документации IBM и в этой книге о любых 8 битах информации говорится как о байте.  Байт заслужил свое собственное имя по нескольким причинам.

  • Turbo Assembler 3.0. Руководство пользователя
    После того, как вы сохранили файл HELLO.ASM, вы захотите запустить программу. Однако, перед тем, как вы сможете ее запустить, потребуется преобразовать программу в выполняемый вид. Как показано на Рис. 1.1, где изображен полный цикл создания программы (редактирование, ассемблирование, компоновка и выполнение), это потребует двух дополнительных шагов - ассемблирования и компоновки

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

  • Сборник по задачам и примерам Assembler
    Для генерации первых 55 случайных чисел можно использовать один из рассмотренных выше генераторов. Возьмем датчик линейной (смешанной) конгруэнтной последовательности случайных чисел (с > 0)

  • Статьи по Assembler
    Всякий сколько-нибудь значительный программный проект содержит сотни, а то и тысячи идентификаторов. Как у программистов хватает фантазии их придумывать - это отдельная тема для исследования, пока что ждущая своего Фрейда, или Павлова, или Кастанеду, или, на худой конец, Маркеса

  • Win32asm обучение
    Ассемблер создан как замена двоичному коду, который понимает процессор. Давным-давно, когда еще не было никаких языков программирования высокого уровня, программы создавались на ассемблере. Коды ассемблера представляют непосредственно команды процессора, которые он может выполнять

  • Архитектура x86-64 под скальпелем ассемблерщика
    64- битный лейбл звучит возбуждающе, но в практическом плане это всего лишь хитрый маркетинговый трюк, скрывающий не только достоинства, но и недостатки. Нам дарованы 64-битные операнды и 64-битная адресация. Казалось бы, лишние разряды карман не тянут и если не пригодятся, то по крайней мере не помешают

  • Ассемблер - экстремальная оптимизация
    Апеллируя к житейской мудрости пса Фафика, пришедшего к выводу, что есть колбасу, иметь колбасу и пахнуть колбасой— это три большие разницы, мы можем сказать: изучать ассемблер, программировать на ассемблере и хвастаться знаниями ассемблера — совсем не одно и тоже!

  • Ассемблер и Win32
    Программирование на ассемблере под Win32 воспринимается весьма не однозначно. Считается, что написание приложений слишком сложно для применения ассемблера. Собственно обсуждению того насколько оправдана такая точка зрения и посвящена данная статья. Она не ставит своей целью обучение программированию под Win32 или обучение ассемблеру

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

  • Ассемблер — это просто хадкорный ассемблер
    Хакер, не знающий ассемблера, все равно, что гребец без весла. На языках высокого уровня далеко не уплывешь. Чтобы взломать приложение, исходные тексты которого недоступны (а в подавляющем большинстве случаев дело обстоит именно так), необходимо проанализировать его алгоритм, растворенный в абракадабре машинного кода

  • АССЕМБЛЕР. Компоновщик. Загрузчик. Макрогенератор
    Сначала будем предполагать, что транслируемая программа состоит только из одного модуля, т.е. в ней нет внешних и общих имен, а позже (в 1.5) рассмотрим, какие изменения надо внести в работу ассемблера, чтобы учесть особенности многомодульных программ. Отметим также, что ассемблер работает после макрогенератора

  • Ассемблерные головоломки или может ли машина понимать естественный язык
    Всякая письменность начинается с алфавита. Для кодирования в "текстовой" форме мы должны отчетливо представлять структуру машинной команды со всеми полями, префиксами и прочими превратностями судьбы, которые ее окружают. В этом нам поможет электронный справочник TECH HELP, который в частности можно найти на многих хакерских сайтах

  • Ассемблерные извращения - натягиваем стек
    Довольно расточительное (в плане процессорных тактов) решение, особенно если функция вызывается многократно. При этом операнды команды PUSH перегоняются из секции .text (находящейся в кодовой кэш-памяти первого уровня) в область стека, находящейся в кэш-памяти данных.

  • Ассемблирование без секретов
    Как нам откомпилировать? И главное во что? На самостоятельную программу оно как-то не тянет… А давайте попробуем заточить ассемблерную вставку? В большинстве Си компиляторов она оформляется как: "__asm{…ассемблерный код…}", однако, непосредственно осуществить этот замысел не получится!

  • Война миров - ассемблер против си
    Любовь хакеров к ассемблеру вполне понятна и объяснима. Разве не заманчиво знать язык, которым владеют немногие? Ассемблер окружен мистическим ареалом — это символ причастности к хакерским кругам, своеобразный пропуск в клан системных программистов, вирусописателей и взломщиков

  • Набор статей и руководств по дизассемблеру IDA
    Если Вы поищите в Сети, то вполне вероятно сможете найти старые варианты IDA с генераторами IDA.KEY. Не тратьте время на шифрование и дешифрование программ, Вы играете на чужом поле. Значительно легче предоставить возможность дешифрования Вашему компьютеру, а затем посмотреть, что получилось.

  • Программирование на Ассемблере
    Системное программное обеспечение (СПО)– комплекс программ для увеличения производительности  вычислительной системы и пользователя. Примером СПО является операционная система. Компонентом СПО является системная программа

  • Программирование на Ассемблере под DOS
    Когда-то автор этого текста хотел осветить все вопросы низкоуровневого программирования, начиная от процессора 8086 до p3, от DOS'а до W2000 и линуха. Однако практика показала, что при таких черепашьих темпах написания... к тому времени когда дойдет очередь хотя бы до w3.11 - windows-2000 уже станет вчерашним днем

  • Разное IDE для больших проектов на ассемблере
    Итак, сначала небольшое введение, посвященное тому, зачем мне (в частности) вообще нужно IDE. Дело в том, что наличие IDE практически необязательно для проектов с небольшим размером. Под проектами с небольшим размером я подразумеваю проекты с количеством строк, меньшим 1000. Как правило такая программа состоит из одного файла

  • Секреты ассемблирования дизассемблерных листингов
    Обычно дизассемблер используется для реконструкции алгоритма подопытной программы, который после этого переписывается на Си/Си++ или в двоичном файле правится тот нехороший jx, который не дает приложению работать, если не найден ключевой файл или демонстрационный период давно истек

  • Справка по Ассемблеру для AVR
    Директива BYTE резервирует байты в ОЗУ. Если Вы хотите иметь возможность ссылаться на выделенную область памяти, то директива BYTE должна быть предварена меткой. Директива принимает один обязательный параметр, который указывает количество выделяемых байт. Эта директива может использоваться только в сегменте данных

  • Справочник по Ассемблеру
    Это ассемблеpная диpектива, говоpящая ассемблеpу использовать набоp опеpаций для пpоцессоpа 80386. Вы также можете использовать .486, .586, но самый безопасный выбоp - именно .386. Также есть два пpактически идентичных выбоpа для каждого ваpианта CPU. .386/.386p, .486/.486p. Эти "p"-веpсии необходимы только когда ваша пpогpамма использует пpивилигиpованные инстpукции

  • Справочник по языку Ассемблера IBM PC
    Обычно команда aaa используется после сложения каждого разряда распакованных BCD-чисел командой add. Каждая цифра неупакованного BCD-числа занимает младший полубайт байта. Если результат сложения двух одноразрядных BCD-чисел больше 9, то число в младшем полубайте результата не есть BCD-число. Поэтому результат нужно корректировать командой aaa

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

  • Obj файлы на топчане или...
    Освежая в памяти события давно минувших дней (уже листья успели облететь за это время), напомним, что исправив кучу багофичей IDA Pro (перечисление которых заняло бы слишком много места) мы дошли до файла demo_3.asm, который нас удалось ассемблировать MASM'ом

  • Эльфы большие и маленькие
    Классические трансляторы ассемблера (такие, например, как GAS – GNU Assembler) придерживается AT&T синтаксиса, совершенно несовместимого с "официальным" x86 синтаксисом, декларируемым самой фирмой Intel (достаточно сказать, что порядок операндов поменялся местами и всюду торчат эти жуткие суффиксы и префиксы #, $,%, l и проч. дребедень)