Assembly Language in 100 Seconds

1,587,112
0
Published 2022-04-14
Assembly is the lowest level human-readable programming language. Today, it is used for precise control over the CPU and memory on the bare metal hardware of a computer. Learn the basics Assembly with NASM in 100 Seconds.

#compsci #programming #100SecondsOfCode

đź”— Resources

NASM Assembler www.nasm.us/
x86 Assembly Guide www.cs.virginia.edu/~evans/cs216/guides/x86.html
How a CPU Works    • How a CPU Works in 100 Seconds // App...  
WASM in 100 Seconds    • Web Assembly (WASM) in 100 Seconds  

đź“š Chapters

🔥 Get More Content - Upgrade to PRO

Upgrade to Fireship PRO at fireship.io/pro
Use code lORhwXd2 for 25% off your first payment.

🎨 My Editor Settings

- Atom One Dark
- vscode-icons
- Fira Code Font

đź”– Topics Covered

- What is Assembly Language?
- What are registers on a CPU?
- Assembly language basics tutorial
- How to say hello world in assembly
- Who invented assembly language?
- Assembly vs Machine Code
- x86 vs ARM archite

All Comments (21)
  • a wise person once said: "if you know assembly, every software is open source"
  • @Windowsfan100
    It's wild to think Chris Sawyer managed to write the entirety of RollerCoaster Tycoon 1 and 2 all by himself in this language.
  • @augustday9483
    I had a couple assembly programming classes during my CS course in university. It's definitely a much different way of writing programs compared to higher level languages. To me, it felt like a puzzle game, where management of "position" within memory was a huge part of it. Function calls are also interesting, since essentially it's just a block of code in memory with a pointer you can jump to, then jump back to your previous position once finished. Even a program to just do simple math was quite involved. No such thing as strings either, just char arrays. Funny enough, taking that class on assembly finally helped me "get" C. All the stuff about pointers and memory management/allocation didn't click until writing assembly, then I understood what it was for. Looking at C as an abstraction over assembly really helped me become a better programmer.
  • @beProsto
    "My favourite part about WebAssembly is that neither has it anything to do with assembly, neither has it necessarily to do with the web."
  • @ericsigne6575
    Am I the only one who thinks Jeff has the gift of making even the most complicated concepts look simple?
  • @yuto2497
    Always wanted to learn Assembly, but never have I understood it's complexity. You simply explained the most basic part of the Assembly language in 100 seconds clearly. Thanks! I might use this for future references!
  • @john.dough.
    0:46 WebAssembly should not be confused with normal Assembly dialects like x86. It is much more of a compilation target than a language you would actually want to write in for performance reasons.
  • @cormanec210
    I literally just started learning Assembly for fun, and I came to YouTube to take a break... and lo and behold... Fireship has a video on it!
  • @raz0229
    Assembly only looks complicated to the beginners but it's really not. MASM even provides high level directives like IF, ELSE, WHILE and standard macros for I/O that makes it really straight forward to focus on the performance of your algorithm.
  • @vizthex
    i can't believe the rollercoaster tycoon dev was insane enough to use this.
  • @_hndk
    While I was studying digital electronics, I used to count binary digits with my hands. People gave me weird looks, but hey, you can easily count up to 32 with one hand.
  • Congrats on hitting basically all of the languages 🥳 What's next, compilers/linkers/JIT in 100s? Pub/sub in 100s?
  • @lennonmclean
    A quick correction: the bss section is for variables whose size is known but data is not. We reserve space for variables in the bss section with resb (reserve byte). The data section is for variables whose initial value is known, and the rodata (read only data) section is for constants
  • @sandy_malla
    WE did assembly language one semester in my University CS days in a 8085 or 8086 Microprocessor kit. We needed to check the chart referring to codes which had instructions. It was fun doing until you miss one step and repeat all over again.
  • @crowlsyong
    Man. Your videos are so clean. So precise. No junk. No dumb intro that lasts 10 seconds. You title it perfectly as well. Thank you for adding junk-free material to the internet.
  • @Snail5008
    also, .data is not for constants that do not change, it's basically an initialised version of the .bss section that takes up space in the executable. you can actually change it. for actual constants that do not change, use .rodata. Interesting video though :)
  • A small but important caveat: in most use cases, assembly still sits above the OS / kernel. So you won't work with actual physical memory ("bare metal") but with virtual memory; an abstraction provided by the OS. An exception might be when you are programming in kernel space.
  • @r1konTheAutomator
    I started my software journey in middle school reverse engineering, so I studied x86 assembly, PE architecture, stack smashing, etc. It was SO interesting to me, I would print out Iczelion tutorials and bring them to class to study. It brings back so many happy memories ❤
  • @gbeziuk
    Dude you're so unbelievably awesome at making these short videos!
  • @starklosch
    Nice video. A little correction: The .data section can be modified. The .rodata has the same purpose and can't be modified.