Советы и лайфхаки

Ассемблер для начинающих книга – Ассемблер для чайников

Ассемблер_для_чайников

Поляков А.В. Ассемблер для чайников.

1

Информация об авторе:

 

Автор:

Поляков Андрей Валерьевич

 

Web:

http://info-master.su

 

e-mail:

[email protected]

 

Блог:

av-inf.blogspot.ru

 

В контакте:

vk.com/id185471101

 

Фейсбук:

facebook.com/100008480927503

 

Страница книги:

http://av-assembler.ru/asm/afd/assembler-for-dummy.htm

 

ВНИМАНИЕ!

Все права на данную книгу принадлежат Полякову Андрею Валерьевичу. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без согласования с автором.

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

1. РАЗРЕШЕНИЯ

Разрешается использование книги в ознакомительных и образовательных целях (только для личного использования). Разрешается бесплатное распространение книги.

2. ОГРАНИЧЕНИЯ

Запрещается использование книги в коммерческих целях (продажа, размещение на ресурсах с платным доступом и т.п.). Запрещается вносить изменения в текст книги. Запрещается присваивать авторство.

См. также ЛИЦЕНЗИОННОЕ СОГЛАШЕНИЕ.

Поляков А.В. Ассемблер для чайников.

2

Поляков А.В.

Ассемблер для чайников

Поляков А.В. Ассемблер для чайников.

3

СОДЕРЖАНИЕ

 

СОДЕРЖАНИЕ..................................................................................................................................................................

3

ПРЕДИСЛОВИЕ ................................................................................................................................................................

4

ВВЕДЕНИЕ .......................................................................................................................................................................

5

НЕМНОГО О ПРОЦЕССОРАХ .......................................................................................................................................................

6

1. БЫСТРЫЙ СТАРТ .........................................................................................................................................................

8

1.1. ПЕРВАЯ ПРОГРАММА.........................................................................................................................................................

8

1.1.1. Emu8086................................................................................................................................................................

8

1.1.2. Debug ..................................................................................................................................................................

12

1.1.3. MASM, TASM и WASM........................................................................................................................................

17

1.1.3.1. Ассемблирование в TASM .............................................................................................................................................

18

1.1.3.2. Ассемблирование в MASM............................................................................................................................................

19

1.1.3.3. Ассемблирование в WASM............................................................................................................................................

19

1.1.3.4. Выполнение программы ...............................................................................................................................................

19

1.1.3.5. Использование BAT-файлов ..........................................................................................................................................

20

1.1.4. Шестнадцатеричный редактор ....................................................................................................................

22

Резюме..........................................................................................................................................................................

25

2. ВВЕДЕНИЕ В АССЕМБЛЕР ..........................................................................................................................................

26

2.1. КАК УСТРОЕН КОМПЬЮТЕР ...............................................................................................................................................

26

2.1.1. Структура процессора ....................................................................................................................................

27

2.1.2. Регистры процессора .......................................................................................................................................

29

2.1.3. Цикл выполнения команды ..............................................................................................................................

31

2.1.4. Организация памяти........................................................................................................................................

32

2.1.5. Реальный режим ...............................................................................................................................................

33

2.1.6. Защищённый режим .........................................................................................................................................

34

2.2. СИСТЕМЫ СЧИСЛЕНИЯ .....................................................................................................................................................

34

2.2.1. Двоичная система счисления ..........................................................................................................................

34

2.2.2. Шестнадцатеричная система счисления .....................................................................................................

36

2.2.3. Другие системы ................................................................................................................................................

37

2.3. ПРЕДСТАВЛЕНИЕ ДАННЫХ В ПАМЯТИ КОМПЬЮТЕРА.............................................................................................................

38

2.3.1. Положительные числа .....................................................................................................................................

38

2.3.2. Отрицательные числа.....................................................................................................................................

39

2.3.3. Что такое переполнение.................................................................................................................................

40

2.3.4. Регистр флагов .................................................................................................................................................

42

2.3.5. Коды символов...................................................................................................................................................

43

2.3.6. Вещественные числа........................................................................................................................................

44

2.3.6.1. Первая попытка..............................................................................................................................................................

44

2.3.6.2. Нормализованная запись числа....................................................................................................................................

45

2.3.6.3. Преобразование дробной части в двоичную форму ..................................................................................................

47

2.3.6.4. Представление вещественных чисел в памяти компьютера ......................................................................................

47

2.3.6.5. Числа с фиксированной точкой.....................................................................................................................................

49

2.3.6.6. Числа с плавающей точкой............................................................................................................................................

49

ЛИЦЕНЗИОННОЕ СОГЛАШЕНИЕ ...................................................................................................................................

52

Поляков А.В. Ассемблер для чайников.

4

ПРЕДИСЛОВИЕ

Ассемблер – это магическое слово взывает благоговейный трепет у начинающих программистов. Общаясь между собой, они обязательно говорят о том, чтогде-тоукого-тоесть знакомый «чувак», который может читать исходные коды на языке ассемблера как книжный текст. При этом, как правило, язык ассемблера воспринимается как нечто недоступное простым смертным.

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

Есть другая крайность – бывалые программисты на языках высокого уровня убеждены, что язык ассемблера – это пережиток прошлого. Да, средства разработки за последние 20 лет шагнули далеко вперёд. Теперь можно написать простенькую программу вообще не зная ни одного языка программирования. Однако не стоит забывать о таких вещах, как, например, микроконтроллеры. Да и в компьютерном программировании некоторые задачи проще и быстрее решить с помощью языка ассемблера.

Данная книга предназначена для тех, кто уже имеет навыки программирования на языке высокого уровня, но хотел бы перейти «ближе к железу» и разобраться с тем, как выполняются команды процессора, как происходит распределение памяти, как управляются разные «железяки» типа дисководов и т.п.

