Консультация № 191217
10.07.2017, 11:11
0.00 руб.
0 18 1
Здравствуйте! У меня возникли сложности с таким вопросом:

Мой вопрос можно расценить как личный. Я пытаюсь изучить Ассемблер, но читая книги вопросов возникает больше, чем ответов. Я решил изучать программирование из-за того, что мой ноутбук сначала выполняет желания Микрософта и производителя, а потом они вспоминают про меня!!! Я хочу изменить это. Вы, как эксперт, какие книги посоветуете и каких тупиков порекомендуете избегать?

Обсуждение

давно
Старший Модератор
31795
6196
10.07.2017, 11:34
общий
Адресаты:
Когда Вы задавали свой вопрос, то у Вас была перед глазами памятка:
Книги по Ассемблеру
Assembler для DOS, Windows и UNIX - Зубков С.В.
Assembler. Практикум - Юров В.И.
Assembler. Учебник для вузов - Юров В.И.
Assembler. Учебный курс - Пирогов В.Ю.
Архитектура IBM PC и язык Ассемблера - Митницкий В.Я.
Программирование на языке ассемблера IBM PC - Пильщиков В. Н.
Ассемблер в задачах защиты информации - Абашев А.А.
Ассемблер для процессоров Intel Pentium - Магда С.Ю.
Ассемблер и дизассемблирование - Пирогов В.Ю.
Ассемблер и программирование для IBM PC - Абель Питер
Изучаем ассемблер - Крупник А.Б.
Искусство программирования на Ассемблере. Лекции и упражнения - Голубь Н.Г.
Персональные ЭВМ IBM PC и XT. Программирование на языке ассемблера - Скэнлон Л.
Системное программирование на персональном компьютере - Фельдман С.К.
Язык ассемблера для процессоров Intel - Ирвин, Кип
Язык ассемблера. Уроки программирования - Рудаков П.И.
Ассемблер для Windows - Пирогов В.Ю.
Ассемблер. Разработка и оптимизация Windows-приложений - Магда Ю.С.
Программирование на аппаратном уровне. Специальный справочник - Кулаков В.
Программирование аппаратных средств в Windows - Несвижский В.
Программирование на языке ассемблера для микропроцессоров 8080 и 8085 - Л. Левенталь
Программирование на языке ассемблера для микроконтроллеров семейства i8051 - Каспер Эрни
Книги по WinAPI (на С)
Создание эффективных WIN32-приложений - Рихтер Джеффри
Программирование для Windows 95 - Петцольд Ч.


Цитата: Роман
мой ноутбук сначала выполняет желания Микрософта и производителя, а потом они вспоминают про меня!

Если Вам не трудно уточните, что Вы хотите.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
401248
7
10.07.2017, 12:35
общий
Уточнение.
Вся литература, мягко говоря, "не свежая". Вспомогательные программы только 32 разрядные, а сейчас всё переделывают на 64 разряда. А Windows я упомянул в качестве мотива.
P. S. В одной из книг было написано: "Покупая программу, вы платите за идею."
давно
Старший Модератор
31795
6196
10.07.2017, 13:19
общий
Адресаты:
Тогда Вам нужен Руслан Аблязов - Программирование на ассемблере на платформе х86-64

ISBN 978-5-94074-676-8
В данной книге речь идёт о работе процессора в двух его основных режимах:
защищённом режиме и 64-битном, который также называют long mode («длинный
режим»). Также помимо изложения принципов и механизмов работы процессора в
защищённом и 64 -битном режимах, речь пойдёт о программировании на ассемблере
в операционных системах семейства Windows, как в 32-битных, так и 64-битных
версиях. Рассматривается не только разработка обычных приложений для операци-
онных систем Windows, но и разработка драйверов на ассемблере. При написании
книги уделялось большое внимание именно практической составляющей, т.е. изло-
жение материала идёт только по делу и только то, что необходимо знать любому
системному и низкоуровневому программисту. Последний раздел книги посвящён
принципам работы многопроцессорных систем, а также работе с расширенным про-
граммируемым контроллером прерываний (APIC)
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
401248
7
10.07.2017, 15:38
общий
Благодарю! А сами Вы лично считаете Ассемблер актуальным и долгоживущим языком?
давно
Старший Модератор
31795
6196
10.07.2017, 16:24
общий
Адресаты:
Цитата: Роман
актуальным и долгоживущим языком

