Comments 46
UFO landed and left these words here
И вправду можно понять, в хроме достаточно кнопку Перевести нажать
Зачем копаться в интеловских инструкциях когда это (и гораздо больше) уже сделал Агнер Фог
Удивительно что среди стольких ссылок нет одной действительно полезной:
www.agner.org/optimize/
Раньше — да, книги присылали (я один комплект подарил хорошим людям, а один на полке стоит возле настольного компа), но потом стали высылать на CD, поэтому смысла заказывать нет — можно pdf'ки скачать.
Интересно, а какое количество таких вот неофитов, вдохновленных историей одного байта в конечном итоге хоть как-то связывают свою жизнь с низкоуровневым програмированием?

По теме:

1) А где же Абель, классика как-никак? Абель — Ассемблер. Язык и программирование для IBM PC.

2) Так же в комплекте с masm32 идет просто отличная подборка хелпов, туторов и примеров — \masm32\{help,tutorial,examples}.

3) Уроки Iczelion'а

4) Введение в крэкинг с нуля, используя OllyDbg (by Рикардо Нарваха)

5) gdb manual / gdb HOW-TO

6) На сайте securitytube.net есть 2 неплохих видеокурса:
securitytube — Windows Assembly Language Megaprimer
securitytube — Assembly Language Megaprimer for Linux

Примерно половина из указанных пунктов содержится в подразделах указанных ранее сайтов, но добавил отдельными ссылками. Большое спасибо за дополнение!
К теме первого вопроса: не думаю что много. Изучить ассемблер обычно хочется именно для самообразования (как Lisp, хотя некоторые, например я, умудряются писать на лиспе на работе), а не для связывания с ним жизни. Но и пригодиться может — например для вставок в С/С++ код, или для программинга микроконтроллеров в качестве хобби.
Приветствую, брат по Lisp. Согласен по всем пунктам. Имею дополнение: знание языков ассемблера для архитектур, для которых пишешь код, бывает незаменимо для детального анализа кода и когда сталкиваешься с багами компилятора. Последнее у меня как-то случилось на работе: мы с напарником писали игру и там был цикл отрисовки объектов на экране, что-то типа этого:
for (size_t i = 0; i < OBJECTS_COUNT && objects[i] != NULL; ++i)
  objects[i]->Draw();
objects — это отсортированный массив указателей на рисуемые объекты, если что. И вот, как-то этот код начал глючить — не отрисовывались объекты. Отладили всё это дело вдоль и поперёк, а ошибку не нашли. Вставили отладочный вывод в логи — объекты рисуются, убрали — не рисуются. Более того, прекрасно работал идентичный изначальному код:
for (size_t i = 0; i < OBJECTS_COUNT && objects[i] != NULL; ++i)
{
  GameObject *obj = objects[i];
  obj->Draw();
}
Заглянули в дизассемблированный код изначального варианта — оказалось, компилятор тело цикла вообще выкинул из кода. Даже если перед отрисовкой поставить бессмысленное
int a = 0;
то код будет работать.

Такие вот дела. Вся эта муть была в VisualStudio 2008, а в VS2010 баг не проявлялся. Без знания ассемблера мы могли искать это не час-полтора, а целый день или дольше.
про книжку В.Н. Пильщикова «ASSEMBLER Программирование на языке ассемблера IBM PC» забыли, добавьте и ее
И еще, по-моему, перед тем как браться за непосредственно кодинг стоит проштудировать труды Таненбаума, ну как минимум его «Архитектура компьютера».

Кому в тягость академический стиль изложения Таненбаума рекоммендую просто отличну книгу Чарльза Петцольда — «Код».

Вот тогда можно будет с уверенностью самому себе сказать, что уж если не в деталях, то как минимум в общих чертах, имеешь представление о том, как работает машина.
>> Интересно, а какое количество таких вот неофитов, вдохновленных историей одного байта в конечном итоге хоть как-то связывают свою жизнь с низкоуровневым програмированием?

Не знающий ассемблера программист на С подобен переводчику не знающего языка с/на который он переводит. Компилятору стоит доверять ещё меньше чем google translate.
Действительно не закладки, ведь закладки моего браузера не могут прочитать те, кто ищет материал по ассемблеру, и не могут добавить в избранное те, кто возможно будет делать это в будущем.
То, что ты не знаешь как выставить закладки твоего браузера на обозрение, не значит что таких сервисов не существует в интернете. Пользуйся ими, а не хабром, это прямо записано в правилах, которые ты читаешь перед началом создания сообщения.

Или ты думаешь что пользователи Хабра настолько тупые что не в состоянии воспользоваться Гуглом?!
И это, для тех, кому интересно поделать что-то для старого доброго реального режима.
про микроконтроллеры надо обязательно добавить.
это реальная область, где ассемблер реален во всей красе и вариациях.
да и то, там уже на высших уровнях, все более менее подогнано под компиляторы языка С.
Извиняюсь что влезаю. Нужно изучить паскаль. Не подскажите какие нибудь хорошие книги, либо ресурсы?
В программировании вообще не разбираюсь, изучить нужно только основы.
UFO landed and left these words here
Мне в свое время с лихвой хватило ассемблера Z80 :)
Спасибо Speccy за наше счастливое программерское детство :)
Я бы добавил еще книгу Юрия Ревича «Практическое программирование микроконтроллеров Atmel AVR на языке ассемблера», сейчас как раз ее читаю :)
Еще книжка есть:

Название: Язык ассемблера для IBM PC
Автор: Нортон П., Соухе Д.
Год: 1993
Страниц: 352
Язык: русский
Издательство: Компьютер
ISBN: 5-88201-008-Х
Название: Микропроцессор i486. Архитектура и программирование.
Автор: Григорьев В. Л.
Издательство: ТОО «ГРАНАЛ»
Год: 1993
ISBN: 5-900676-02-1 (Книга 2,3,4 первую найдете)

4 книги в двух томах. По сути хороший и наверное единственный перевод «Intel Architectures Software Developer Manuals» хоть и в версии на начало 90х, но все что надо там уже есть.

Нортон П., Уилтон Р. IBM PC и PS/2.руководство по программированию: Пер с англ. -М.: Радио и связь, 1994, -336с.
Тут все прерывания описаны, и работа с простыми железками.
Могу посоветовать еще книги Столярова, хотя это скорее методички, можно скачать на www.stolyarov.info/books/asm_unix. Они по небольшие, но инфа в них есть очень ценная, мне очень помогло. Еще отличная книга Барри Брэя — «Микропроцессоры Intel: 8086/8088, 80186/80188, 80286, 80386, 80486, Pentium, Pentium Pro Processor, Pentium II, Pentium III, Pentium 4. Архитектура, программирование и интерфейсы» — больше 1300 страниц, рассматривается все досконально.
Я прошу и требую))) хотел просить и требовать добавить бавить SoftIce в список инструментов, но с ужасом увидел, что он не поддерживается начиная с XP SP3. Куда мир катится?
Only those users with full accounts are able to leave comments. Log in, please.