Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ASM - с чего начать? 
:(
    Опции темы
GoldFinch
Дата 17.8.2009, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



ДобренькийПапаша, я рад что вы в курсе что есть книги Таненбаума (я их не читал)
однако там либо нет того что надо, либо вы читали не то.


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

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

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

Какие среды разработки существуют?
- под х86 есть 2 компилятора masm и fasm, 
масм более старый, под него больше заголовочных файлов, однако масм не поддерживается майкрософтом как отдельный компилятор, а сторонняя сборка "masm32" (masm32.com) тоже не развивается в плане синтаксиса
фасм (flatassembler.net) более новый компилятор, опенсорсный, активно развивается, во многом совместим с масмом.
- из ИДЕ используют msvs, RadASM, обычно хватает простого редактора с подсветкой (в фасме есть встроенный)

Написаны ли какие-либо библиотеки программного кода для асма (типа ATL, STL для C++, или скажем отдельно для работы над GUI)?
- ATL и STL  - библиотеки шаблонов, причем сам C++ кроссплатформенный, сравнение малость некорректно.
асм не кроссплатформенный, т.к. зависит от конкретного семейства процессоров (х86-32, х64)
стандартных библиотек для асма нет. т.к. асм - не язык как таковой, со своим стандартом, асмов много
в masm32 есть библиотека masm32.lib схожая с stdlib в С, есть библиотеки для отладки и т.п.
в фасме есть стандартная библиотека макросов, и есть пользовательские библиотеки

при этом надо помнить что объектные модули (.obj) написанные на асме можно слинковать с объектниками на других ЯП, и из асма можно вызывать код написанный на любом другом ЯП.
GUI на асме пишут либо в простых случаях, тогда обходятся winapi\com, либо в случаях когда стандартных подходов нет
написание GUI на асме прироста производительности не дает, разве что уменьшает размер файла, впрочем того же можно добиться и на С(С++)

- с ЧЕГО начать изучение асма
0) с выбора асма, например х86, например под винду
1) с изучения принципа работы процессора (регистры, память, стек и т.п., состояния, флаги, режимы адресации памяти, организация памяти)
2) с изучения ОС, 
поверхностно - если не надо работать с ОС, все равно надо знать организацию памяти в ОС, может надо знать про потоки и исключения, углубленно - если заниматься системным программированием

- список литературы
про процессор можно почитать что-нибудь наподобие "справочника по процессору 386", или по более современному
про ОС (винде) надо читать Рихтера, windows via c\c++
PM MAIL ICQ   Вверх
nlp
Дата 22.8.2009, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 22.8.2009

Репутация: нет
Всего: нет



К мегапосту GoldFinch'а добавлю лишь, что новичку необходим редактор - простой в обращении, но с мощными возможностями подсветки синтаксиса ассемблера (чтоб ошибок было минимум, и так наделает кучу без опечаток).
Лучшей подсветки чем в Ogar Asm Editor я не встречал нигде.
PM MAIL   Вверх
cardinal
Дата 22.8.2009, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 1
Всего: 99



nlp, ники на форумах принято выделять жирным...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Kipter
Дата 7.5.2010, 05:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 2.5.2006

Репутация: нет
Всего: нет



Цитата(GoldFinch @  17.8.2009,  10:10 Найти цитируемый пост)
асм - это минимальный уровень на котором можно писать программы вообще. 
любая программа, будучи скомпилированной состоит из инструкций асма.

Цитата(GoldFinch @  17.8.2009,  10:10 Найти цитируемый пост)
поэтому функциональные языки компилятся в императивный асм код


Но-но-но! аккуратнее с таким заявлением то =) 
Безусловно конечно некоторые компилеры мб и генерят сперва асм код а потом его компилят в машинный. 
Но программа будучи скомпилированной не состоит из инструкций асма =) Асм создает тот же слой абстракции, и скрывает за мнемониками команд процессора - порой целый набор вариантов машинных команд =)

вот в аттаче - пример инструкции MOV, из книги тайн =)
для каждого типа операндов у инструкции mov свой машинный код =)
причем эта таблица не полная и в какой то степени сжатая =)
чтобы получить машинный код инструкции нужно либо к опкоду прибавлять некоторые значения (например номер регистра)
либо после опкода установить управляющие биты например ModR/M и SIB, не зря же в х86 переменная длинна инструкций =)))


Это сообщение отредактировал(а) Kipter - 7.5.2010, 05:52

Присоединённый файл ( Кол-во скачиваний: 22 )
Присоединённый файл  1.PNG 89,92 Kb
PM MAIL   Вверх
Abyx
Дата 7.5.2010, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 601
Регистрация: 3.11.2009