Сейчас набегут "доброжелатели" и начнут свои мнения навязывать.

Ассемблер - это только вершина "зла".
Знание Ассемблера позволяет:
- разобратся в работе железа на низком уровне;
- разобратся в работе ОСей;
- разобратся с работой и поведением программы, даже без исходных кодов.
Список можно продолжать долго, но думаю, что даже этого достаточно.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
401248
7
10.07.2017, 16:29
общий
Очень исчерпывающий ответ! Ещё раз спасибо Вам. Осталось только набраться терпения...
давно
Посетитель
7438
7205
10.07.2017, 16:35
общий
Адресаты:
Можно и я вставлю свои 5 копеек?
Бывает весьма полезным использование ассемблерных вставок для ускорения "узких" мест.
Да и отлаживать свою программу проще, когда понятен ассемблерный код.

Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
401248
7
10.07.2017, 16:41
общий
Вы как буд-то мои мысли читаете. Именно так я и хочу испраить свой(МОЙ) ноутбук. Благодарю за понимание!
давно
Посетитель
7438
7205
10.07.2017, 17:00
общий
Адресаты:
Сначала озвучьте, что именно хотите исправить.
Потом уже будем думать, как это можно исправить.
Вполне возможно, уже есть готовые инструменты, способные исправить то, что надо.
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Старший Модератор
31795
6196
10.07.2017, 17:12
общий
Адресаты:
На счет долгоживучести:
В разных источниках встречалась информация, что чуть ли завтра РС перейдут с ассемблера на языки логического программирования(Prolog, Lisp). Но пока полноценную виртуальную машину на микросхеме, вместо БИОС, ещё не придумали, только разрядность процессора увеличивают. Да и кто будет программировать эту машину в микросхему - ассемблерщики.

Прототип уже как бы есть - ОСь Андроид - ядро Unix + виртуальная машина Java
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
401248
7
11.07.2017, 00:26
общий
Извините за задержку, смартфон сел.
Спасибо за предложение готовых решений, но для меня это пройденный этап - это тупик.
По поводу Андроида, отчасти Вы правы - это прототип. Но это прототип удалённой ОС, т. е. ОС где-то ( на сервере ), а у Вас на руках средство отображения и ввода информации.
Под долгоживучестью я подразумевал что Ассемблер создавался для процессора 8086 и если "родится" принципиально новый процессор, тогда всё, Ассемблер умрёт. Да и сейчас я, в поисках вспомогательного софта, обратил внимание, что ничего нового нет.
давно
Старший Модератор
31795
6196
11.07.2017, 08:45
общий
Адресаты:
Цитата: Роман
Ассемблер создавался для процессора 8086

Вы заблуждаетесь.
Ассемблер, это язык процессоров, микропроцессров, микроконтролеров.
Пока будут создаватся различные SMART-устройства с "мозгами" - будет существовать ассемблер.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
401248
7
11.07.2017, 09:35
общий
Я не имел ввиду двоичную систему. Мне пока нечем ответить( мало знаний) , но интуитивно я знаю, что я прав( я всегда прав ). Ничего личного, но я должен докопаться до сути.
давно
Посетитель
7438
7205
11.07.2017, 10:44
общий
11.07.2017, 10:46
Адресаты:
прототип удалённой ОС, т. е. ОС где-то ( на сервере )
Да ничего подобного! ОС на девайсе! То, что ОС общается с серверами по сети, так и компьютер делает тоже самое!
если "родится" принципиально новый процессор, тогда всё, Ассемблер умрёт
В вашем понимании, Ассемблер только для х86? Ну-ну... У каждого контроллера и процессора есть свой Ассемблер. Даже если умрет х86, в чем я сильно сомневаюсь, уж очень много на нем сделано, то новый процессор, который придет, будет со своим Ассемблером. Какая принципиальная разница?
в поисках вспомогательного софта, обратил внимание, что ничего нового нет
Вы так и не озвучили свои проблемы. Без этого - беспредметный разговор.
Э-э-э, как совместить высказывания?
Мне пока нечем ответить( мало знаний)
и
я знаю, что я прав( я всегда прав )
Не слишком ли Вы самоуверенны? Лично я думаю, что справедливо высказывание "я знаю, что ничего не знаю". Хотя, поверьте мне, багаж знаний у меня будет поболее Вашего...
я должен докопаться до сути.
А вот это похвально... Могу только слегка огорчить, до сути докопаться невозможно, можно только приблизиться...
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Старший Модератор
31795
6196
11.07.2017, 11:12
общий
11.07.2017, 11:14
Адресаты:
Если смотреть на перспективы развития процессоров тут или тут. Независимо, от того какая технология будет использована, процессор оставит за собой право управлять всем и вся, т.е. периферией, с помощью которой он будет считать, хранить, передавать или принимать данные.
К примеру уже сейчас процессор делегирует функцию обработки больших объемов данных графическому процессору видеокарты, а пересылкой занимается контролер DMA без участия процессора.

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

