Учебный курс. Часть 5. Директивы объявления данных

Автор: xrnd | Рубрика: Учебный курс | 14-03-2010

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

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

Размер
(в байтах)
Объявление Резервирование
1 db rb
2 dw
du
rw
4 dd rd
6 dp
df
rp
rf
8 dq rq
10 dt rt
N file

Читать полностью »

Вид для печати

Автор: xrnd | Рубрика: Новости | 14-03-2010

Добавил вид для печати. Теперь каждую запись можно напечатать в удобном виде.

Учебный курс. Часть 4. Регистры процессора 8086

Автор: xrnd | Рубрика: Учебный курс | 13-03-2010

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

Все внутренние регистры процессора Intel 8086 являются 16-битными:

Всего процессор содержит 12 программно-доступных регистров, а также регистр флагов (FLAGS) и указатель команд (IP).

Читать полностью »

Учебный курс. Часть 3. Turbo Debugger

Автор: xrnd | Рубрика: Учебный курс | 12-03-2010

Прежде всего необходимо запустить отладчик. Для этого удобно использовать bat-файл. Создайте в каталоге программы текстовый файл, назовите его, например, «debug.bat». В него надо записать всего одну строку:

1
C:\TD\td.exe <файл_программы>.com

После запуска этого bat-файла вы увидите примерно такое окно:

Читать полностью »

Небольшое обновление

Автор: xrnd | Рубрика: Новости | 06-03-2010

Выложил на сайт новую версию FASM — 1.68. Буду пользоваться этой версией компилятора. Скачать можно в разделе Файлы или с официального сайта FASMа.

Добавлен справочник команд

Автор: xrnd | Рубрика: Новости | 04-02-2010

На сайте появился новый раздел — «Справочник команд». Туда я буду добавлять описание команд архитектуры x86. Сразу все команды мне добавлять лениво, поэтому я буду делать это по мере написания статей учебного курса :) Как только расскажу о новых командах — добавлю их описание. Так постепенно получится полный справочник.

Сейчас там уже есть описания 3-х команд, о которых я рассказывал в статье «Первая программа»: MOV, INC и NOP. Учтите, что в учебном курсе мы пока программируем под DOS и поэтому нам ещё не все регистры и команды доступны. Если есть идеи и предложения по справочнику, пишите в комментариях к этому посту.

Учебный курс. Часть 2. Первая программа

Автор: xrnd | Рубрика: Учебный курс | 04-02-2010

Итак, поехали! Курс обучения любому языку программирования принято начинать с написания программы «Hello, world!». Однако мы этого делать не будем. Потому что «Hello, world!» на ассемблере придется долго объяснять и трудно понять сходу. А я хочу сделать курс из коротких понятных статей.

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

Для того, чтобы написать программу, нам надо запустить fasmw.exe. Откроется окошко, в которое можно смело набивать код:

FASM

Читать полностью »

Учебный курс. Часть 1. Необходимые инструменты

Автор: xrnd | Рубрика: Учебный курс | 30-01-2010

Учиться программировать начнем с процессора Intel 8086. Будем писать программы под DOS :) Программирование под Windows и Linux сложнее, а нам надо с чего-то начинать. Поэтому начнем с простого и понятного 16-битного процессора 8086.

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

Все программы учебного курса вы сможете запустить под Windows. Конечно, реально они будут работать в эмуляторе DOS, в режиме виртуального процессора 8086. Но для учебных целей это вполне подойдёт.

Читать полностью »

Учебный курс. Часть 0. Зачем учить ассемблер

Автор: xrnd | Рубрика: Учебный курс | 27-01-2010

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

Ассемблер — это практически самый древний язык программирования. До него было лишь программирование в машинных кодах ;)

Итак, какие же преимущества дает знание ассемблера:

  1. Глубокое понимание работы компьютера и операционной системы.
  2. Максимальная гибкость при работе с аппаратными ресурсами.
  3. Оптимизация программ по скорости выполнения.
  4. Оптимизация программ по размеру кода.
  5. Дизассемблирование и отладка.

Читать полностью »

Проект запущен!

Автор: xrnd | Рубрика: Новости | 25-03-2009

Это первая запись, которая означает, что проект официально стартовал! :)

Пока здесь ещё нет никакого контента, да и настройка сайта не закончена, но очень скоро всё это появится.

Расскажу, что здесь будет. Прежде всего сайт посвящен программированию на ассемблере! Писать программы будем разные — от совсем простых, доступных начинающим, до очень сложных, которые будут интересны профессионалам. Я планирую для начала написать небольшой обучающий курс программирования на ассемблере с нуля.

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

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