Книга разбита на несколько разделов. Первый раздел – быстрый старт. Здесь очень кратко описаны основные принципы программирования на языке Ассемблера, сами ассемблеры (компиляторы) и методы работы с ассемблерами. Если вы уверенно себя чувствуете в программировании на высоком уровне, но хотели бы освоить азы низкоуровневого программирования, то, быть может, вам будет достаточно прочитать только этот раздел.

Второй раздел описывает такие вещи, как системы исчисления, представления данных в памяти компьютера и т.п., то есть вещи, которые непосредственно к программированию не относятся, но без которых профессиональное программирование невозможно. Также во втором разделе более подробно рассматриваются общие принципы программирования на языке Ассемблера.

Остальные разделы описывают некоторые конкретные примеры программирования на языке Ассемблера, содержат справочные материалы и т.п.

Основы программирования вообще в этой книге не описаны, поэтому для начинающих настоятельно рекомендую ознакомиться с книгой Как стать программистом, где разъяснены «на пальцах» общие принципы программирования и подробно рассмотрены примеры создания простых программ от программ для компьютеров до программ для станков с ЧПУ.

Поляков А.В. Ассемблер для чайников.

5

ВВЕДЕНИЕ

Для начала разберёмся с терминологией.

Машинный код – система команд конкретной вычислительной машины (процессора), которая интерпретируется непосредственно процессором. Команда, как правило, представляет собой целое число, которое записывается в регистр процессора. Процессор читает это число и выполняет операцию, которая соответствует этой команде. Популярно это описано в книгеКак стать программистом.

Язык программирования низкого уровня (низкоуровневый язык программирования) – это язык программирования, максимально приближённый к программированию в машинных кодах. В отличие от машинных кодов, в языке низкого уровня каждой команде соответствует не число, а сокращённое название команды (мнемоника). Например, команда ADD – это сокращение от слова ADDITION (сложение). Поэтому использование языка низкого уровня существенно упрощает написание и чтение программ (по сравнению с программированием в машинных кодах). Язык низкого уровня привязан к конкретному процессору. Например, если вы написали программу на языке низкого уровня для процессора PIC, то можете быть уверены, что она не будет работать с процессором AVR.

Язык программирования высокого уровня – это язык программирования, максимально приближённый к человеческому языку (обычно к английскому, но есть языки программирования на национальных языках, например, язык 1С основан на русском языке). Язык высокого уровня практически не привязан ни к конкретному процессору, ни к операционной системе (если не используются специфические директивы).

Язык ассемблера – это низкоуровневый язык программирования, на котором вы пишите свои программы. Для каждого процессора существует свой язык ассемблера.

Ассемблер – это специальная программа, которая преобразует (ассемблирует, то есть собирает) исходные тексты вашей программы, написанной на языке ассемблера, в исполняемый файл (файл с расширением EXE или COM). Если быть точным, то для создания исполняемого файла требуются дополнительные программы, а не только ассемблер. Но об этом позже…

В большинстве случаев говорят «ассемблер», а подразумевают «язык ассемблера». Теперь вы знаете, что это разные вещи и так говорить не совсем правильно. Хотя все программисты вас поймут.

ВАЖНО!

В отличие от языков высокого уровня, таких, как Паскаль, Бейсик и т.п., для КАЖДОГО АССЕМБЛЕРА существует СВОЙ ЯЗЫК АССЕМБЛЕРА. Это правило в корне отличает язык ассемблера от языков высокого уровня. Исходные тексты программы (или просто «исходники»), написанной на языке высокого уровня, вы в большинстве случаев можете откомпилировать разными компиляторами для разных процессоров и разных операционных систем. С ассемблерными исходниками это сделать будет намного сложнее. Конечно, эта разница почти не ощутима для разных ассемблеров, которые предназначены для одинаковых процессоров. Но в том то и дело, что для КАЖДОГО ПРОЦЕССОРА существует СВОЙ АССЕМБЛЕР и СВОЙ ЯЗЫК АССЕМБЛЕРА. В этом смысле программировать на языках высокого уровня гораздо проще. Однако за все удовольствия надо платить. В случае с языками высокого уровня мы можем столкнуться с такими вещами как больший размер исполняемого файла, худшее быстродействие и т.п.

Поляков А.В. Ассемблер для чайников.

6

В этой книге мы будем говорить только о программировании для компьютеров с процессорами Intel (или совместимыми). Для того чтобы на практике проверить приведённые

вкниге примеры, вам потребуются следующие программы (или хотя бы некоторые из них):

1.Emu8086. Хорошая программа, особенно для новичков. Включает в себя редактор исходного кода и некоторые другие полезные вещи. Работает в Windows, хотя программы пишутся под DOS. К сожалению, программа стоит денег (но оно того стоит))). Подробности см. на сайтеhttp://www.emu8086.com.

2.TASM – Турбо Ассемблер от фирмы Borland. Можно создавать программы как для DOS так и для Windows. Тоже стоит денег и в данный момент уже не поддерживается (да и фирмы Borland уже не существует). А вообще вещь хорошая.

3.MASM – Ассемблер от компании Microsoft (расшифровывается как МАКРО ассемблер, а не Microsoft Assembler, как думают многие непосвящённые). Пожалуй, самый популярный ассемблер для процессоров Intel. Поддерживается до сих пор. Условно бесплатная программа. То есть, если вы будете покупать её отдельно, то она будет стоить денег. Но она доступна бесплатно подписчикам MSDN и входит в пакет программ Visual Studio от Microsoft.

4.WASM – ассемблер от компании Watcom. Как и все другие, обладает преимуществами и недостатками.

