Assembly language step by step programming with dos and linux
Подборка книг по Assembler
1. Калашников О.
«Ассемблер – это просто. Учимся программировать» (2011)
Настоящее раздолье для новичков, которые еще гуглят базовую терминологию и ищут ассемблер учебник. Это он и есть. Помимо ознакомления с языком и первых программ, также затронуты болевые точки – прерывания: штука несложная, но поначалу тяжелая для восприятия. С каждой главой ассемблер уроки усложняются, и на выходе читатель сможет писать программы на ассемблере, оптимизировать их, работать с вирусами, антивирусами, памятью и файловыми системами.
2. Аблязов Р.
«Программирование на ассемблере на платформе x86-64» (2011)
Акцент делается на работе процессора в защищенном режиме и long mode. Это незаменимая база для программирования в Win32 и Win64, которая затрагивает команды ассемблера, прерывания, механизмы трансляции и защиты с учетом режимных отличий. Рассматривается разработка оконных приложений и драйверов. Данный ассемблер учебник подойдет начинающим кодерам и тем, кто сразу перешел к программированию на ассемблере, но плохо разобрался в аппаратной платформе x86-64.
3. А.В. Столяров
«Программирование на языке ассемблера NASM для ОС Unix» (2011)
Пособие основано на лекциях, читавшихся автором в рамках курса «Архитектура ЭВМ и язык ассемблера» в Ташкентском филиале МГУ весной 2007 года; часть материала также прошла апробацию в рамках курса «Архитектура ЭВМ и системное программное обеспечение» кафедры Прикладной математики МГТУГА в 2008, 2009 и 2010 гг
4. Джефф Дантеманн
«Assembly Language Step–by–Step: Programming with Linux»
Вы узнаете:
— об основных понятиях, лежащих в основе вычислений и программирования, включая шестнадцатеричные и двоичные числа;
— об эволюции процессоров Intel и то, как работают современные процессоры x86;
— начать программировать (редактирование исходного кода с помощью сборки, компоновки и отладки);
— что такое Comprehend x86 32-разрядная адресная память с защищенным режимом;
— изучите набор инструкций x86, разделив множество полных примеров программ;
— научитесь работать с бесплатными программными утилитами под Ubuntu Linux, включая редактор Kate, ассемблер NASM и набор инструментов GNU;
— об ссновных практических возможностях программирования Linux, включая процедуры, макросы, шлюз вызова INT 80h и вызовы в стандартные
библиотеки C.
5. Рудольф Марек «Ассемблер на примерах»
Эта книга представляет собой великолепное практическое руководство по основам программирования на языке ассемблера. Изложение сопровождается большим количеством подробно откомментированных примеров, что способствует наилучшему пониманию и усвоению материала. Доходчиво объясняются все основные вопросы программирования на этом языке. Вы узнаете, как писать ассемблерные программы под разные операционные системы (Windows, DOS, Linux), как создавать резидентные программы, как писать ассемблерные вставки в программы на языках высокого уровня и многое другое. Попутно вам будут разъяснены основные моменты работы процессора, операционных систем, управления памятью и взаимодействия программ с аппаратными устройствами ПК — то есть все то, без знания чего нельзя обойтись при программировании на языке низкого уровня, которым и является ассемблер.
6. Белов А. В. «Микроконтроллеры AVR. От азов программирования до создания практических устройств» (2016)
За шесть шагов новый практический самоучитель позволит пройти путь от “чайника” изучающего азы цифровой техники, до вполне готового
специалиста, умеющего самостоятельно разрабатывать схемы любых устройств на микроконтроллерах и составлять для них программы. Изучив базовые элементы цифровой логики, читатель осваивает основы микропроцессорной техники, возможности семейства микроконтроллеров AVR, основы схемотехники и конструирования микроэлектронных устройств. Читатель изучит сразу два языка программирования для микроконтроллеров (язык Ассемблера и язык СИ), учится транслировать, отлаживать программы, прошивать их в память микроконтроллера, самостоятельно разрабатывать собственные микроконтроллерные устройства. Книга предназначена для широкого круга читателей: начинающих специалистов по электронной технике, студентов технических ВУЗов и всех желающих изучить эту область человеческих знаний.
Источник
Список ресурсов для изучения Ассемблера
Доброго времени суток!
Некоторым программистам иногда приходит в голову мысль «а не изучить ли мне ассемблер?». Ведь на нем пишут самые (с некоторыми оговорками) маленькие и быстрые программы, да и охота ощутить вкус низкоуровневого программирования берет свое. Ну и для общего развития не повредит.
Мысль эта не обошла стороной и меня. Вдохновившись историей одного байта, я ринулся в бой…
… но оказалось, что найти материал по интересующей теме не так просто, как хотелось бы. Посему решено было создать на хабре пополняющийся пост-индекс статей/книг/мануалов/etc. об этом, несомненно, великом языке.
Под катом находится, собственно, список с краткими комментариями, разбитый по категориям.
UPD
В список начали добавляться ресурсы по программингу микроконтроллеров.
Для начала
- ru.wikipedia.org/wiki/Ассемблер — ассемблер (не тоже самое, что «язык ассемблера», хотя эти понятия почти слились) в википедии
- ru.wikipedia.org/wiki/Язык_ассемблера — язык ассемблера там же
- wasm.ru/article.php?article=onebyte — история одного байта
- bitfry.narod.ru/00.htm — дневники чайника, довольно простые и интересные уроки для начинающих
- www.scribd.com/doc/267365/A-Beginners-Course-In-Assembly-Language — книга об основах ассемблера на английском языке
- Programming from the Ground Up — несложная книга на английском языке. Рекомендация megabrain
- www.osinavi.ru/asm — учебник по Ассемблеру «для квалифицированных чайников»
- habrahabr.ru/blogs/asm — блог, в котором, надеюсь, будет много статей об ассемблере
Ресурсы
- wasm.ru — наверное, самый крупный русскоязычный ресурс по Ассемблеру. Огромное количество статей, живой форум, новости
- cracklab.ru — огромный ресурс по исследованию/крэкингу программ
- www.insidepro.com/rus/doc.shtml — огромнейшее собрание статей Криса Касперски
- programmersclub.ru/assembler — курс asm&&win32
- www.proklondike.com/books/assembler.html — мини-библиотека книг по ассемблеру
- wiki.conus.info — большое количество заметок о reverse engineering на русском языке для начинающих и тех кто хочет научиться понимать создаваемый C/C++ компиляторами код
- wasm.ru/publist.php?list=1 — Уроки Iczelion’а переведенные
- www.nf-team.org/drmad/zf/zf1/zf1_006.htm — пособие начинающей технокрысы или как писать вирусы
Книги
Для книг я выкладываю только названия, без ссылок (или с ссылкой на интернет-магазин), так как я не знаю отношения некоторых людей к скачиванию чьей-то интеллектуальной собственности. Кому надо — тот найдет, где скачать.
- kpnc.opennet.ru — архив книг Криса Касперски
- Галисеев Г. В. Ассемблер для Win 32. Самоучитель
- Зубков С. В. Ассемблер для DOS, Windows и UNIX
- Кип Ирвин. Язык ассемблера для процессоров Intel = Assembly Language for Intel-Based Computers
- Калашников О. А. Ассемблер? Это просто! Учимся программировать
- Крис Касперски. Искусство дизассемблирования
- Владислав Пирогов. Ассемблер для Windows
- Владислав Пирогов. Ассемблер и дизассемблирование
- Ричард Саймон. Microsoft Windows API Справочник системного программиста
- Фрунзе А. В. Микроконтроллеры? Это же просто!
- Юров В., Хорошенко С. Assembler: учебный курс
- Абель — Ассемблер. Язык и программирование для IBM PC
- Эндрю Таненбаум — «Архитектура компьютера» — рекомендация lefty
- Чарльз Петцольд — «Код» — рекомендация lefty
- Assembly Language Step-by-step: Programming with DOS and Linux
- Юрий Ревич «Практическое программирование микроконтроллеров Atmel AVR на языке ассемблера» — рекомендация Ryav
- Нортон П., Соухе Д. «Язык ассемблера для IBM PC» — рекомендация maotm
- Григорьев В. Л. «Микропроцессор i486. Архитектура и программирование.» — рекомендация Ghost_nsk
- Нортон П., Уилтон Р. «IBM PC и PS/2.руководство по программированию» — описана работа с прерываниями и простыми железками, рекомендация Ghost_nsk
Англоязычные ресурсы
- asm.sourceforge.net — Ассемблер под Linux
- orangejuiceliberationfront.com/intel-assembler-on-mac-os-x — Ассемблер под Mac
- blogs.conus.info — Различные заметки о reverse engineering, security research, Oracle RDBMS internals, и т.д.
- msdn.microsoft.com — огромная база знаний по технологиям Windows от Microsoft
- www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html — мануалы по Intel’овским инструкциям
- developer.amd.com/documentation/guides/Pages/default.aspx#manuals — аналогичные доки для AMD
- win32assembly.online.fr — Уроки Iczelion’а, домашняя страница
- www.gnu.org/s/gdb/documentation — GDB Manual
- www.securitytube.net/groups?operation=view&groupId=6 — видеокурс Windows Assembly Language Megaprimer
- www.securitytube.net/groups?operation=view&groupId=5 — видеокурс Assembly Language Megaprimer for Linux
- alexfru.narod.ru/emiscdocs.html — подборка доков из теплых ламповых времен
- www.agner.org/optimize — Software optimization resources
- x86asm.net — x86-x64 manuals
- www.ctyme.com/rbrown.htm — Ralf Brown Interrupt List with over 9000 linked pages and 350 indexes making the process of searching much easier
Инструменты
- www.masm32.com — MASM32 SDK
- flatassembler.net — flat assembler (FASM)
- www.nasm.us — The Netwide Assembler (NASM)
- www.ollydbg.de — OllyDbg, отладчик для Windows
- www.hex-rays.com/products/ida/index.shtml — IDA — интерактивный дизассемблер и отладчик
- www.idapro.ru — русская страница IDA
- research.microsoft.com/en-us/projects/detours — Библиотека от Microsoft Research для инъекции Dll и перехвата управления на себя
- conus.info/gt — отладчик командной строки для выполнения простых отладочных задач
Программинг микроконтроллеров
- habrahabr.ru/blogs/controllers — тематический блог на хабре, с количеством постов несколько большим, чем в блоге по ассемблеру
- programmators.ru — сайт по контроллерам семейства PIC
- myrobot.ru/stepbystep — сайт роботостроения, по ссылке статьи о микроконтроллерах AVR
- www.123avr.com/07.htm — МК AVR
- easyelectronics.ru/category/avr-uchebnyj-kurs — AVR
Прочее
- zx.pk.ru — форум ZX Spectrum
- bbs.pediy.com — форум по reverse engineering на китайском языке (спасибо KollinZ). Чтобы можно было понять о чем речь, можно воспользоваться кнопкой «перевести» в хроме (спасибо за совет mexanism)
- old-dos.ru — крупнейший в Рунете архив старых программ
Заключение
Надеюсь эта статья будет полезна как новичкам, так и тем, кто ищет новых знаний. Если вы знаете какие-либо интересные ресурсы по теме, смело пишите в комментарии, пост создавался, чтобы пополняться.
Источник
Table of Contents
Assembly Language Step-by-Step—Programming with DOS and Linux, Second
Introduction — «Why Would You Want to Do That?»
Chapter 1 — Another Pleasant Valley Saturday Understanding What Computers Really Do
Chapter 2 — Alien Bases Getting Your Arms around Binary and Hexadecimal Chapter 3 — Lifting the Hood Discovering What Computers Actually Are
Chapter 4 — The Right to Assemble The Process of Making Assembly Language Programs
Chapter 5 — NASM-IDE: A Place to Stand Give me a lever long enough, and a place to stand, and I will move the Earth.
Chapter 6 — An Uneasy Alliance The x86 CPU and Its Segmented Memory System
Chapter 7 — Following Your Instructions Meeting Machine Instructions up Close and Personal
Chapter 8 — Our Object All Sublime Creating Programs that Work
Chapter 9 — Dividing and Conquering Using Procedures and Macros to Battle Complexity
Chapter 10 — Bits, Flags, Branches, and Tables Easing into Mainstream Assembly Programming
Chapter 11 — Stringing Them Up Those Amazing String Instructions
Chapter 12 — The Programmer’s View of Linux Tools and Skills to Help You Write Assembly Code under a True 32-Bit OS
Chapter 13 — Coding for Linux Applying What You’ve Learned to a True Protected Mode Operating System
Conclusion — Not the End, But Only the Beginning
Appendix A — Partial 8086/8088 Instruction Set Reference
Appendix B — Segment Register Assumptions for Real Mode Segmented Model Appendix C — Web URLs for Assembly Programmers
Appendix D — Segment Register Assumptions
Appendix E — What’s on the CD-ROM?
List of Figures
The bestselling guide to assembly language—now updated and expanded to include coverage of Linux.
This new edition of the bestselling guide to assembly programming now covers DOS and Linux! The Second Edition begins with a highly accessible overview of the internal operations of the Intel-based PC and systematically covers all the steps involved in writing, testing, and debugging assembly programs.
Expert author Jeff Duntemann then presents working example programs for both the DOS and Linux operating systems using the popular free assembler NASM. He also inlcudes valuable infomation on how to use procedures and macros, plus rare explanations of assembly-level coding for Linux, all of which combine to offer a comprehensive look at the complexitites of assembly programming for Intel processors.
Providing you with the foundation to create executable assembly language programs, this book:
Explains how to use NASM-IDE, a simple program editor and assembly-oriented development environment
Details the most used elements of the 86-family instruction set
Teaches about DEBUG, the single most useful tool you have as an assembly language programmer Examines the operations that machine instructions force the CPU to perform
Discusses the process of memory addressing
Covers coding for Linux
About the Author
Jeff Duntemann is the Editor-in-Chief of Visual Developer Techniques , the «Structured Programming» columnist for than twenty programming books.
magazine, former editor of Turbo Technix and PC Dr. Dobb’s Journal , and has written and edited more
Assembly Language Step-by-Step—Programming
with DOS and Linux, Second Edition
Wiley Computer Publishing John Wiley & Sons, Inc.
NEW YORK • CHICHESTER • WEINHEIM • BRISBANE • SINGAPORE • TORONTO
Publisher: Robert Ipsen
Editor: Cary Sullivan
Managing Editor: Micheline Frederick
Text Design & Composition: North Market Street Graphics
Designations used by companies to distinguish their products are often claimed as trademarks. In all instances where John Wiley & Sons, Inc., is aware of a claim, the product names appear in initial capital or ALL CAPITAL LETTERS . Readers, however, should contact the appropriate companies for more complete information regarding trademarks and registration.
Copyright © 2000 by Jeff Duntemann.
All rights reserved.
Published by John Wiley & Sons, Inc.
Published simultaneously in Canada.
No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form or by any means, electronic, mechanical, photocopying, recording, scanning or otherwise, except as permitted under Sections 107 or 108 of the 1976 United States Copyright Act, without either the prior written permission of the Publisher, or authorization through payment of the appropriate per-copy fee to the Copyright Clearance Center, 222 Rosewood Drive, Danvers, MA 01923, (978) 750-8400, fax (978) 750-4744. Requests to the Publisher for permission should be addressed to the Permissions Department, John Wiley & Sons, Inc., 605 Third Avenue, New York, NY 10158-0012, (212) 850-6011, fax (212) 850-6008, E-Mail: PERMREQ @ WILEY.COM >.
This publication is designed to provide accurate and authoritative information in regard to the subject matter covered. It is sold with the understanding that the publisher is not engaged in professional services. If professional advice or other expert assistance is required, the services of a competent professional person should be sought.
Library of Congress Cataloging-in-Publication Data:
Assembly language step-by-step : programming with DOS and Linux / Jeff Duntemann.—2nd ed. p. cm.
Rev. ed. of: Assembly language, © 1992.
ISBN 0-471-37523-3 (paper/CD-ROM : alk. paper)
1. Assembler language (Computer program language)I. Duntemann, Jeff. Assembly language.II. Title.
QA76.73.A8 D88 2000 005.265—dc21 00-020611
10 9 8 7 6 5 4 3 2 1
To the eternal memory of Kathleen M. Duntemann, Godmother 1920–1999 who gave me books when all I could do was put teeth marks on them. There are no words for how much I owe you!
F irst of all, to the authors of the software that I am honored to provide by their permission on this book’s CD-ROM:
Robert Anderton, author of NASM-IDE: www.inglenook.co.uk/nasmide/
Anthony Williams, author of ALINK: http://alink.home.dhs.org/
And, of course, the NASM team: Julian «Jules» Hall, Simon Tatham, H. Peter Anvin, John Fine, Kendall Bennet, Gary Clark, and Andrew Crabtree: www.web-sites.co.uk/nasm/
Because of their generosity, there is «nothing else to buy.» Everything you need to program in assembly is right here on the CD-ROM for this book.
Abundant thanks also go to Bill Schindler, for teaching me the ways of the C library, and Michael Abrash, who has always has been the rock upon whom my knowledge of assembly language itself has been anchored.
Finally, to Carol, as always, for the sacramental friendship that has challenged me, shaped me, and redeemed me every day of our 30 years together and 23 years as spouses.
Источник