Modern x64 Assembly 1: Beginning Assembly Programming

A new series on x64 Assembly language. In this vid, we’ll look at few general aspects of ASM, before diving in and coding a few simple examples.

I wanted to redo my early ASM vids for a while, and I hope this series is as fun as the original one was, plus I hope I’m able to explain a little better the second time round.

Visual Studio 2017 Community:

Support What’s a Creel? on Patreon:


Music Channel:


Christos Demetriou says:

it shows an error entry point is not defined, what do i do?

Deepanshu Thakur says:

Happy that you started this series again. I will follow along and hope you will answer the queries. 🙂

And I wish you will complete this tutorial series.

Donald Souillet says:

I believe MainCRT Startup is Common Runtime Startup that is defined in a header file, and called by the OS instead of Main( ), but the Main( ) function is defined within it. Including the Namespace inturn includes the predefined MainCRT( ) which allows a simple C, C++ file to compile without errors.
Don’t quote me on this as it is something I read 10 years back.
It may also be a MACRO define#

evouae says:

Ok Google ain’t bad.

Here is a MessageBox Example and it works without any other cpp files too !!! Entry point was still set to “main”

.model flat, stdcall
option casemap :none

extrn MessageBoxA@16 : PROC
extrn ExitProcess@4 : PROC

HelloWorld db “Hello There!”, 0



lea eax, HelloWorld
mov ebx, 0
push ebx
push eax
push eax
push ebx
call MessageBoxA@16
push ebx
call ExitProcess@4

end main


Mat R says:

Can U also recomend some good assembly books?

Adrian says:

I really love your videos, looking forward to this (revamped) series!

ffantasyvii says:

Hi, i’m new to Assembly programming, out of curiosity why MASM instead of NASM or GNU Assembler? I read that NASM OR GNU are better.

Melon Man says:

I’m so happy to see you making videos again!
It’s hard to find language tutorials that don’t think you’re new to programming,
I know what a variable is god dammit.
Anyway, I’m excited for more assembly!

vexe says:

Great to see you back! Can I make a request? If you ever get to the SIMD stuff, it would be awesome if you wrote a practical example maybe a vector library since that’s where most people try to use it for in games. When I tried using it, I found that additions/subtractions are easy, but dot products not so much, and a lot of times you want to access a certain component so you end up with lots of memory reads/writes which kind of nullifies the benefits. If you could talk about how to do that efficiently that’d be awesome!

Darius Duesentrieb says:

That series comes perfectly timed for.

Mehmet Özcan says:

You are amazing man. Please keep your video tutorial.
And can you make videos about windows API, pleeeeeeease?

Yuri Klopovsky says:

I think that the most fun way of integrating assembly into C++ is doing so called “Just In Time” assembly with a library like Xbyak. The best part is that it allows us to optimize using run-time data.

Neil Roy says:

You simply cannot do more with anything else. ALL other languages compile their code into machine code instructions, and that is precisely what Assembly works with directly.

I used to use it back in my DOS programming days with C. I used it to access the graphics screen, draw them etc. Usually by writing C functions and putting inline assembly into them. I miss those days to be honest. Inline is fun, but I really want to dive into pure assembly. I guess I just like the challenge. I used to code in pure assembly in my C64 days, 6502 assembly was so easy and fun to work with! 😉

And I finally googled “Creel”: “Creel (basket), a type of basket used in fly fishing.” 😉 I can die now, I know what it is.

Enrico Polanski says:

Thank you for this video.

MCAIO89 says:

Thank you very much! Really excited about this series

zhalktis says:

It’s great to see you doing ASM tutorials again!
Your earlier ones have helped me a lot, and they were lots of fun. I hope you’ll still keep the old ones around after you’re done with this new series.

Piotr Lenarczyk says:

Great job! Number of shows on youtube only proves that generally: “knowledge is not well-endowed”. Compare number of shows of any professional tutorial like f.e. “Udacity Intro to parallel programming” to some youngs playing online mentally destructive stuff. Thank you for videos.

oscar amaro says:

Hi, I have a question, do you have to run this in a native 64 bit machine or you can do it in a 32 bit pc?


Good tutorial bro…keep going. And please give more explanations over registers and their usage(rax, rbx, etc.). And for god sake! your keyboard and you bashing on it is a little bit too loud 😉

herr ste says:

Chris as always absolute gold mate, YESSSSS! keep em coming, enough said love your stuff.

Maximiliano Diaz says:

Congratulations on your new tutorial series!!!

I love this language but sadly I’ve drifted from programming in general, pursuing other interests. However, it’s incredibly enjoyable and inspiring to hear someone talk about something that they love and know so much about with such passion.

I’ve been watching your videos for a long time and I’ve always admired your enthusiasm.

Anyway, best of luck and thanks for the videos!!!

Patrick Roden says:

The output I get is: ‘ the result is: 00007FF768E91433 Anyone know what I’m doing wrong?

Queston Richer says:

If you added the needed versions of visual studio ide, windows versions ect right at the start of the videos(instead of part way in) it would be great so people can download it while you talk. leaving us prepared for your video presentation!
thank you for these videos!

Zak Frisch says:

Hi! Easily the best tutorial to get into this. I cannot tell you how much garbage I had to sift through to find this. One thing: I can’t get visual studio to stop closing the damn output window outside of setting a break point or system(“PAUSE”) – how did you get your window to stay open in the tutorial?

Zingam says:

Watched most of the original videos back in the day. I’ll watch the new too.

I have a couple of advices. Keep the unnecessary talk out – takes too much time. Stick to the essence. Keep the charatars big – no need to see all these windows/OpenOffice toolbars – unnecessary information on the screen makes concentration more difficult.

A good format for teaching videos are the videos by Kenny Kerr on Pluralsight.

bla says:

Muchas Gracias!!! Explicas muy bien

WTF! says:

You talk so much…

dropcmd says:

😀 Please continue this series!

Jesus Christ says:

excited, wet, nervous, adventurous, sensitive, those are my feelings for this serious creel. i hope you can show us some impressive asm coding, maybe your self-modifying stuff during the course of this tutorial? well dont hold back baby, this is your tutorial 😉

evouae says:

Even though i’m a real beginner, I really love your videos. It’s very informative and I thank you for posting these videos on YouTube.

As M suggested i set the Entry Point as main and i didn’t need a CPP file. Hope to see more asm videos soon.

Can we call windows functions like MessageBox directly from the assembly program ?

DorinKun says:

Great videos!
What IDE would you recommend for Linux?

igrewold says:

Cool man, and thanks a lot.
Here is an OS that was made with Assembly language. ,It is x86 though(32bit)
If you wanna try it out, then download it and extract(unzip) it : (might need 7z app for extraction)
Install Virtual Box or VMware Player or Qemu, then run that file with it.
This OS is great, it got games, apps, tools….etc. Even it got Assembly tools(IDE….etc.)

vijay kumar says:

Good explained

azertyuiop7893 says:

Hey, is it a good idea to follow this tutorial and follow Paul Carter’s assembly book at the same time ?

Juan Francisco Rascón Crespo says:

Great Spanish at the end! “Adios”. Cool! hahahaha

zinturis says:

Cool video. Where do you get a list of operators available for your CPU?

Tun Oo says:

It’s great and thanks.

TheExplosionist says:

As an assembly coder shouldn’t you have a full neck beard?

Stav7 says:

did u just start 3 new series within a week?

 Write a comment


Do you like our videos?
Do you want to see more like that?

Please click below to support us on Facebook!