5.Debug - обладает скромными возможностями, но имеет большой плюс - входит в стандартный набор Windows. Поищите ее в папке WINDOWS\COMMAND или WINDOWS\SYSTEM32. Если не найдете, тогда в других папках каталога WINDOWS.

6.Желательно также иметь какой-нибудьшестнадцатеричный редактор. Не помешает и досовский файловый менеджер, например Волков Коммандер (VC) или Нортон Коммандер (NC). С их помощью можно также посмотреть шестнадцатеричные коды файла, но редактировать нельзя. Бесплатных шестнадцатеричных редакторов в Интернете довольно много. Вот один из них:McAfee FileInsight v2.1. Этот же редактор можно использовать для работы с исходными текстами программ. Однако мне больше нравится делать это с помощью следующего редактора:

7.Текстовый редактор. Необходим для написания исходных текстов ваших программ. Могу порекомендовать бесплатный редакторPSPad, который поддерживает множество языков программирования, в том числе и язык Ассемблера.

Все представленные в этой книге программы (и примеры программ) проверены на работоспособность. И именно эти программы используются для реализации примеров программ, приведённых в данной книге.

И еще – исходный код, написанный, например для Emu8086, будет немного отличаться от кода, написанного, например, для TASM. Эти отличия будут оговорены.

Большая часть программ, приведённых в книге, написана для MASM. Во-первых,потому что этот ассемблер наиболее популярен и до сих пор поддерживается.Во-вторых,потому что он поставляется с MSDN и с пакетом программ Visual Studio от Microsoft. Ну и в третьих, потому что я являюсь счастливым обладателем лицензионной копии MASM.

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

Немного о процессорах

Процессор – это мозг компьютера. Физически это специальная микросхема с несколькими сотнями выводов, которая вставляется в материнскую плату. Если вы с трудом представляете себе, что это такое, рекомендую ознакомиться со статьёй Чайникам о компьютерах.

Поляков А.В. Ассемблер для чайников.

7

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

Каждый процессор обладает своим набором регистров. Регистры процессора – это такие специальные ячейки памяти, которые находятся непосредственно в микросхеме процессора. Регистры используются для разных целей (более подробно о регистрах будет написано ниже).

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

Что такое команда с точки зрения процессора? Это просто число. Однако современные процессоры могут иметь несколько сотен команд. Запомнить все их будет сложно. Как же тогда писать программы? Для упрощения работы программиста был придуман язык Ассемблера, где каждой команде соответствует мнемонический код. Например, число4 соответствует мнемоникеADD. Иногда язык ассемблера ещё называют языком мнемонических команд.

Поляков А.В. Ассемблер для чайников.

8

1. БЫСТРЫЙ СТАРТ

1.1. Первая программа

Обычно в качестве первого примера приводят программу, которая выводит на экран строку «Hello World!». Однако для человека, который только начал изучать Ассемблер, такая программа будет слишком сложной (вы будете смеяться, но это действительно так – особенно в условиях отсутствия доходчивой информации). Поэтому наша первая программа будет еще проще – мы выведем на экран только один символ – английскую букву «A». И вообще – если вы уж решили стать программистом – срочно установите по умолчанию английскую раскладку клавиатуры. Тем более что некоторые ассемблеры и компиляторы не воспринимают русские буквы. Итак, наша первая программа будет выводить на экран английскую букву «А». Далее мы рассмотрим создание такой программы с использованием различных ассемблеров.

1.1.1. Emu8086

Если вы скачали и установили эмулятор процессора 8086 (см. раздел «ВВЕДЕНИЕ»), то вы можете использовать его для создания ваших первых программ на языке ассемблера. На текущий момент (ноябрь 2011 г) доступна версия программы 4.08. Справку на русском языке вы можете найти здесь:http://www.avprog.narod.ru/progs/emu8086/help.html.

Программа Emu8086 платная. Однако в течение 30 дней вы можете использовать её для ознакомления бесплатно.

Итак, вы скачали и установили программу Emu8086 на свой компьютер. Запускаем её и создаём новый файл через меню FILE – NEW – COM TEMPLATE (Файл – Новый – Шаблон файла COM). В редакторе исходного кода после этого мы увидим следующее:

Рис. 1.1. Создание нового файла в Emu8086.

Поляков А.В. Ассемблер для чайников.

9

Здесь надо отметить, что программы, создаваемые с помощью Ассемблеров для компьютеров под управлением Windows, бывают двух типов: COM и EXE. Отличия между этими файлами мы рассмотрим позже, а пока вам достаточно знать, что на первое время мы будем создавать исполняемые файлы с расширением COM, так как они более простые.

После создания файла в Emu8086 описанным выше способом в редакторе исходного кода вы увидите строку «add your code hear» - «добавьте ваш код здесь» (рис. 1.1). Эту строку мы удаляем и вставляем вместо неё следующий текст:

MOV AH, 02h

MOV DL, 41h

INT 21h

INT 20h

Таким образом, полный текст программы будет выглядеть так:

ORG 100h

MOV AH, 02h

MOV DL, 41h

INT 21h

INT 20h

RET

Кроме этого в верхней части ещё имеются комментарии (на рис. 1.1 – это текст зелёного цвета). Комментарий в языке Ассемблера начинается с символа ; (точка с запятой) и продолжается до конца строки. Если вы не знаете, что такое комментарии и зачем они нужны, см. книгуКак стать программистом. Как я уже говорил, здесь мы не будем растолковать азы программирования, так как книга, которую вы сейчас читаете, рассчитана на людей, знакомых с основами программирования.

Также отметим, что регистр символов в языке ассемблера роли не играет. Вы можете написать RET,ret илиRet – это будет одна и та же команда.

