Учебный курс. Часть 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. Дизассемблирование и отладка.

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