NASM. Первая программа. Установка среды. Компиляция Nasm на windows. Урок 1

#nasm #assembler #linker #nasmwindows
Поддержать проект - www.donationalerts.ru/r/bytepp
В этом уроке вы узнаете как скомпилировать nasm на windows. Как создать исполняемый файл из файла на ассемблере, как создать объектный файл. Мы изучим основные команды и структуру программы на NASM. Также мы установим среду разработки (Sublime Text 3 / VS Code) и установим NASM и линкер. Вы узнаете как правильно компилировать assembler чтобы он всегда запускался без ошибок.
NASM
nasm.us
GoLink
www.godevtool.com
Среды разработки
www.sublimetext.com/3
code.visualstudio.com
Подписывайтесь на канал, ставьте лайки, задавайте вопросы в комментариях!

Пікірлер: 141

  • @Bytepp
    @Bytepp4 жыл бұрын

    С 23 Февраля, товарищи программисты!

  • @iXNomad

    @iXNomad

    4 жыл бұрын

    На 9:00 не могу добавить переменную, только изменить то, что лежит в Path (при двойном клике, там одна строчка). Windows 7. Так что либо nasm, либо линковщик. Как оба добавить хз.

  • @iXNomad

    @iXNomad

    4 жыл бұрын

    Решил проблему, достаточно просто перечислить пути через ";".

  • @iXNomad

    @iXNomad

    4 жыл бұрын

    hello_world.asm:24: error: symbol '_GetStdHandle@4' undefined

  • @iXNomad

    @iXNomad

    4 жыл бұрын

    Проблема решается сохранением .asm файла в формате UTF-16.

  • @PianoElipse

    @PianoElipse

    3 жыл бұрын

    а я ведь смотрю это тоже 23

  • @Shama_Abd
    @Shama_Abd4 жыл бұрын

    Ничего себе "строк немногими больше, чем в Python" 😄

  • @Bytepp

    @Bytepp

    4 жыл бұрын

    😂 чуть-чуть побольше)))

  • @mastersemenrossiyanin7848

    @mastersemenrossiyanin7848

    4 жыл бұрын

    ​@@myriaxont Скорость НАМНОГО больше и питон 2.хх делал ексешники, а 3.хх уже не может. А Ассемблер - делает и сом-файлы даже!

  • @adv1zz356

    @adv1zz356

    3 жыл бұрын

    ASSembler)

  • @user-nj3gk2nn6b

    @user-nj3gk2nn6b

    2 жыл бұрын

    @@adv1zz356 Pießün language

  • @nakidai

    @nakidai

    2 жыл бұрын

    @@myriaxont А разве 586 это не 1 пень?

  • @elizabethgrant6018
    @elizabethgrant60184 жыл бұрын

    Клянусь, Вы не представляете, насколько помогли мне! Спасибо ОГРОМЕННОЕ :)

  • @user-vh7iq9qe8m
    @user-vh7iq9qe8m4 жыл бұрын

    Лучшее видео по теме, которое я смог найти. Автор, ОГРОМНОЕ СПАСИБО!!

  • @tartaletka3474
    @tartaletka3474 Жыл бұрын

    Редко пишу комментарии, но тут особый случай. Спасибо огромное за ролик, очень помогло!! 🤝

  • @user-sg2bl9kw7u
    @user-sg2bl9kw7u2 ай бұрын

    Это наверное единственное видео на ютуб, где человек всё до такой степени понятно изложил, что даже не много не по себе. 😅 Не, реально спасибо! На ассемблере вообще не понятно как писать, как компилировать, как что, как где, а у тебя всё понятно. 😊

  • @user-tg1lh9ly5r
    @user-tg1lh9ly5r4 жыл бұрын

    Дай Бог здоровья)

  • @itspecial100
    @itspecial100 Жыл бұрын

    Спасибо за ролик, хотелось бы продолжения на NASM!

  • @mastersemenrossiyanin7848
    @mastersemenrossiyanin78484 жыл бұрын

    Очень хорошие дельные объяснения с уместными комментариями и удачными демонстрациями без идиотских музыков. Респект!

  • @Rizzok

    @Rizzok

    Жыл бұрын

    Из детального там только как установить все добро. Не раскрыта тема, откуда он берет названия функций, что за @4 в названии функций библиотеки, что такое инструкция "db", "resd", зачем мы делаем "push" (и собственно куда) перед вызовом функций, каков должен быть порядок. Не раскрыта тема почему мы забираем результат из регистра eax... Короче говно, а не обучалка.

  • @domochevsky4703
    @domochevsky47034 жыл бұрын

    Чел, в институте начинаем изучать ассемблер Препод скинул свою идеешку, которая у меня не робит на компике решил найти альтернативу и нашел nasm а тут ты выпустил видос, да еще и прикольный спасибо, продолжай в том же духе, успехов!

  • @Bytepp

    @Bytepp

    4 жыл бұрын

    Спасибо)) тебе тоже успехов)

  • @ivanvana
    @ivanvana3 жыл бұрын

    Скомпилировал, благодарю тебя

  • @Bytepp

    @Bytepp

    3 жыл бұрын

    Крутяк))

  • @user-tn3bw1wg8w
    @user-tn3bw1wg8w4 жыл бұрын

    Спасибо за видео)

  • @Bytepp

    @Bytepp

    4 жыл бұрын

    Пожалуйста))

  • @renatsu_dev
    @renatsu_dev4 жыл бұрын

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

  • @user-mq4dg2vz6l
    @user-mq4dg2vz6l Жыл бұрын

    Спасибо, лучший!

  • @thetraveler7779
    @thetraveler77793 жыл бұрын

    Слушай, а как же notepad++?

  • @killkostll2455
    @killkostll2455Ай бұрын

    СПАСИБО ТЕБЕ ОГРОМНОЕЕЕ

  • @vasilyserediuk4037
    @vasilyserediuk40374 жыл бұрын

    ты бог:)

  • @vitaliykonovalov4537
    @vitaliykonovalov45373 жыл бұрын

    Я заметил что строку global Start можно вообще удалить, а программа всё равно будет работать. Важно только чтоб имя метки в команде golink /entry:имя_метки совпадало с имя_метки: в коде перед строкой push STD_OUTPUT_HANDLE

  • @Bytepp

    @Bytepp

    3 жыл бұрын

    Круто))

  • @MrNippones
    @MrNippones4 жыл бұрын

    Давай есчё!!!!! Классное видео. Писал когда-то на турбо ассемблере, но на 64 уже не компилится.

  • @guliyevshahriyar
    @guliyevshahriyar Жыл бұрын

    Sposibo bolshaya

  • @user-is4ho2pl2z
    @user-is4ho2pl2z2 жыл бұрын

    Будет в этом насме работать это?: section .data msg db "hello, world" ,0 section .bss section .text global main main: mov rax, 1 mov rdi, 1 mov rsi, msg mov rdx, 12 syscall ret или примерно так, а то ты сразу кучу системных вызовов показываешь, тогда уж проще через printf. Запиши лучше начиная с основ видео. Я пробую в убунуту делать, хотелось бы просто в винде, если этот насм такой код поддерживает было бы круто, а у тебя там еще перед самим .дата кучу подключений написано.

  • @user-lz9sz6ql8m
    @user-lz9sz6ql8m7 ай бұрын

    Привет, такой вопрос, а как сделать чтобы запустить именно существующий код асамблер? У меня имеется код, который должен рисовать квадрат из нолей, но одна проблема, я не знаю как это сделать через nasm, и вообще обязательно ли через него это делать я не знаю, вот, у меня windows 10 64 бит

  • @alexlyt9104
    @alexlyt91044 жыл бұрын

    А как связаться для консультации?)

  • @user-cg2cd2dt1b
    @user-cg2cd2dt1b3 жыл бұрын

    Я не знаю разницы между масм32 и насм. Я могу запустить код из примера (17:05) на масм32? Просто исскал гайды по масму, недосмотрел и начал по вашему уроку изучать насм 😅.

  • @user-um2tz8oe9p

    @user-um2tz8oe9p

    Жыл бұрын

    Хоть уже год прошёл, но наверняка не можешь, должна быть какая-то разница. Хотя возможно она есть только маленьких аспектах.

  • @setwindowlongptr
    @setwindowlongptr3 жыл бұрын

    Python exe: 7мб Assembly exe: 2кб

  • @Bytepp

    @Bytepp

    3 жыл бұрын

    жиза

  • @PianoElipse

    @PianoElipse

    3 жыл бұрын

    пифон не компилируемый язык

  • @oppym

    @oppym

    3 жыл бұрын

    @@PianoElipse есть прога для компиляции в .ехе

  • @PianoElipse

    @PianoElipse

    3 жыл бұрын

    @@oppym он не компилирует. пуинстуллер просто собирает твой пифон установленный на пука вместе с сурс кодом, который ты натыкал на клаве, и пихает это в ехе файл. Потом при открытии просто распаковывает всю это погонь в %temp%

  • @nakidai

    @nakidai

    2 жыл бұрын

    @@PianoElipse Эт чё, если я испольню филе то я смогу прогать в идле и вообще там работать пока условно работает While true: Print(" ")

  • @danylorozumovskiy43
    @danylorozumovskiy43 Жыл бұрын

    Посоветуй какую-то литературу по NASM для windows

  • @angelfromtheunderground7999
    @angelfromtheunderground79993 жыл бұрын

    А ты точно программист? Почему тема светлая, а?

  • @Bytepp

    @Bytepp

    3 жыл бұрын

    Не пали XD

  • @thfrussia6717
    @thfrussia671720 сағат бұрын

    Блин, хотел покодить на ассемблере какие-нибудь простенькие андроид-приложения прямо с планшета. Это так сложно оказалось, что ппц. Не сам ассемблер, а возможность создать что-то рабочее. Во всех руководствах в интернете речь идет прежде всего про работу с компьютера - Android Studio и т.п. Можно установить терминал линукс Termux и пытаться все это компоновать и собирать с терминала, но там вообще черт ногу сломит. Мне не удалось даже скомпилировать готовый простой прект Visual Studio. Пишет undefined symbol __android_log_write, хотя log.h файл есть. Видимо надо еще библиотек NDK всяких накачивать, и без них termux уже 700 мб весил. Не говоря уже про утилиты для сборки .apk. В общем хрень какая-то...

  • @CyclicDarkMushy
    @CyclicDarkMushy2 жыл бұрын

    закинул пути к nasm и golink в path, все правильно через точку с запятой. Терминал не видит ни nasm ни golink ни другой. не нашёл ответа как исправить. Что делать???

  • @adilfromearth129
    @adilfromearth1294 жыл бұрын

    Не получалось превратить объектный файл в экзешник, перелазил весь интернет... в итоге оказалось что забыл сохранить файл в саблайме)

  • @ElektroNIKGame

    @ElektroNIKGame

    3 жыл бұрын

    Спасибо тебе, добрый человек:D Очень помог!

  • @Winnni951
    @Winnni951 Жыл бұрын

    Подскажите, пожалуйста, создал и asm и obj и exe файлы, но когда пишу имя exe-файла в windows PowerShell , он мне говорит, что test : Имя "test" не распознано как имя командлета, функции, файла сценария ил и выполняемой программы. Проверьте правильность написания имени, а также налич ие и правильность пути, после чего повторите попытку. строка:1 знак:1 + test + ~~~~ + CategoryInfo : ObjectNotFound: (test:String) [], CommandNotFou ndException + FullyQualifiedErrorId : CommandNotFoundException Что мне делать с этим???

  • @Winnni951

    @Winnni951

    Жыл бұрын

    Я разобрался

  • @egorkarpow3281

    @egorkarpow3281

    Жыл бұрын

    @@Winnni951 Привет,как ты исправил ?

  • @egorkarpow3281

    @egorkarpow3281

    Жыл бұрын

    Разобрался, чтобы запустить файл я писал следующее в консоле ./имя_файла(которое вы задали).exe

  • @Winnni951

    @Winnni951

    Жыл бұрын

    @@egorkarpow3281 а я пытался на диске D работать..

  • @happywin98
    @happywin983 жыл бұрын

    :)

  • @vitaliykonovalov4537
    @vitaliykonovalov45373 жыл бұрын

    Странно, у меня почему-то пишет 2 ошибки: mov dword [StandardHandle], EAX push NULL push Written push MessageLength push Message push dword [StandardHandle] У меня пишет ошибки: hello.asm:25: error: symbol `StandardHandle' not defined hello.asm:31: error: symbol `StandardHandle' not defined

  • @Bytepp

    @Bytepp

    3 жыл бұрын

    В названии функции ошибка похоже

  • @vitaliykonovalov4537

    @vitaliykonovalov4537

    3 жыл бұрын

    @@Bytepp Спасибо за быстрый ответ. Да, у меня была опечатка в названии StandardHandle в 17-й строке.

  • @xow998
    @xow9984 жыл бұрын

    1) Для виндов NASM не нужен, это я ответственно заявляю, есть MASM, крайняя версия 14.24.28316.0, работает отлично. 2) VS Code можно русифицировать встроенными средствами, а саблайн нельзя.

  • @xow998

    @xow998

    4 жыл бұрын

    @Никита Миронов , читай внимательно, для ВИНДОВ NASM не нужен... Да вообще-то и для линукса тоже. Для виндов он не нужен потому, что лучшего компилятора ассемблера и не только ассемблера, но и Си, чем компилятор от микрософт, не существует в природе. Доказал это, к сожалению рано ушедший Крис Касперски, (не путать с автором антивируса), он же доказал, что набор компиляторов gcc, для линукса непревзойден в своем роде, но только для линукса!, компилятор микрософта в виндах его делает. Ну а так, позабавиться, ставь себе NASM, кто же мешает, только зачем, если ты программист, то у тебя на 100%, кроме тех , кому религия не позволяет, есть вижуал студия, в которой все есть, к которой прекрасным дополнением идет вскод.

  • @xow998

    @xow998

    4 жыл бұрын

    @Никита Миронов ,там есть gas , отличная вещь... Ты в чистом debian ? Сочувствую, .. значит религия.., проходил я это лет 15 назад. По дружески, бросай ты это, поставь 10-ку, запусти на ней WSL, а в нем хочешь дебиан, хочешь федорино горе, хочешь кал, да хоть убунту и живи в удовольствие. Потому что, как не крути, а в лине, а я его знаю с 96 года, ничего удобного ни для пользователя ни для программиста, по сравнению с окнами, ничего не сделали...

  • @xow998

    @xow998

    4 жыл бұрын

    @Никита Миронов , каждый должен пройти свой путь, удачи.

  • @paula.7383
    @paula.73832 жыл бұрын

    Warning! Specified entry point (Start) was not found.

  • @itspecial100
    @itspecial100 Жыл бұрын

    ДАВАЙ ПРОДОЛЖЕНИЕ НА NASM!!!

  • @XxxScorchedEarthxxX
    @XxxScorchedEarthxxX3 жыл бұрын

    сделал все точно по примеру но выдало ошибку в первой строке label or instruction expected at start of line что это значит и как решить эту проблему?

  • @Bytepp

    @Bytepp

    3 жыл бұрын

    Скорее всего с названием точки входа что-то не так

  • @mrdixioner
    @mrdixioner2 жыл бұрын

    Чёт я запутался, что лучше для винды: NASM, FASM или MASM?

  • @tatsumoku

    @tatsumoku

    2 жыл бұрын

    MASM

  • @CAHCrawlAdaptHide
    @CAHCrawlAdaptHide2 жыл бұрын

    unable to open output file "one.obj"

  • @alexlawyer777
    @alexlawyer777 Жыл бұрын

    Рекомендую Geany !!!

  • @user-vq6nx7tn1j
    @user-vq6nx7tn1j22 күн бұрын

    комментарии к коду через этот знак # можно писать ?

  • @nakidai
    @nakidai2 жыл бұрын

    А не будет 64 бит программа работать на 32 битном процессоре даже если там нет операций, что есть в x64?

  • @beydaamo6387

    @beydaamo6387

    2 жыл бұрын

    не будет

  • @nakidai

    @nakidai

    2 жыл бұрын

    @@beydaamo6387 Грусть пичаль(

  • @user-vq8qb8vd9q
    @user-vq8qb8vd9q3 жыл бұрын

    Есть ли еще какие нибудь линкеры?

  • @brechender

    @brechender

    2 жыл бұрын

    Есть ещё ld и другие из набора gcc, но их не советую - слишком много проблем с линковкой сторонних dll

  • @sulias4139
    @sulias41393 жыл бұрын

    Error! Wrong extension given for source file - must be RC or RES что делать

  • @Bytepp

    @Bytepp

    3 жыл бұрын

    Неправильное размещение у файла, ошибка либо в строке для компиляции, либо в названии файла

  • @user-gw2xg4eh2n
    @user-gw2xg4eh2n5 ай бұрын

    проблема.Все оки кроме гоулинка ,вообще вставать не хочет,я его прописываю в path но толку 0,не является внутренеей или внешней командой в чем проблема???

  • @user-nj3qy8tm9f
    @user-nj3qy8tm9f3 жыл бұрын

    Подскажите,как сделать так, чтобы консоль не закрывалась, когда запускаю .exe

  • @setwindowlongptr

    @setwindowlongptr

    3 жыл бұрын

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

  • @comachine

    @comachine

    2 жыл бұрын

    открывай её в консоли

  • @navi4046

    @navi4046

    2 жыл бұрын

    Для этого нужно вызвать из winapi функцию ожидания нажатия на кнопку

  • @brechender

    @brechender

    2 жыл бұрын

    Через system вызови pause.

  • @peremetchyk
    @peremetchyk3 жыл бұрын

    win32: fatal: more than one input file specified: helloworld.asm что значит?

  • @Bytepp

    @Bytepp

    3 жыл бұрын

    Не сталкивался с таким, но в гугле есть результаты по этой ошибке otvet.mail.ru/question/80408474

  • @MrMasterPMS
    @MrMasterPMS Жыл бұрын

    а что будет если в насм вставить код из фасм к примеру?

  • @unknown37284

    @unknown37284

    Жыл бұрын

    Комп рванёт и уничтожит планету

  • @inc0gnit095

    @inc0gnit095

    4 ай бұрын

    Просто скажет что-то типо: syntax error String 1 String 2 String 3 И так до последней строчки кода

  • @13hubassembly59
    @13hubassembly59 Жыл бұрын

    А почему ты используешь golink вместо ld?

  • @inc0gnit095

    @inc0gnit095

    4 ай бұрын

    Потому-что ld встаёт только на линуксах, там она по дефолту. А вот в винде, нужно скачивать компилятор gcc, потом распаковывать, потом в системные переменные, потом перезагрузку - это гемор, гоулинк намного лучше справляется на винде, а лд лучше на линуксе

  • @rend3626
    @rend36262 жыл бұрын

    Что-то я установить не могу нормально. Не находит мне этот насм в вс

  • @soranai1596
    @soranai15963 жыл бұрын

    Почему у меня obj файл - это 3D объект, а не объектный файл?

  • @Bytepp

    @Bytepp

    3 жыл бұрын

    Это расширение объектного файла

  • @user-tn3bw1wg8w
    @user-tn3bw1wg8w4 жыл бұрын

    А Я в своё время MASM32 изучал( не знал, как запилить NASM

  • @Bytepp

    @Bytepp

    4 жыл бұрын

    Они в чём то похожи, но и своих нюансов достаточно много)

  • @user-tn3bw1wg8w

    @user-tn3bw1wg8w

    4 жыл бұрын

    @@Bytepp видел... Интересная тема, ассемблер) так как, можно сказать на прямую с железом работаешь 👍 спасибо за ваше внимание и за ваш ответ, к моему комментарию. Кстати всех с праздником✊

  • @Bytepp

    @Bytepp

    4 жыл бұрын

    @@user-tn3bw1wg8w, с Днём Защитника Отечества!😎

  • @user-iv5co4lu9g
    @user-iv5co4lu9g Жыл бұрын

    Я вообще на петухоне прогаю, но решил посмотреть чем занимаются сантехники на низком уровне)))

  • @PianoElipse
    @PianoElipse3 жыл бұрын

    Жаль fasm не 64 битный

  • @miqovartanyan9057
    @miqovartanyan90574 жыл бұрын

    Не понял создать файл в nasm и перекинуть в sublime или что?(на 3:10) И еще я ничего пока что не знаю из команд push, call, ret, mov((

  • @Bytepp

    @Bytepp

    4 жыл бұрын

    Простой создай новый файл в саблайм (Ctrl + N) сохрани его как .asm и напиши пару команд в нем, чтобы проверить работает ли подсветка

  • @progerpython1056
    @progerpython1056 Жыл бұрын

    неееееее с моего питончика и С++ переходить на практически машинный код не охота

  • @hellamercy683
    @hellamercy6833 жыл бұрын

    ЧТО МНЕ ДЕЛАТЬ У МЕНЯ ЛИНУКС Я СОЙДУ С УМА

  • @mykolaovdiichuk5724
    @mykolaovdiichuk57244 жыл бұрын

    С 15.30 размитое видео

  • @kirixoto

    @kirixoto

    3 жыл бұрын

    printf("и в чём проблема?");

  • @mykolaovdiichuk5724

    @mykolaovdiichuk5724

    3 жыл бұрын

    @@kirixoto ето видать у меня телефон подвис. сори

  • @kirixoto

    @kirixoto

    3 жыл бұрын

    @@mykolaovdiichuk5724 if comment == "ето видать у меня телефон подвис. сори": print("ничего бывает :)")

  • @user-vq8qb8vd9q
    @user-vq8qb8vd9q3 жыл бұрын

    Сэнк вери мач

  • @konorgui3845
    @konorgui3845 Жыл бұрын

    автор хардкорщик прогаммирует с светлой темой

  • @matveyyatskin4312

    @matveyyatskin4312

    Жыл бұрын

    Ага. Глаза вытекать уже хотят

  • @user-lk1ik2vv2s
    @user-lk1ik2vv2s4 жыл бұрын

    А смысл писать на ассемблере если ты библиотеками пользуешься а не сам к железу обращаешся. На то С или С++ есть.

  • @brechender

    @brechender

    2 жыл бұрын

    Например на asm месенджбокс весит 2,5 кб, а на плюсах все 10. А с железом работать винда не позволит. Если например загрузить нужный асм код в мбр, то запустится легко. С кодом на плюсах такое не прокатит)

  • @happyroden8826
    @happyroden88263 жыл бұрын

    вирустотал показал наличие вирусов на обоих ехе-шниках

  • @user-mp7lq3cu9c
    @user-mp7lq3cu9c7 ай бұрын

    2 килобайта!

  • @aleksandrgaziev4470
    @aleksandrgaziev44704 жыл бұрын

    Бухой смотрел, ничего не понял)))

  • @Mikola_Naumenko

    @Mikola_Naumenko

    4 жыл бұрын

    Реальность, это иллюзия, вызванная длительным отсутствием алкоголя, в коре головного мозга

  • @user-vg6gu8hc6w
    @user-vg6gu8hc6w4 жыл бұрын

    Зачем??

  • @Bytepp

    @Bytepp

    4 жыл бұрын

    Посмотреть и понять как всё работает на низком уровне) + интересный скилл в копилку скиллов

  • @youandoneeye7253
    @youandoneeye72533 жыл бұрын

    скомпилировал запустил и ничего не увидел

  • @ivanvana

    @ivanvana

    3 жыл бұрын

    Ты в командной строке запускай

  • @youandoneeye7253
    @youandoneeye72533 жыл бұрын

    скомпилировал и запустил и мгновенно и ничего не увидал

  • @Bytepp

    @Bytepp

    3 жыл бұрын

    Видимо не правильно что-то сделал

  • @youandoneeye7253

    @youandoneeye7253

    3 жыл бұрын

    @@Bytepp уже все сделал

  • @zeroprin6440

    @zeroprin6440

    2 жыл бұрын

    @@youandoneeye7253 Как разобрался?

  • @gooseob

    @gooseob

    Жыл бұрын

    Ты просто файл открыл или что? Надо через консоль

  • @youandoneeye7253
    @youandoneeye72533 жыл бұрын

    заустил екзешник и ничего не увидел

  • @user-do6ch1vg2r
    @user-do6ch1vg2r11 ай бұрын

    Что значит "все буквы английские"? Английских букв ещё не придумали. Буквы эти латинские. И если бы автор не пытался их каверкать по английской традиции, переплёвывая в этом самих англосаксов, слушать было бы приятнее. Выберите, говорит, переменную Пэээ. Что ещё за пэээ? И выбирает Path. Path - это пэээ? Мдааа...

  • @dmeik7637

    @dmeik7637

    9 ай бұрын

    Кто-то решил докопаться.