Репутация: 1
Всего: 10



Цитата(Kipter @  7.5.2010,  05:43 Найти цитируемый пост)
Безусловно конечно некоторые компилеры мб и генерят сперва асм код а потом его компилят в машинный. 
Но программа будучи скомпилированной не состоит из инструкций асма =) Асм создает тот же слой абстракции, и скрывает за мнемониками команд процессора - порой целый набор вариантов машинных команд =)

Ты ошибаешься.
Асм не создает никаких абстракций, и нет разделения понятий "инструкций асма" и "инструкций проца".

Есть взаимно однозначное соответствие между байтами инструкции и ее текстовым представлением.
Например 
"100: jmp near 105" соответствует E9 00 00 00 00
"100: jmp short 105" соответствует EB 03

Но это если писать инструкцию полностью.
Большинство компиляторов асма, для удобства программиста позволяют опускать спецификаторы размеров операндов, и сами выбирают наиболее удачный вариант. Более того, некоторые компиляторы заменяют одни инструкции другими, например mov на lea.

Но всегда можно написать полное название инструкции, чтобы компилятор скомпилировал нужную инструкцию.
Наиболее наглядно это видно в тех ассемблерах где важна возможность указать конкретный размер инструкции - например в ассемблерах встроенных в OllyDbg, HIEW и т.п.
PM MAIL   Вверх
Simpleton
Дата 23.12.2010, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 23.12.2010

Репутация: нет
Всего: нет



Абсолютный новичок в асм но не нра.
PM MAIL   Вверх
fuckingniger
Дата 14.3.2011, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 1.10.2010

Репутация: нет
Всего: 1



а есть интерпретатор,  который работает с 64 битной виндой ??? 
PM MAIL   Вверх
fuckingniger
Дата 15.3.2011, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 1.10.2010

Репутация: нет
Всего: 1



я пока мало чего понимаю в этом всём.Какую среду выбрать среду разработки для процессора 8086 ???
PM MAIL   Вверх
Marlik
Дата 29.11.2012, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 25.2.2007
Где: Рязань

Репутация: нет
Всего: нет



Привет всем, народ на дворе почти 2013 год, кто использует какие проги для написания, под какие процы и архитектуры, где почитать и что, самое свежее. У меня Windows 7 64 bit. Хочется с чего-то начать а как стартануть не знаю. Спасибо.
PM WWW Skype   Вверх
xcislav
Дата 14.1.2013, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 26.10.2009

Репутация: нет
Всего: нет



А я не могу создать на форуме тему(

Добавлено через 2 минуты и 35 секунд
00000000  BB0000            mov bx,0x0
00000003  31C0              xor ax,ax
00000005  CD16              int 0x16
00000007  B400              mov ah,0x0
00000009  2C30              sub al,0x30
0000000B  91                xchg ax,cx
0000000C  6800B8            push word 0xb800
0000000F  1F                pop ds
00000010  31C0              xor ax,ax
00000012  CD16              int 0x16
00000014  8807              mov [bx],al
00000016  2E88063200        mov [cs:0x32],al
0000001B  43                inc bx
0000001C  43                inc bx
0000001D  E2F1              loop 0x10


Вот программа печатаю - выводит посимвольно в видеобуфер (цикл столько сколько раз первый запрос указан). Но программа не работает. А должна писать после тела программы сразу байты и исполнять их после завершения цикла ввода.
PM MAIL   Вверх
bernice
Дата 20.4.2013, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 30.3.2013
Где: Тула

Репутация: нет
Всего: нет



Цитата(neutrino @ 26.3.2002,  15:07)
Da, sait nichego, osobenno fanariki na solnechnih batareikah ponravilis. No dolgo gruzitsia.  :satisfied

все что нравится-долго грузится))
PM MAIL WWW ICQ Skype   Вверх
Белоснежка
Дата 23.5.2013, 01:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 1.11.2010

Репутация: нет
Всего: нет



Привет всем! 

У меня вопрос. Может глупый.

Нам сказали поставить готовую операционку на виртуальную машину. Операционка: Убунту, с насм и гцц. 
Ну и дали задачку, записать в регистр еах число, потом выдать это число наоборот в регистре еbх. Я для переворачивания использовала команду bswap.
Я правильно понимаю, что если я скомпилирую этот код другим ассемблером, то он не будет работать? Но смена самой операционки ведь никак не повлияет на работу кода (если всё-таки скомпилируется), или? 
PM MAIL Skype   Вверх
Google
  Дата 20.10.2019, 06:17 (ссылка)  





  Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.1452 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.