Дата: Понедельник, 12.03.2012, 19:50 | Сообщение # 1
Участник
Зарегистрирован: 28.05.2011
Группа: Пользователи
Сообщений: 65
Статус: Offline
Привет всем! Я давно уже собираюсь разобраться с ассемблером, но, честно говоря, не знаю с чего начать. Тута ведь нужно знать не только сам ассемблер, но ещё и про адреса памяти и всё такое... Не могли бы посоветовать какие-нибудь учебники или уроки по самому Assembler'у и тому, что нужно знать, чтобы кодить на нём? C++ - попса :D
Сообщение отредактировал sk0rpi0n - Понедельник, 12.03.2012, 19:50
Дата: Понедельник, 12.03.2012, 20:43 | Сообщение # 2
Авторитетный
Зарегистрирован: 22.01.2012
Группа: Модераторы
Сообщений: 702
Статус: Offline
Такая же борода, то же хотелось бы получше изучить ассемблер..., я например пробовал начинать с Fasm и Masm32, как считаете какой из них более перспективен в возможностях, и какой лучше в обучении?
или быть может лучше было бы взять другой..?
Сообщение отредактировал xXxSh@dowxXx - Понедельник, 12.03.2012, 20:44
Дата: Понедельник, 12.03.2012, 21:58 | Сообщение # 4
Участник
Зарегистрирован: 28.05.2011
Группа: Пользователи
Сообщений: 65
Статус: Offline
Quote
А так советую java учить
Java javой, но я сейчас хочу ассемблер. Ибо java я уже юзал, когда модифицировал Minecraft, но там она, думаю, несколько отличается от обычной. Если буду учить java, то позже, она мне может пригодиться, если я буду устраиваться на работу, а я пока не собираюсь. Так что в данный момент мне нужен Assembler, хочу немного побольше понять устройство компьютера... Ну, разумеется, не только это. C++ - попса :D
Сообщение отредактировал sk0rpi0n - Понедельник, 12.03.2012, 22:03
Дата: Понедельник, 12.03.2012, 22:43 | Сообщение # 5
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 469
Статус: Offline
Для начала определитесь, что такое вообще ассемблер. Т.к это фактически не язык, а набор мнемонических команд для процессора. Лучше использовать MASM или TASM т.к у FASM'а дерьмо синтаксис (С моей точки зрения), а еще лучше 16 битный TASM это самый мёд для понимания азов асма. Перспектива одинакова у MASM'а и FASM'а. MASM будет жить, пока жив Мелко$офт. Но на FASM’е, например можно писать еще и под пингвина.
P.S Чем смогу помогу Pascal, C\C++, Assembler, Python
Сообщение отредактировал Волк-1024 - Понедельник, 12.03.2012, 22:48
Лучше возьми задачник по программированию и начинай прорешивать задачки.Это самый лучший способ выучить язык. Эффект почувствуешь где-то на 50ой решённой задачи.Пиши на tasm или nasm.Но лучше на tasm.Masm пока не советую,хоть он тебе легко дастся(ты будешь использовать макросы и в основном api функции,которые ты и так уже используешь),по причине того,что сначала нужно писать под дос,хоть это иногда и скучно.
Сообщение отредактировал Neo - Вторник, 13.03.2012, 06:39
Для начала определитесь, что такое вообще ассемблер.
Вот это я и хочу узнать. Хочу узнать, что он собой представляет, как работает и в общем всё о нём. А затем уже только программировать начинать.
Quote
Лучше возьми задачник по программированию и начинай прорешивать задачки.Это самый лучший способ выучить язык.
Знаю, Delphi так и учил, но асм не стал бы, наверное, не додумался бы . Спасибо за совет.
Quote
Пиши на tasm
Ок, раз все говорят в его пользу, то так и сделаю.
Ну и самое главное: Какая именно версия tasm мне нужна и как вообще его устанавливать? (а то я скачал tasm 5.0, а как устанавливать или запускать что-то не врублюсь).
UPD: Короче я установил, нашёл в инете стандартый hello word, ассемблировал его, а компоновку не проходит файлик hello.obj. В Bat файл пишу "TLINK HELLO", при запуске выдаёт "No program entry point". Как решить? C++ - попса :D
Сообщение отредактировал sk0rpi0n - Вторник, 13.03.2012, 14:11
Да я уже разобрался. Надо было дописать start и END start. Окей. Теперь мне бы какой-нибудь справочник по assembler, на русском и толковый. Без растекания мыслью по древу, но чтобы всё основное было. Буду премного благодарен за "подгон" такого справочника. C++ - попса :D
Определитесь,под что кодить будете! Если под форточки,то Masm,если кроссплатформ,то FASM или TASM. у FASMa очень самый сильный макроязык из всех перечисленных выше,красивый синтаксис (тут просто зависит от того,как кто кодит),но очень мало возможностей для отладки(( ну и хелпа на русском немного (но это временно). MASM-куча примеров,DDK,src и прочего говна)) TASM-Dead Ner' Zool... А по сути,неважно какой учить-синтаксис то выучить за дня 3 максимум. Тут нужно понимание!Щелчек,так сказать... Я вот по своему опыту скажу: года полтора учил асм как фанатик,но ничего больше Hello World'a не выходило,так как книги и примеры они есть,а понимания нету. И вот полгода назад произошел "щелчок"-понимание пришло само,и в универе делал лабы на заказ. Поэтому не спеши,читай,пробуй кодить,и возможно понимание придет быстрее...чем мне,к сожалению(( Я не крекер,а программист! Я не преступник-я свободный человек! Лучше один раз накодить,чем сто раз качать билды!
вот по своему опыту скажу: года полтора учил асм как фанатик,но ничего больше Hello World'a не выходило,так как книги и примеры они есть,а понимания нету.
Да, это я уже понял...
Quote
TASM-Dead Ner' Zool... biggrin
Выбрал его.
По сути, я вот сегодня с ним пое... Ну, прочитал много всякого... В общем, решил сначала покодить на DOS-версии, т.к. не нужно мудохаться со всеми окнами. Но вот в чём проблема: в туторах, что скинул мне Волк-1024, больше теории, чем практики... Вот теорию я почитал, а практиковаться не особо получается. Во-первых, в тех туторах не под TASM программы, или я не знаю почему, но не особо они у меня хотят работать... В общем, хочу практический учебник на DOS версию TASM, чтобы поменьше теории, т.к. я её уже сегодня начитался, а в инете не найду ничего... C++ - попса :D
Сообщение отредактировал sk0rpi0n - Вторник, 13.03.2012, 18:11
Я сначала выбрал FASM, но уже через неделю слез с него и забил из-за его синтаксиса. Хотя это при том, что он был моим первым ассемблером. Потом решил попробовать TASM и MASM и понравилось! Ну и пох на то, что последний раз TASM обновлялся более 10 лет назад. Зато почти все ТруЪ вирусы и трои, написаны на тасме и пишутся до сих пор. + Тасм имеет режим почти 99% совместимости кода с MASM'ом. В отличие от других асмов.
Quote
если кроссплатформ,то FASM или TASM.
O_o Turbo Assebler от Borland кроссплатформенный???!!!
Quote
чтобы поменьше теории
Это анриал. Под Досом еще больше будет теории. Например, различие Защищенного режима от Реального. И т.д Pascal, C\C++, Assembler, Python
Сообщение отредактировал Волк-1024 - Среда, 14.03.2012, 17:17
Тут нужно понимание!Щелчек,так сказать... Я вот по своему опыту скажу: года полтора учил асм как фанатик,но ничего больше Hello World'a не выходило,так как книги и примеры они есть,а понимания нету. И вот полгода назад произошел "щелчок"-понимание пришло само...
у меня и с делфи так же было, просто по началу тяжело шло, потом чем больше я обращался к тому коду который до этого не понял, тем больше озарения мне приходило
еще хотел сказать что не стоит бояться трудных в изучении языков, главное будущая перспектива его развития и его применения для написания хорошего софта, а понять его, хоть и не сразу, но все же вы сумеете в любом случае,это зависит только от вас и вашего желания...
Сообщение отредактировал xXxSh@dowxXx - Вторник, 13.03.2012, 23:07
Это анриал. Под Досом еще больше будет теории. Например, различие Защищенного от Реального. И т.д
Ну теорию я прочту до конца, допустим... Мне нужны конкретные примеры. Вывод суммы, разности, произведения A и B, нахождение большего из двух чисел, и прочее. Мне так будет понятнее. C++ - попса :D
P.S Код 32 битный. Для 16 битных программ использовать соответсвенно AX, CX и т.д
Спасибо большое... Но теперь, как вывести это на экран(хоть в тот же мессаджбокс, с этим я разберусь), и, что более важно, как мне сделать ввод данных с клавиатуры? C++ - попса :D
ввести 2 дробных числа и сложить их и вывести на консоль и в MessageBox.
.686; Директива определения типа микропроцессора . Model flat, stdcall; задачи линейной модели памяти ; И соглашения ОС Windows option casemap: none; отличие малых и больших букв
include \masm32\include\windows.inc include \masm32\include\kernel32.inc include \masm32\include\fpu.inc include \masm32\include\msvcrt.inc include \masm32\include\user32.inc includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib includelib \masm32\lib\msvcrt.lib includelib \masm32\lib\fpu.lib
include \ masm32 \ include \ windows.inc include \ masm32 \ include \ kernel32.inc include \ masm32 \ include \ fpu.inc include \ masm32 \ include \ user32.inc include \ masm32 \ include \ msvcrt.inc
fild temp2 fidiv identif1 fadd st (0), st (1) fild temp4 fidiv identif2 fadd st (0), st (1)
invoke FpuFLtoA, 0, 10, ADDR st4, SRC1_FPU or SRC2_DIMM invoke MessageBox, NULL, addr st4, addr st3, MB_OK invoke ExitProcess, NULL ;возврат управления Windows ; И освобождения ресурсов end _start; директива окончания программы с именем start