Вы можете сохранить этот файл куда-нибудьна диск. Но можете и не сохранять. Чтобы выполнить программу, нажмите кнопку EMULATE (с зелёным треугольником) или клавишу F5. Откроется два окна: окно эмулятора и окно исходного кода (рис. 1.2).

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

Вокне эмулятора вы можете запустить вашу программу на выполнение целиком (кнопка RUN) либо в пошаговом режиме (кнопка SINGLE STEP). Пошаговый режим удобен для отладки. Ну а мы сейчас запустим программу на выполнение кнопкой RUN. После этого (если вы не сделали ошибок в тексте программы) вы увидите сообщение о завершении программы (рис. 1.3). Здесь вам сообщают о том, что программа передала управление операционной системе, то есть программа была успешно завершена. Нажмите кнопку ОК в этом окне и вы увидите, наконец, результат работы вашей первой программы на языке ассемблера (рис.

1.4).

Поляков А.В. Ассемблер для чайников.

10

Рис. 1.2. Окно эмулятора Emu8086.

Рис. 1.3. Сообщение о завершении программы.

Рис. 1.4. Ваша первая программа выполнена.

studfiles.net

Ассемблер для начинающих / Хабр

В любом деле главное — начать. Или вот еще хорошая поговорка: «Начало — половина дела». Но иногда даже не знаешь как подступиться к интересующему вопросу. В связи с тем, что воспоминания мои еще свежи, спешу поделиться своими соображениями с интересующимися.

Скажу сразу, что лично я ассемблирую не под PC, а под микроконтроллеры. Но это не имеет большого значения, ибо (в отличие от микроконтроллеров AVR) система команд данных микроконтроллеров с PC крайне схожа. Да и, собственно говоря, ассемблер он и в Африке ассемблер.

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

Для начала успокою любознательных новобранцев: ассемблер — это совсем не сложно, вопреки стереотипному мнению. Просто он ближе к «земле», то бишь к архитектуре. На самом деле, он очень прост, если ухватить основную идею. В отличие от языков высокого уровня и разнообразных специализированных платформ для программирования (под всем перечисленным я понимаю всякое вроде C++, MatLAB и прочих подобных штук, где требуются программерские навыки), команд тут раз-два и обчелся. По началу даже, когда мне нужно было посчитать двойной интеграл, эта задача вызывала лишь недоумение: как при помощи такого скудного количества операций можно совершить подобную процедуру? Ведь образно говоря, на ассемблере можно разве что складывать, вычитать и сдвигать числа. Но с помощью ассемблера можно совершать сколь угодно сложные операции, а код будет выходить крайне лёгкий. Вот даже для примера, нужно вам зажечь светодиод, который подключен, например, к нулевому контакту порта номер 2, вы просто пишете:
bset P2.0
И, как говорится, никаких проблем. Нужно включить сразу штуки четыре, подключенных последовательно? Да запросто:
mov P2, #000fh
Да, тут я подразумеваю, что начинающий боец уже знаком хотя бы со системами счисления. Ну хотя бы с десятичной. 😉

Итак, для достижения успеха в деле ассемблирования, следует разбираться в архитектуре (в моем случае) микроконтроллера. Это раз.

Кстати, одно из больных мест в познании архитектуры — это организация памяти. Тут на Хабре я видела соответствующую статью: habrahabr.ru/blogs/programming/128991. Еще могу упомянуть ключевые болевые точки: прерывания. Штука не сложная, но по началу (почему-то) тяжелая для восприятия.

Если перед вами стоит сложная задача и вы даже не знаете как по началу к ней подступиться, лучше всего написать алгоритм. Это воистину спасает. А по началу, даже если программа совершенно не сложная, лучше всё же начать с алгоритма, ибо этот процесс помогает разложить всё в голове по местам. Возвращаясь к примеру с вычислением двойного интеграла по экспериментальным данным, обдумывала алгоритм я весь день, но зато потом программку по нему написала всего за 20 минут. Плюс алгоритм будет полезен при дальнейшей модернизации и/или эксплуатации программы, а то ассемблерный код, временами, если и будет понятен построчно, то чтобы разобраться в чем же общая идея, придется немало потрудиться.

Итак, второй ключ к успеху — подробно написанный и хорошо продуманный алгоритм. Настоятельно рекомендую не садиться сразу за аппарат и писать программу. Ничего дельного вы с ходу не напишете. Это два.

Собственно, хотелось бы как Фандорин написать: «Это т-т-три»… Но, боюсь, на этом пока можно остановиться. Хотя хотелось бы добавить еще несколько рекомендаций и пряников.

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

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

В общем, сплошные плюсы. На этой оптимистической ноте разрешите откланяться.

habr.com

ВВЕДЕНИЕ В АССЕМБЛЕР

Главная / Ассемблер / Для чайников /

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

Для тех же, кто только раззадорился и жаждет продолжить изучение ассемблера, предназначены остальные разделы данной книги. Сразу скажу, что вам придётся изучить и понять множество различных материалов, которые, на первый взгляд, непосредственно программирования не касаются, однако без которых профессиональное программирование невозможно. Это очень долгий и трудный путь. Либо вы его достойно пройдёте и станете авторитетным специалистом, либо так и останетесь любителем, который нахватался верхушек и даже может писать разные программки, но также отличается от профессионала, как самолёт от воздушного змея. И тот и другой может летать, но самолёт – это серьёзная и сложная машина, а воздушный змей – это детская игрушка.

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

Ещё раз предлагаю вам ознакомиться с книгой Как стать программистом, где в самых общих чертах описано устройство компьютера и процессора. Тогда вам легче будет понять материалы, изложенные далее в этом разделе.