Сам по себе язык ассемблера представляет набор примитивов, из которых строится программа, а процессор представляет устройство, которое может только хранить, передавать, принимать, суммировать, сдвигать инвертировать данные и больше ничего. А уже из этих примитивов строятся микропрограммы, к примеру как умножение и деление.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
11.07.2017, 18:21
общий
это ответ
Здравствуйте, Роман!

Язык ассемблера, это не только мнемоника команд, это также и понимание того, как процессор взаимодействует с остальными устройствами РС. Для начала я бы посоветовал Вам начать с изучения устройства процессора 8080(как прототипа, упрощенную модель).
Цитата: вики
Процессор Intel 8086 представляет собой модернизированный процессор Intel 8080, и хотя разработчики не ставили перед собой цель достичь полной совместимости на программном уровне, большинство программ, написанных для Intel 8080, способны выполняться и на Intel 8086 после перекомпиляции. Новый процессор несёт в себе множество изменений, которые позволили значительно (в 10 раз) увеличить производительность по сравнению с предыдущим поколением процессоров компании.

Не смотря, что книга "не совсем свежая", в ней описан базис методик, которые были использованы в х86+ процессорах. К примеру чтение в регистр значения по адресу в памяти разбивается на несколько этапов-микропрограмм.
LD A,(nn) OCR(4) ORL(3) ORH(3) MRD(3)
LD A,(nn) - загрузить в регистр А, значение расположенное по адресу (nn);
OCR(4) - (operation code read) - чтение кода операции;
ORL(3) - (operand read, Ion byte) - чтение младшего байта 16-разрядного слова, непосредственно представленного в команде;
ORH(3) - (operand read, high byte) - чтение старшего байта 16-разрядного слова;
MRD(3) - (memory read) - чтение байта из косвенно адресованной ячейки памяти;
в скобках указанно количество циклов тактовой частоты затраченное на выполнение микропрограммы процессором. Даже после беглого изучения книги, можно будет переходить к более сложным системам х86+ и быстрому усвоению информации, такой как: многоуровневые кэши(быстрый, медленный), конвейеры с оптимизацией параллельных вычислений, синхронизация многоядерных систем процессора. Как говорится от простого к сложному. Шаг за шагом, постоянно усваивая подключаемые новые технологии, можно подойти к изучению современных процессоров(системы команд, взаимодействие в внешними устройствами и т.д.).

Можно сразу начать с программирования 64-х битных процессоров Руслан Аблязов - Программирование на ассемблере на платформе х86-64, но потом каждое новое слово, будет заставлять делать шаг назад.
Удачи!
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
399030
16
16.07.2017, 00:47
общий
Адресаты:


вопрос)
есть ли готовые малогабаитнные решения железа которые можно изучать и строить на их основе функциональное устройство программируя его на ассемблере?

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

Игорь Витальевич прошу Вас порекомендовать готовые решения Российских платформ)

спасибо)
Об авторе:
Правильного выбора в реальности не существует - есть только сделанный выбор и его последствия.


давно
Посетитель
7438
7205
17.07.2017, 10:51
общий
Адресаты:
У нас принято новую тему подымать в новой консультации.
Ладно, так и быть, отвечу здесь.

Во-первых, изучать надо тот Ассемблер, который у конкретного контроллера.
Изучать, начиная с 8080, смысла нет. Разве что, ознакомиться для общего развития.

Готовыми решениями, тем более Российских платформ (живу в Украине), я не пользуюсь.
Мы на фирме разрабатываем сами и схемы, и платы, и программы :)

Из известных на основе ATMEL AVR лично сталкивался с Arduino. Обычная Mega328.
Народ обычно пользуется программами на Си, но я пишу исключительно на Ассемблере.

Есть решения и для ARM-ов. Но не пользовался, поэтому ничего не скажу.
На фирме тоже используем, но опять же применяем свои решения.
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Форма ответа