В данной книге мы будем говорить только о программировании для 16-разрядной ОС DOS. Однако это не должно вас смущать. Во-первых, существуют эмуляторы, где вы можете в полной мере протестировать ваши программы. Во-вторых, программы, написанные для DOS, в большинстве случаев будут нормально работать под Windows. В-третьих, в большинстве случаев программы для Windows лучше создавать с помощь современных визуальных средств разработки, таких как Delphi или Visual Basic. Ну и, в-четвёртых, в будущих изданиях этой книги я обязательно добавлю разделы по программированию для Windows.


av-assembler.ru

Книги и самоучители по Ассемблеру. Программирование на Ассемблере

Книги и самоучители по Ассемблеру. Программирование на АссемблереSoftCreate.narod.ru

Все для легкого и эффективного программирования

Навигация по разделу Ассемблер

Книги и самоучители по Ассемблеру

Самоучители по ассемблеру в задачах и примерах, самоучитель по Tasm 3.0
Сборка самоучителей, предназначенная как для изучения новичками "с нуля" (введение в программирование на ассемблере, система команд, работа со структурами данных, основы работы реального и защищеннного режимов, работа в DOS\консоли), так и людям знакомым с ассемблером (вычисление CRC, программирование XMM расширения и т.д. ). Включает два общих самоучителя по ассемблеру, самоучитель по Tasm 3.0, статья по введению в ассемблер для Win32, техническое описание процессоров Intel Pentium (если кому-то он еще нужен).Размер : 5.2 MB
Формат : chm, doc
Скриншот 1
Скриншот 2
Скриншот 3
Сообщить о неполадке
Скачать с DepositFiles | Скачать с GigaPeta | Скачать с RapidGator | Скачать с TurboBit | Скачать с HitFile | Скачать с FileFactory
Владислав Пирогов - Ассемблер. Учебный курс
Книга является полным учебником по Ассемблеру для Dos и Windows. Рассматриваются вопросы программирования для компьютеров на базе микропроцессоров фирмы Intel. В книге даны начальные сведения о средствах программирования на языке ассемблера. Рассматривается структура программ на ассемблере, работа с файлами, экраном, клавиатурой. Даны примеры программирования внешних устройств компьютера при помощи функций DOS, функций BIOS и путем прямого обращения к устройству. Рассмотрены вопросы взаимодействия ассемблера и языков высокого уровня. Книга полезна как начинающим, так и профессиональным программистамРазмер: 8.16 MB
Формат: pdf
Страницы: 846
Год: 2001 (1-е изд.)
Обложка
Содержание
Скриншот 1
Сообщить о неполадке
Скачать с depositfiles.com | Скачать с turbobit.net | Скачать с hitfile.net
Бурдаев, Иванов, Тетерин - Ассемблер в целях защиты информации
В книге рассмотрен язык Ассемблера для процессоров семейства Intel x86, а также различные аспекты применения этого языка в области защиты информации. Содержит учебное пособие для начинающих по программированию на Ассемблере в среде DOS, описание криптографических методов и возможные способы решения задач контроля целостности и обеспечения секретности информации, защиты программ от статического и динамического исследования, борьба с вирусами. Описываются особенности программирования на Ассемблере в среде Linux и Windows. Обсуждается методика оптимизации программ на языке Ассемблер с учетом особенностей архитектур процессоров Pentium различных поколений. Книга рассчитана на широкий круг читателей, в том числе и не являющихся профессиональными программистами. Может быть полезна программистам, инженерам, студентам вузов.Размер : 4.86 MB
Формат : djvu
Страниц : 538
Год : 2004
Сообщить о неполадке
Скачать с depositfiles.com | Скачать с turbobit.net | Скачать с hitfile.net
Эрни Каспер - Программирование на языке ассемблера для микроконтроллеров семейства i8051
Изложены основы программирования на языке Ассемблера для популярного семейства микроконтроллеров i8051. Описаны особенности архитектуры микроконтроллеров семейства i8051. Приведены сведения о технологии разработки программ, системе и форматах команд. Книга содержит информацию о программировании некоторых типов задач, в том числе задач цифровой фильтрации сигналов, а также несколько рекомендаций о стиле программирования для начинающих программистов. Для широкого круга специалистов, занимающихся разработкой промышленной и бытовой аппаратуры, радиолюбителей, может быть полезна студентам и аспирантам.Размер : 1.80 MB
Формат : djvu
Страниц : 192
Год : 2004
Сообщить о неполадке
Скачать с depositfiles.com | Скачать с letitbit.com | Скачать с turbobit.net | Скачать с hitfile.net
Владимир Кулаков - Программирование на аппаратном уровне
В книге рассматриваются возможности персональных IBM-совместимых компьютеров, рекомендации по использованию которых не даются в официальной технической документации. Информация, собранная в книге, интересна прежде всего для тех, кто не удовлетворен возможностями, предоставляемыми стандартными драйверами и операционными системами. С одной стороны, это создатели «несерьезных», но сложных программ - компьютерных игр, а с другой - разработчики самого серьезного обеспечения, предназначенного для систем управления разнообразными техническими объектами.Размер : 5.29 MB
Формат : djvu
Страниц : 847
Год : 2003
Сообщить о неполадке
Скачать с depositfiles.com | Скачать с letitbit.net | Скачать с turbobit.net | Скачать с hitfile.net
Владислав Пирогов - Ассемблер и дизассемблирование + CD
Рассмотрены вопросы исследования кода Windows-приложений. Подробно описаны формат исполняемых модулей и структура инструкций микропроцессора Intel. Дан полный обзор инструментария по исследованию исполняемого кода: отладчики, дизассемблеры, редакторы ресурсов, НЕХ-редакторы и др. Большое внимание уделено работе с популярными программами по дизассемблированию и отладке SoftICE и IDA Pro. Приведены примеры исследования исполняемого кода и описаны основные принципы подобного исследования: идентификация программных структур, поиск данных и др. Прилагаемая копия компакт-диска содержит тексты всех листингов, описанных в книге, а также учебные программы. Для программистовРазмер: 10.25 MB
Формат: djvu
Страниц: 464
Год: 2006
Обложка
Скриншот 1
Скриншот 2
Сообщить о неполадке
Скачать с depositfiles.com | Скачать с letitbit.net | Скачать с turbobit.net | Скачать с hitfile.net
Всеволод Несвижский - Программирование аппаратных средств в Windows
Рассмотрено программирование аппаратных ресурсов в Windows посредством функций BIOS, портов ввода-вывода и программного интерфейса Win32 API. Описаны методы доступа и управления всеми основными устройствами современного персонального компьютера: мышью, клавиатурой, видеоадаптером, звуковой платой, дисковой подсистемой, процессором, шиной, портами и др. Уделено внимание общим методам программирования в Windows, а также различным трюкам и хитростям при написании программ: работе с файлами, взаимодействию в сети, самоликвидации исполняемых файлов, получению данных о USB-устройствах и др. Приведено большое количество простых и понятных примеров, написанных на языках C++ и Assembler.Размер : 4.81 MB
Формат : djvu
Страниц : 865
Год : 2004
Сообщить о неполадке
Скачать с depositfiles.com | Скачать с letitbit.net | Скачать с turbobit.net | Скачать с hitfile.net
Виктор Юров - Ассемблер. Практикум
Книга состоит преимущественно из практического материала, используя который можно разрабатывать сложные полнофункциональные программы для различных операционных платформ. Каждая из двенадцати глав практикума посвящена определенной прикладной теме. Исчерпывающе рассмотрены вопросы организации взаимодействия программ на ассемблере с внешним миром. Приведены варианты ассемблерной реализации многих известных и востребованных на практике алгоритмов. Изложение базовых вопросов прикладного программирования сопровождается рассмотрением ряда интересных примеров. Книга предназначена для студентов и специалистов, применяющих ассемблер для решения задач прикладного и системного программирования.Размер : 5.74 MB
Формат : djvu
Страниц : 400
Год : 2006
Сообщить о неполадке
Скачать с depositfiles.com | Скачать с letitbit.net | Скачать с turbobit.net | Скачать с hitfile.net
Рудаков, Финогенов - Язык ассемблера: Уроки программирования
Книга является простым и доступным для широкого круга пользователей пособием по программированию на языке ассемблера для персональных компьютеров IBM PC. Рассматриваются основы разработки программ, аппаратная организация компьютера, использование системных средств DOS и BIOS, программирование сопроцессора и защищенного режима. Отдельный раздел посвящен разработке прикладных драйверов Windows для управления нестандартной аппаратурой. Для читателей, не являющихся профессионалами-программистами, но имеющих дело с персональными компьютерами, а также студентов вузов, аспирантов и преподавателей.Размер : 8.75 MB
Формат : djvu
Страниц : 640
Год : 2001
Сообщить о неполадке
Скачать с depositfiles.com | Скачать с letitbit.net | Скачать с turbobit.net | Скачать с hitfile.net
Юрий Магда - Ассемблер для процессоров Intel Pentium
Издание посвящено вопросам программирования на языке ассемблера для процессоров Intel Pentium. Рассмотрен широкий круг вопросов, начиная с основ программирования на ассемблере и заканчивая применением самых современных технологий обработки данных, таких как MMX, SSE и SSE2. Материал книги раскрывает методику оптимизации программного кода для всех поколений процессоров Intel Pentium, включая Intel Pentium 4. Теоретический материал подкреплен многочисленными примерами программного кода. Для широкого круга читателей, от студентов до опытных разработчиков программного обеспечения.Размер : 3 MB
Формат : djvu
Страниц : 410
Год : 2006
Сообщить о неполадке
Скачать с depositfiles.com
Крис Касперски - Образ мышления - дизассемблер IDA Pro
Подробный справочник по функциям встроенного языка, интерфейсу и архитектуре дизассемблера IDA Pro 4.01 с уточнением особенностей младших версий. Показывает приемы эффективного использования IDA Pro для исследования зашифрованного кода, самомодифицирующегося кода и кода, защищенного антиотладочными приемами. Ориентирован на системных программистов средней и высокой квалификации в совершенстве владеющих языком ассемблера микропроцессоров серии Intel 80x86 и работающих с операционными системами фирмы Microsoft.Размер : 2.54 MB
Формат : pdf
Страниц : 425
Год : 2001
Сообщить о неполадке
Скачать с depositfiles.com
Кип Ирвин - Язык ассемблера для процессоров Intel
В основу этой книги положено описание архитектуры процессоров фирмы Intel, называемой IA-32, сделанное с точки зрения программиста. Основной акцент в ней сделан на создании 32-разрядных приложений для системы Windows. Ее отличает последовательный и методический и грамотный подход к изложению материала. Материал данной книги подобран в соответствии с ее первоначальным замыслом — научить студентов писать и отлаживать программы на уровне машинных кодов. Она никогда не заменит собой полноценный учебник по архитектуре компьютеров, но позволит студентам получить из первых рук бесценный опыт в написании программ и продемонстрирует, как на самом деле работает компьютер.Размер : 3.6 MB
Формат : pdf
Страниц : 892
Год : 2005
Сообщить о неполадке
Скачать с depositfiles.com
Василий Митницкий - Архитектура IBM PC и язык ассемблера
Рассмотрены общая структура программы на Ассемблере, команды двоичной арифметики, работа компьютера в текстовом и графическом режимах, реализация на Ассемблере различных конструкций языков высокого уровня, принципы отображения структур данных на двоичный код. На конкретных примерах разъясняются общие идеи архитектуры современных ЭВМ. Для студентов и преподавателей вузов, а также для всех желающих познакомиться с нижним уровнем программирования современных микропроцессорных систем.Размер : 1.3 MB
Формат : djvu
Страниц : 148
Год : 2000
Сообщить о неполадке
Скачать с depositfiles.com
Сергей Зубков - Ассемблер для Dos, Windows и Unix
В книге освещаются все аспекты современного программирования на ассемблере для DOS, Windows 95/NT и UNIX (Solaris, Linux и FreeBSD), включая создание резидентных программ и драйверов, прямое программирование периферийных устройств, управление защищенным режимом и многое другое. Детально рассматривается архитектура процессоров Intel вплоть до Pentium III. Все главы иллюстрируются подробными примерами работоспособных программ. Издание ориентировано как на профессионалов, так и на начинающих без опыта программирования.Размер : 2.49 MB
Формат : pdf
Страниц : 608
Год : 2000
Сообщить о неполадке
Скачать с depositfiles.com
Питер Абель - Ассемблер и программирование для IBM PC
В книге содержатся сведения о функциональной структуре компьютера, машинном языке и языке Ассемблер, рассмотрены арифметические операции, вопросы работы с клавиатурой, экраном, дисковыми накопителями, подпрограммы, оверлеи и многое другое. Приведено большое количество справочной информации. Книгу можно использовать и как учебник, и как справочник. Книга предназначена для студентов и преподавателей вузов, но также будет полезна в качестве справочного руководства и программистам, активно использующим язык Ассемблер в своей работе.Размер : 1.52 MB
Формат : djvu
Страниц : 314
Год : 2003
Сообщить о неполадке
Скачать с depositfiles.com | Скачать с letitbit.net
Юрий Магда - Ассемблер. Разработка и оптимизация Windows-приложений
В книге рассматривается использование языка ассемблера, описана методика разработки отдельных модулей для применения в программах на языках высокого уровня, показано, как с помощью ассемблера можно разработать полнофункциональные Windows-приложения. Особое внимание уделено оптимизации программ, написанных на языках высокого уровня, с помощью встроенного ассемблера. Для демонстрации методов и подходов выбраны наиболее популярные средства разработки - Visual C++ .NET и Delphi 7. В книгу включены примеры программного кода приложений, иллюстрирующие различные аспекты применения ассемблера. В приложении есть исходные тексты программ. Для профессиональных разработчиков программного обеспечения в Windows.Размер : 5.83 MB
Формат : djvu
Страниц : 544
Год : 2003
Сообщить о неполадке
Скачать с depositfiles.com | Скачать с letitbit.net | Скачать с turbobit.net | Скачать с hitfile.net
Александр Крупник - Изучаем ассемблер
Книга посвящена основам программирования на Ассемблере в системах Windows и DOS. Знание Ассемблера необходимо профессиональному программисту для понимания работы операционной системы и компилятора и разработке качественных программ. Это любимый язык хакеров; его знание позволяет менять по своему усмотрению программы, имея только исполнимый файл без исходных текстов. В основу изложения положены короткие примеры на ассемблере MASM, вводящие читателя в круг основных идей языка, знание которых позволяет не только писать простые программы, но и самостоятельно двигаться дальше. Книга рассчитана на школьников средних и старших классов, а также на всех, интересующихся программированием вообще и ассемблером в частности.Размер : 1.62 MB
Формат : djvu
Страниц : 249
Год : 2005
Сообщить о неполадке
Скачать с depositfiles.com

В начало страницы

Навигация по разделу Ассемблер

softcreate.narod.ru

Книги по Ассемблеру


Ассемблер? Это просто!
Учимся программировать

Авторы: Олег Калашников
Издательство: БХВ-Петербург
Год издания: 1996
Формат: DjVu
Страниц: 375
Размер: 11,7 Мб

Описание:
Подробно и доходчиво объясняются все основные вопросы программирования на ассемблере. Рассмотрены команды процессоров Intel, 16- и 32-разрядные регистры, основы работы с сопроцессором, сегментация памяти в реальном масштабе времени, управление клавиатурой и последовательным портом, работа с дисками и многое другое. Описано, как разработать безобидный нерезидентный вирус и антивирус против этого вируса, как написать файловую оболочку (типа Norton Commander или FAR Manager) и как писать резидентные программы. Каждая глава состоит из объяснения новой темы, описания алгоритмов программ, многочисленных примеров и ответов на часто задаваемые вопросы. Компакт-диск содержит исходные коды всех примеров, приведенных в книге, с подробными описаниями.

Книга написано достаточно сжато, но очень доходчиво. Ассемблер традиционно отпугивает многих программистов, но во время чтения этой книги вы поймете, что он не так страшен. Язык ассемблера бесспорно - самый быстрый, самый мощный, самый свободный и, возможно, самый красивый язык программирования! Если вы хотите овладеть таким мощным языков, вам обязательно стоит прочесть книгу Олега Калашникова "Ассемблер? Это просто! Учимся программировать".

Скачать
DepositFiles
LetitBit

Assembler. Практикум

Автор: В.Юров
Издательство: "Питер"
Год издания: 2006
Страниц: 400
Язык: Русский
Формат: DjVu
Размер: 5,78 Мб

Описание:
Основное содержание книги составляет базовый практический материал для создания сложных полнофункциональных программ на языке ассемблера. Каждая из десяти глав практикума посвящена определенной теме. Характер подобранного материала - прикладной. Исчерпывающе рассмотрены вопросы организации взаимодействия программ на ассемблере с внешним миром. Приведены варианты ассемблерной реализации многих известных и востребованных на практике алгоритмов. Изложение базовых вопросов прикладного программирования сопровождается рассмотрением ряда интересных задач. Книга предназначена для студентов и специалистов, применяющих ассемблер для решения задач прикладного и системного программирования.

Для наиболее качественного и эффективного изучения материала книги рекомендуется использовать данный практикум параллельно с учебником и справочником того же автора.

Скачать
DepositFiles
LetitBit

Ассемблер в задачах защиты информации

Автор: О.В.Бурдаев, М.А.Иванов, И.И.Тетерин
Издательство: "КУДИЦ-Образ"
Год издания: 2004
Страниц: 538
Язык: Русский
Формат: DjVu
Размер: 4,86 Мб

Описание:
В книге рассмотрен язык Ассемблера для процессоров семейства Intel 80x86, а также различные аспекты применения этого языка в области защиты информации. Книга рассчитана на широкий круг читателей, в том числе и не являющихся профессиональными программистами. Может быть полезна программистам, инженерам, студентам вузов. Книга состоит из шести глав.

Глава 1 суть учебное пособие для начинающих по программированию на Ассемблере в среде DOS, она содержит описание архитектуры компьютера IBM PC, системы команд, способов адресации данных, системных функций, некоторых приемов программирования. Вторая и третья главы книги рассчитаны на более подготовленного читателя. Главе 2 содержит описание криптографических методов и возможные способы решения задач контроля целостности и обеспечения секретности информации. Глава 3 посвящена специфическим применениям Ассемблера, таким как защита программ от статического и динамического исследования, борьба с вирусами, "изощренное" программирование. Глава 4 содержит описание особенностей программирования на Ассемблере в среде Linux. В главе 5 обсуждаются инструментальные средства и базовые приемы создания приложений для ОС Windows. В главе 6 описывается методика оптимизации программ на языке Ассемблер с учетом особенностей архитектур процессоров Pentium различных поколений.

Скачать
DepositFiles
LetitBit

Язык ассемблера: уроки программирования

Автор: П.И.Рудаков, К.Г.Финогенов
Издательство: "Диалог-МИФИ"
Год издания: 2001
Страниц: 640
Язык: Русский
Формат: DjVu
Размер: 8,76 Мб

Описание:
Книга является простым и доступным для широкого круга пользователей пособием по программированию на языке ассемблера для персональных компьютеров IBM PC. Рассматриваются основы разработки программ, аппаратная организация компьютера, использование системных средств DOS и BIOS, программирование сопроцессора и защищенного режима. Отдельный раздел посвящен разработке прикладных драйверов Windows для управления нестандартной аппаратурой. Для читателей, не являющихся профессионалами-программистами, но имеющих дело с персональными компьютерами, а также студентов вузов, аспирантов и преподавателей.

Скачать
DepositFiles
LetitBit

Ассемблер. Самоучитель

Автор: А.Крупник
Издательство: "Питер"
Год издания: 2005
Страниц: 242
Язык: Русский
Формат: DjVu
Размер: 4,07 Мб

Описание:
Книга знакомит читателя с ассемблеромуниверсальным языком «низкого уровня», на который переводятся другие, «высокоуровневые» языки. Будучи основой таких языков, ассемблер позволяет лучше понять и Си, и С++, и Паскаль. Кроме того, с его помощью можно написать отдельные части программ так, чтобы они быстрее выполнялись. В силу своей универсальности ассемблер позволяет менять и чужие программы, исходный текст которых на языке высокого уровня недоступен. За это его так любят хакеры.

Начав с простых коротких примеров, написанных для ассемблера MASM фирмы Microsoft, и двигаясь вперед, вы научитесь писать довольно сложные программы для Windows и DOS.

Книга предназначена для всех, кто интересуется программированием
вообще и ассемблером в частности.
Скачать
DepositFiles
LetitBit

Ассемблер на примерах. Базовый курс

Автор: Рудольф Марек
Издательство: Наука и Техника
Год издания: 2005
Страниц: 233
Язык: Русский
Формат: PDF
Размер: 5,76 Мб

Описание:
Серия «Просто о сложном». Эта книга представляет собой великолепное практическое руководство по основам программирования на языке ассемблера. Изложение сопровождается большим количеством подробно откомментированных примеров, что способствует наилучшему пониманию и усвоению материала. Доходчиво объясняются все основные вопросы программирования на этом языке.

Вы узнаете, как писать ассемблерные программы под разные операционные системы(Windows, DOS, Linux), как создавать резидентные программы, как писать ассемблерные вставки в программы на языках высокого уровня и многое другое. Попутно вам будут разъяснены основные моменты работы процессора, операционных систем, управления памятью и взаимодействия программ с аппаратными устройствами ПК - то есть все то, без знания чего нельзя обойтись при программировании на языке низкого уровня, которым и является ассемблер.

Книга написана доступным языком.
Лучший выбор для начинающих.
Скачать
DepositFiles
LetitBit

Практическое программирование микроконтроллеров
Atmel AVR на языке ассемблера

Автор: Ревич Ю.В
Издательство: «БХВ-Петербург»
Год издания: 2011
Страниц: 354
Язык: Русский
Формат: DjVu
Размер: 12,2 Мб

Описание:
Изложены принципы функционирования, особенности архитектуры и приемы программирования микроконтроллеров Atmel AVR. Приведены готовые рецепты для программирования основных функций современной микроэлектронной аппаратуры: от реакции на нажатие кнопки или построения динамической индикации до сложных протоколов записи данных во внешнюю память или особенностей подключения часов реального времени. Особое внимание уделяется обмену данными микроэлектронных устройств с персональным компьютером, приводятся примеры программ.

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

Скачать
DepositFiles
LetitBit

delphibooks.ucoz.ru

Отправить ответ

avatar
  Подписаться  
Уведомление о