I have been programming in assembly language in the 1980s, first 6502 and 6800/63xx, then X86. It has been much more interesting than modern web dev today. Please keep on going.
You completely had me when, just as my hand was reaching for the keyboard to pause the video so that I could inspect the page, you said: "You can pause and inspect this page a bit if you want..." I learned assembly language programming at the very beginning of my career in 1974, on an IBM System 360, which had a 32 bit word size. After that I worked in the nascent video game industry for a while, coding video games in 6502 and Z80 assembly. TH-cam recommended this video in my feed today, and I'm so glad that my curiosity was piqued ! This is the most impressive introduction to assembly language I've ever encountered. 👍👍 🐬🚫, ✅
I was entranced, watching and listening more intently than what is normal for me. The Zero Register part caught me off guard in such a way that I just had to leave this comment. It honestly made my day. Thank you.
I really like your videos. They are easy to get sucked into and provide a passion for learning that is quite enticing. I've been programming in C++ for a while now and you have definitely given me the impetus to try my hand at assembly!
Thanks for this awesome video on assembler Kay. For whatever reason, I felt like learning assembler was god level stuff that was beyond me. You have blown away the veil of complexity for me and provided me with a great stepping-stone to learn more. Thanks again👍
I don't know if TH-cam's Algorithm is getting better, or if its just luck. But coming across this channel at its current sub count was great luck! The most popular videos around programming seem to be tutorials, LLMs, and tech news. This is the kind of stuff that got me into programming, as opposed to just making games many years ago.
@kellymoses8566 . They've been Micronizing it. That is ours far far worse on the macro level. Purposefully. I mean it's been obvious the past 3 years. The fact were not allowed a 'wild card' mode.. like when you'd airways end up in 'weird' parts of TH-cam. But now you're stuck with being suggested the same 12 videos over and over. Meanwhile the moment you select 1 or 2 things your screwed into Only being suggested that channel/type THE WHOLE DAY. AND YOU CAN'T TREAT IT. It's so famed treasuries and claustrophobic . You is designed to keep you in a small a circle as possible possible That way yes is getting better while keeping you ducted in the suction they want. Like try Having 6 Hobbies and expecting TH-cam to actually suggest varied things. In not explain this well but isdriving me nuts. you have to have seperate damn accounts just for each hobby hobby others you'll never get it to suggest DIY vids of you harken to click mn something political. Then ur fed allday
@@kellymoses8566holy shit TH-cam is getting worse at letting me pay comments. I swear they are deliberately depreciating the functionality of the text boxes. 3 different phones and they all suffer a strange slow down and interrupt when I try to type too much into these damn boxes. It seems to be triggered more often when I complain about TH-cam or politics. Yet I can write a 200 word essay on random start trek crap with no slow down until I started comparing ideas in an episode with recent events and global nwo crap.. Pretty sure they're usage of AI isn't limited to checking comments only AFTER they've been posted. It wouldn't be terribly hard to trigger some type of memory duplication based on keywords etc.. ni mean that was like 15yrs ago
I agree. This is great. Most things about assembly language are based on far more complicated CPUs that were designed to facilitate large scale multi-user, multi-tasking, context-switching stuff. I have a hard time having the attention span to follow any of it when it's being described in that gigantically complex context. CPU instructions were my focus back when I first started working with microprocessors (1975.). My 8080 instruction set "cheat sheet" card was all I had to go by to enter programs into my Altair kit via the front panel switches. That experience molded my approach to programming. I was a US Navy crypto electronics technician at the time and had a decent grasp of digital circuitry. The CPU/machine code piece of the puzzle was what opened my mind to the wonders of computers.
I have no idea what is this person talking about or why was this recommended to me, but, I really appreciate how kind this person seems and their uniqueness, all of this together is just amazing, whatever "all of this" is in the end.
if you enjoy the stylistic choices and imbuement of personality that Ketman brings-I recommend an introduction to programming that still resonates within my soul, which would be: "why's poignant guide to ruby" by why the lucky stiff
Hello, Kay! I too purchased Ketman, probably sometime in the late 1990s or early 2000s. Of course one could also just use the less capable free version. In the years since then I have wondered about the man who created this tool. I never was able to communicate with him, although I did discover that in addition to assembly language he was also passionately against corporal punishment. Anyway, yes, what a supreme learning tool. Thank you for bringing Ketman back to life after so many years.
Just in case there's anyone who doesn't get the right idea about Ketman, you should understand that it's not an assembler. It's an interpreter which allows you to enter a sequence of basic assembly language instructions and simulate running them one at a time, visualizing how they would store values in registers, push values onto the stack and pop them back off, etc.
So cool. I actually did once have contact with Pat around 2012 when I attempted to buy a full copy. He wasn't selling it anymore and email clients were a bit iffy around sending EXE files back and forth, so instead he sent me a little sequence of instructions that would essentially crack his own software by editing a piece of the executable using Ketman itself. So cool :)
Thanks this helped, I was confused by the three part explanation in the begining and didn't understand how it's all not assembly if we're working in assembly.@@gregoryshields4258
@@neoeno4242so it's okay to download a full version online? I feel tipsy and bad when I pirate things I'm genuinely going to learn from. I'm just starting with the assembly, got super interested and it's my first language, so it's kinda complicated but I'm trying, have so many questions in my head hahaha. Great video!
I mean I imagine the humble assembly programmer as a farmer, his work is concrete and down to earth. In contrast to the city folk programming in high level languages, very up in the air, abstract work. IDK
Having first learned to program an HP-41CX, it was an easy transition to assembly language coding when I finally started university studies in computer science. And both helped me tremendously during language-unspecific coding tests (usually veiled as non-programming tasks) during job interviews.
That's so brilliant, insightful and delightful. I had come to timidly try to learn something about Assembly, like a lost explorer begging with hat in hand, I received 100 times more. For free. Thank you Kay.
Yeah although I was also wondering if it has a function nonetheless. Like is it just fixed at 0, or can you actually try saving some value in it - and the program only continues if the said value was 0 and errors otherwise or something
@@whataboutthis10 hehe I mean you could get a number other than 0 in there by error sometimes, because of things like manufacturing errors (which should be picked up through assembly line testing) or a solar flare, quantum physics type stuff which is way beyond my mind. Look up Row Hammer if you're interested in real world stuff related to that. But yeah it's for storing zero. I do think though technically possible in terms of how chips are manufactured it'd be an error that would stop proper operation and probably cause things to crash.
I had a chance to learn asambly on UNi. It was a course using x86 asm. The course was critizie because who need asm in the 2000's when there is C / C++ / pascale and othe programming langage. But i am happy that they stuck to it. Asmambly help you understand how computer works and give you full power and freedom. I didn't use it much since these years but your video made me so happy. More of that please.
This tool is really fascinating! I've decided to follow along with 0DE5 and I think I may run this on my old 386 laptop, for the fun of it. It'll add to the charm, I think, to run it on a machine that runs DOS out of the box.
It's been a very long time since I dabbled with ASM (6502), but I still use the phrase 'pop the stack', often in highly digressed meetings or conversations. Good job.
I learned this in 1978 when they were still giving courses like this. But I threw away my old books 40 years ago. Now I have something to show my kids.
Fantastic. Last time I got into coding this deep was on an Acorn Electron. I have no intention of returning (I'm software engineering for a living and have no desire to do anything deeply techie with my spare time) but loved the refresher. Have a sub and more power to you.
Great video! Old hat for me, but I do feel that every software engineer should have a basic understanding of this stuff. It'll give you a much better understanding of why things work they way they do.
Love this video - I've recently been getting back into assembly due to my interest in the Playstation 3 and it's PowerPC based CPU (the CELL Broadband Engine). The architecture is heterogeneous using one master "PPU" core (a PPC970) along with 8 "SPE" accelerator cores, which are designed for SIMD (single instruction, multiple data) vector/matrix mathematics. The PPU and SPUs use different instruction sets & compilers, which does complicate development just a bit. Also, the architecture only has very basic branch prediction (and no out-of-order execution), which necessitates some micro-management of the cache by the programmer in the form of "hinting" instructions. Most CELL programming is done in C but all of the SIMD functions one uses for optimal performance are actually these things called "intrinsics" which are C functions which correspond 1:1 with individual assembly instructions and can (generally) be easily identified in disassembled code using a debugger. Anyway, learning about how the CELL works at the lowest levels has brought me much joy these past few years and your video about assembly inspired me to share my own passion for the subject with your community. I'm following your channel now so do keep up the great work! 🙂 By the way, if you have the time I would very much value your feedback on my own "creative" efforts in this space. I do have a TH-cam channel (dedicated to the PS3/CELL platform) as well as a website - www.ps3linux.net - the main purpose of which is to share and preserve what resources I've been able to accumulate related to Linux on the Playstation 3 and Cell Broadband Engine development. Thanx!
Oh super interesting! I've always wondered why PS3 games never get ported forward and I guess maybe that interesting architecture is part of why. Those intrinsics sound fun to play with. You're now on my watchlist :)
When I was 12 or so I was trying to write games on my 6502 Atari, I couldn't afford an assembler (It took years of saving to get the used atari) so I would write out a list of opp codes hex and decimal equivalents, a table for the stack registers interrupt settings etc. and I would "compile" my code at first just adding short bits of assembly code in my BASIC programs usually in the TV vertical blank interrupt period. I wish I had found this way back then. Thank you for showing it to me.
I learned 8080 and 6502 machine and assembly language in a general electronics class in the mid Eighties, as part of my first degree, in physics. It was a really good lesson in how computers work, with very little abstraction.
I've always loved the idea of writing assembler. I play games that have toy versions of assembler. But reading some more realistic assembler and thinking about the different architectures, I'm now more grateful of C than ever!
@@nathanngqwebo2108 I have bought and played TIS-100, Shenzhen I/O, Exapunks, Last Call BBS, Human Resource Machine, 7 Billion Humans. The developers of Turing Complete and ABI-DOS have contacted me to test their games. It's very different from assembler but a ton of fun. I've not actually played Turing Complete a lot so I've got to reinstall it and play it more for sure.
@@nathanngqwebo2108 Checkout Shenzhen I/O and TIS-100. Both are made by Zachtronics and are basically like OP said, toy versions of assembler. It was my introduction to assembly back in 2016.
This was an elegant and instructive video, thank you very much. I remember writing a TSR utility probably three decades ago to work in MS-DOS and this brought some of that back. Unfortunately, I VERY much doubt a modern software developer has any clue (or even a desire to learn) something as fundamental as this. Loved the description of the Zero Register :-) And who writes anti-tiger escape routines in assembly language these days anyway! BTW - very soothing voice and tone. Far too much shouting on a lot of tutorials. Reminds me of Ben Eater's relaxed style.
I maitained a flight simulator, built in the 70's, where the software was written in mnemonic code. Coding was very efficient and fast on the 1MHz the 12bit machine. The simulator was upgraded around 2009 where a PC emulated the hardware, the software remained the same. It would be interesting to see how well compilers convert high level languages into assembler, for instance, does if/else statements produce the same code as the switch statement. There is a lot of enthusiasm for 'clever' high level languages but does it make the compiled code more or less efficient! Great stuff and very well presented, thanks 😊
I love this video and its follow up! I'm not your target audience, but found it very enjoyable anyway, and already shared it with a few people who program but dont know assembly. One note is that the videos cover basic concepts very well but also at a very fast pace. I think your on screen graphics are great for people to pause and ponder to fully grasp what is going on. But I also think it might capture more of your intended audience if it took a slower pace in places. Please keep doing what you're doing. this is amazing!
I remember downloading a program on IRC chat on my Pentium 75 mhz which was coded in assemply and it showed a giant earth in SVGA graphics bouncing around the screen and it was that moment that I realized assembly is actually magic.
as somewhat of a dolphin who watched the whole video rewinding here and there, I wonder if you've played a game called "human resource machine" which visually teaches a very assembly like way of solving puzzles! it's quite joyful how they've managed to teach a lot of the basic concepts without making things too heavy!
This video was witty, funny, touching, and educational. I don't think I understood assembly (mea culpa), but I thoroughly enjoyed this video. I know more now than I did before.
I generally watch on a Roku/TV - I think the vids are more appreciated on a computer/laptop. Wonderful job with the little "hand pointers", as a somewhat mature person a bigger font and less on the screen, and/or a weather person like pointer or 'red dot', to bring your eyes to the right place, or a yellow 'hallow' circle.
13:24 oh i'm only here in physical form ma'am, my mind is still WAY back there. (j/k i've seen a good bit of assembly instructions before.) i'm just going to have to find a copy of this magical program to play it over and over again to really get it burnt in my head.
I didn't even know I wanted to learn assembly, but now I'm kinda curious. Did some way back when, but yeah, this looks as close to magic as programming does cD
The dolphin passage comes from a book called "Assembly Language Step-byStep" by Jeff Duntemann. Now I strongly suspect that it was he who also wrote Ketman.
According to the instruction set docs Google found for me, the parameter of the svc function does indeed not do anything. The reason it's there is that the svc handler can retrieve it and use it as a function selector -- which Apple platforms apparently don't do. It's a bit reminiscent of the way software interrupts work on the 68k, where all opcodes starting with A caused an interrupt to the A-line interrupt handler, and the interrupt handler would then look at the lower 12 bits of the opcode to decide which system call was being requested. BTW I can't help but suspect that "goto considered harmful" inspired the decision to omit goto from the Java programming language. I personally disagree with that decision, I think goto has legitimate uses even within structured programming. Lucky for me I mostly program in C and C++. Nice tutorial! I'm not new to assembly language programming but my experience is mostly 6502 and 68k. It's neat to get a little taste of x86 and ARM at last.
I mastered IBM 360 assembler language enough to make a FORTH interpreter for it. (Don't ask me why that was a good idea. I don't know). But for some reason, 8086 assembly broke my brain.
In MS DOS we can use a lot of functions of DOS, the mainboard bios and the graphic bios. For calling these function we can use software interrupts with an interrupt number and with some prepared register. And there is a table of interrupt numbers online based on Ralph Browns interrupt list html version with the description how to use these interrupts.
A program for MS DOS can act with the outside world with system calls and additional can access all hardware components directly without to get a message of a protection violation, because MS DOS is not running in the protected mode of the CPU like other OS do. This is a significant difference. Example we can use a DOS function for output a string and we can write the bytes of the string directly into the screen memory without using a DOS or BIOS function.
Thank you for these amazing videos. I've never formally studied comp sci so I always feel like I'm missing the fundamentals. Also I assume you've come across Forth? If not you might love it.
You know I very nearly made a Forth-like stack language in assembly for the "Fast and Beautiful Assembly" video I posted the other day! Didn't quite make the cut though but you're right - love some Forth :) Will touch on properly in the next video which is focused on the stack.
Cool example but that loop is a recipe for disaster. You have a couple of push instructions. If that loop runs enough times you’re gonna blow up the stack and the machine will lock up with a stack overflow. Every push to the stack must have an equal number of pop instructions that will restore the stack to the original starting address. If one needs a value that is buried inside the stack you use BP and calculate where it is to get the value. Otherwise, I always approve x86 16bit assembly videos!
I have been programming in assembly language in the 1980s, first 6502 and 6800/63xx, then X86. It has been much more interesting than modern web dev today. Please keep on going.
Good ole 6502. I have fond memories of programming it...
do not stop uploading pls. love your work and need this kind of energy to get rid of data science/AI vibe. much love
I just cant get enough
Seconded. I work as a data developer. It pays the bills and I work with nice people but I wouldn't call SQL or PySpark mentally stimulating.
I came in not knowing anything about Assembly. Now, I know I'm not a dolphin. Instant subscribe!
You completely had me when, just as my hand was reaching for the keyboard to pause the video so that I could inspect the page, you said: "You can pause and inspect this page a bit if you want..."
I learned assembly language programming at the very beginning of my career in 1974, on an IBM System 360, which had a 32 bit word size. After that I worked in the nascent video game industry for a while, coding video games in 6502 and Z80 assembly.
TH-cam recommended this video in my feed today, and I'm so glad that my curiosity was piqued !
This is the most impressive introduction to assembly language I've ever encountered. 👍👍
🐬🚫, ✅
Thanks! :) Appreciate it. I imagine 32 bit words were a luxury in that era!
I was entranced, watching and listening more intently than what is normal for me. The Zero Register part caught me off guard in such a way that I just had to leave this comment. It honestly made my day. Thank you.
MOAR! WE NEED MOOOOOAR OF THIS!
More
@@c42xeMoar = “Absolutely” More, it is code. 😊
I really like your videos. They are easy to get sucked into and provide a passion for learning that is quite enticing. I've been programming in C++ for a while now and you have definitely given me the impetus to try my hand at assembly!
Thanks for this awesome video on assembler Kay. For whatever reason, I felt like learning assembler was god level stuff that was beyond me.
You have blown away the veil of complexity for me and provided me with a great stepping-stone to learn more.
Thanks again👍
So glad to hear it :)
I don't know if TH-cam's Algorithm is getting better, or if its just luck.
But coming across this channel at its current sub count was great luck!
The most popular videos around programming seem to be tutorials, LLMs, and tech news.
This is the kind of stuff that got me into programming, as opposed to just making games many years ago.
The algo seems to be getting better. I think they might be indexing video transcripts and using those to recommend videos.
I agree, such a pleasure to find this channel
@kellymoses8566 . They've been Micronizing it. That is ours far far worse on the macro level. Purposefully.
I mean it's been obvious the past 3 years. The fact were not allowed a 'wild card' mode.. like when you'd airways end up in 'weird' parts of TH-cam.
But now you're stuck with being suggested the same 12 videos over and over.
Meanwhile the moment you select 1 or 2 things your screwed into Only being suggested that channel/type THE WHOLE DAY. AND YOU CAN'T TREAT IT.
It's so famed treasuries and claustrophobic . You is designed to keep you in a small a circle as possible
possible
That way yes is getting better while keeping you ducted in the suction they want. Like try
Having 6 Hobbies and expecting TH-cam to actually suggest varied things. In not
explain this well but isdriving me nuts. you have to have seperate damn accounts just for each hobby hobby others you'll never get it to suggest DIY vids of you harken to click mn something political. Then ur fed allday
@@kellymoses8566holy shit TH-cam is getting worse at letting me pay comments. I swear they are deliberately depreciating the functionality of the text boxes. 3 different phones and they all suffer a strange slow down and interrupt when I try to type too much into these damn boxes.
It seems to be triggered more often when I complain about TH-cam or politics.
Yet I can write a 200 word essay on random start trek crap with no slow down until I started comparing ideas in an episode with recent events and global nwo crap..
Pretty sure they're usage of AI isn't limited to checking comments only AFTER they've been posted.
It wouldn't be terribly hard to trigger some type of memory duplication based on keywords etc.. ni mean that was like 15yrs ago
Im saving this channel. I cant learn python and assembly at the same time. But I will return
You got this!
Python is a hype bandwagon. In my opinion....
@@GeminoSmothers why do you think that?
I’m saving this channel, I can’t learn Python so assembly looks like Greek
@@GeminoSmothers Python is usually used as an interface to use other more powerful tools, it's not strong on its own and was not meant to be.
This is amazing! By far the best explanation of assembly I have encountered. Million thank yous!
I agree. This is great. Most things about assembly language are based on far more complicated CPUs that were designed to facilitate large scale multi-user, multi-tasking, context-switching stuff. I have a hard time having the attention span to follow any of it when it's being described in that gigantically complex context.
CPU instructions were my focus back when I first started working with microprocessors (1975.). My 8080 instruction set "cheat sheet" card was all I had to go by to enter programs into my Altair kit via the front panel switches. That experience molded my approach to programming. I was a US Navy crypto electronics technician at the time and had a decent grasp of digital circuitry. The CPU/machine code piece of the puzzle was what opened my mind to the wonders of computers.
I have no idea what is this person talking about or why was this recommended to me, but, I really appreciate how kind this person seems and their uniqueness, all of this together is just amazing, whatever "all of this" is in the end.
if you enjoy the stylistic choices and imbuement of personality that Ketman brings-I recommend an introduction to programming that still resonates within my soul, which would be: "why's poignant guide to ruby" by why the lucky stiff
Hello, Kay! I too purchased Ketman, probably sometime in the late 1990s or early 2000s. Of course one could also just use the less capable free version. In the years since then I have wondered about the man who created this tool. I never was able to communicate with him, although I did discover that in addition to assembly language he was also passionately against corporal punishment. Anyway, yes, what a supreme learning tool. Thank you for bringing Ketman back to life after so many years.
Just in case there's anyone who doesn't get the right idea about Ketman, you should understand that it's not an assembler. It's an interpreter which allows you to enter a sequence of basic assembly language instructions and simulate running them one at a time, visualizing how they would store values in registers, push values onto the stack and pop them back off, etc.
So cool. I actually did once have contact with Pat around 2012 when I attempted to buy a full copy. He wasn't selling it anymore and email clients were a bit iffy around sending EXE files back and forth, so instead he sent me a little sequence of instructions that would essentially crack his own software by editing a piece of the executable using Ketman itself. So cool :)
Thanks this helped, I was confused by the three part explanation in the begining and didn't understand how it's all not assembly if we're working in assembly.@@gregoryshields4258
@@neoeno4242so it's okay to download a full version online? I feel tipsy and bad when I pirate things I'm genuinely going to learn from. I'm just starting with the assembly, got super interested and it's my first language, so it's kinda complicated but I'm trying, have so many questions in my head hahaha. Great video!
🎉🎉😂🎉😂🎉😂🎉🎉😂😂😂😂😂🎉🎉😂😂😂
One of the best channels on youtube, you're so great explaining things. Love from italy
"it ain’t much, but it’s honest work" vibes. Love it.
I mean I imagine the humble assembly programmer as a farmer, his work is concrete and down to earth. In contrast to the city folk programming in high level languages, very up in the air, abstract work. IDK
Having first learned to program an HP-41CX, it was an easy transition to assembly language coding when I finally started university studies in computer science. And both helped me tremendously during language-unspecific coding tests (usually veiled as non-programming tasks) during job interviews.
That's so brilliant, insightful and delightful. I had come to timidly try to learn something about Assembly, like a lost explorer begging with hat in hand, I received 100 times more. For free. Thank you Kay.
I only heard your first few words…. Subscribed!!! I am a longtime masm fan…
Great way of teaching how to code, rarely I find a channel such as yours.
"The XZR register can store any number of any precision, to any size so long as it's zero" made me lol. I feel like I might be the only person ;-D
that also got me!
Yeah although I was also wondering if it has a function nonetheless.
Like is it just fixed at 0, or can you actually try saving some value in it - and the program only continues if the said value was 0 and errors otherwise or something
@@whataboutthis10 hehe I mean you could get a number other than 0 in there by error sometimes, because of things like manufacturing errors (which should be picked up through assembly line testing) or a solar flare, quantum physics type stuff which is way beyond my mind. Look up Row Hammer if you're interested in real world stuff related to that.
But yeah it's for storing zero. I do think though technically possible in terms of how chips are manufactured it'd be an error that would stop proper operation and probably cause things to crash.
Actually love the asmC and Cpython interactions, those seems like a very powerful and performing tandems when needed.
I had a chance to learn asambly on UNi. It was a course using x86 asm.
The course was critizie because who need asm in the 2000's when there is C / C++ / pascale and othe programming langage.
But i am happy that they stuck to it.
Asmambly help you understand how computer works and give you full power and freedom.
I didn't use it much since these years but your video made me so happy.
More of that please.
This tool is really fascinating! I've decided to follow along with 0DE5 and I think I may run this on my old 386 laptop, for the fun of it. It'll add to the charm, I think, to run it on a machine that runs DOS out of the box.
It's been a very long time since I dabbled with ASM (6502), but I still use the phrase 'pop the stack', often in highly digressed meetings or conversations. Good job.
This just seems like a very kind channel
I learned this in 1978 when they were still giving courses like this. But I threw away my old books 40 years ago. Now I have something to show my kids.
Reminds me of reading +ORC cracking tutorials and iczelion's asm tutorials back in the day. Thanks for the nostalgia 😊
that takes me back. Fravia et al
Fantastic. Last time I got into coding this deep was on an Acorn Electron. I have no intention of returning (I'm software engineering for a living and have no desire to do anything deeply techie with my spare time) but loved the refresher. Have a sub and more power to you.
I would like enough life to realistically add this to the list of things I would love to learn
Now i learned some ARM assembly. Good work.
Great video! Old hat for me, but I do feel that every software engineer should have a basic understanding of this stuff. It'll give you a much better understanding of why things work they way they do.
Mind blown!
Love this video - I've recently been getting back into assembly due to my interest in the Playstation 3 and it's PowerPC based CPU (the CELL Broadband Engine). The architecture is heterogeneous using one master "PPU" core (a PPC970) along with 8 "SPE" accelerator cores, which are designed for SIMD (single instruction, multiple data) vector/matrix mathematics. The PPU and SPUs use different instruction sets & compilers, which does complicate development just a bit. Also, the architecture only has very basic branch prediction (and no out-of-order execution), which necessitates some micro-management of the cache by the programmer in the form of "hinting" instructions. Most CELL programming is done in C but all of the SIMD functions one uses for optimal performance are actually these things called "intrinsics" which are C functions which correspond 1:1 with individual assembly instructions and can (generally) be easily identified in disassembled code using a debugger. Anyway, learning about how the CELL works at the lowest levels has brought me much joy these past few years and your video about assembly inspired me to share my own passion for the subject with your community. I'm following your channel now so do keep up the great work! 🙂
By the way, if you have the time I would very much value your feedback on my own "creative" efforts in this space. I do have a TH-cam channel (dedicated to the PS3/CELL platform) as well as a website - www.ps3linux.net - the main purpose of which is to share and preserve what resources I've been able to accumulate related to Linux on the Playstation 3 and Cell Broadband Engine development. Thanx!
Oh super interesting! I've always wondered why PS3 games never get ported forward and I guess maybe that interesting architecture is part of why. Those intrinsics sound fun to play with. You're now on my watchlist :)
I need so much more of this "Just Enough of ____" series
When I was 12 or so I was trying to write games on my 6502 Atari, I couldn't afford an assembler (It took years of saving to get the used atari) so I would write out a list of opp codes hex and decimal equivalents, a table for the stack registers interrupt settings etc. and I would "compile" my code at first just adding short bits of assembly code in my BASIC programs usually in the TV vertical blank interrupt period. I wish I had found this way back then. Thank you for showing it to me.
I learned 8080 and 6502 machine and assembly language in a general electronics class in the mid Eighties, as part of my first degree, in physics. It was a really good lesson in how computers work, with very little abstraction.
I LOVE your channel, and am extremely happy to have stumbled upon it.
This is so good. I'm leaving a comment to hopefully boost the engagement for the YT algorithm lol
I wish I knew of side app. That makes sense. Amazing! More please!
You got great presentation and teaching skills.
Thank you for creating this awesome content!
great delivery on the zero register joke, saw it coming and still lol'd. Great content, thank you, keep it up!
This is amazingly cool! I wish I'd stumbled across this tool back when I was first trying to learn x86 assembly.
I've always loved the idea of writing assembler. I play games that have toy versions of assembler. But reading some more realistic assembler and thinking about the different architectures, I'm now more grateful of C than ever!
Gers, have you played Turing Complete? What other similar games do you know of?
@@nathanngqwebo2108 I have bought and played TIS-100, Shenzhen I/O, Exapunks, Last Call BBS, Human Resource Machine, 7 Billion Humans. The developers of Turing Complete and ABI-DOS have contacted me to test their games. It's very different from assembler but a ton of fun. I've not actually played Turing Complete a lot so I've got to reinstall it and play it more for sure.
@@nathanngqwebo2108 Checkout Shenzhen I/O and TIS-100. Both are made by Zachtronics and are basically like OP said, toy versions of assembler. It was my introduction to assembly back in 2016.
Thanks! 0x80 is, indeed, ignored. It is just legacy at this point.
This was an elegant and instructive video, thank you very much. I remember writing a TSR utility probably three decades ago to work in MS-DOS and this brought some of that back.
Unfortunately, I VERY much doubt a modern software developer has any clue (or even a desire to learn) something as fundamental as this.
Loved the description of the Zero Register :-)
And who writes anti-tiger escape routines in assembly language these days anyway!
BTW - very soothing voice and tone. Far too much shouting on a lot of tutorials. Reminds me of Ben Eater's relaxed style.
Great work. Keep it coming. What real programmers should know...
absolutely loving your new low level videos, please please please don’t burn out!!! these are amazing videos. ❤️❤️
This is absolutely invaluable
Excellent video, much obliged for your sharing your expertise, love you my dear, you made my day!!
I always wondered why a `do-while` loop exists when there are while and for loops. Now I know! Thanks!
do-while executes one iteration no matter the condition... no standard loops in asm though.
This is an amazing video. My brain can't ingest all this information right now. I will comeback and watch it again. Amazing content for sure.
Mind is so blown that it has set the carry flag.
LMAO
amazing video :)
as a sidenote, you’d make an awesome audiobook reader!!
Thanks! Though I might need to work on getting the recordings done in fewer takes 🤣
I maitained a flight simulator, built in the 70's, where the software was written in mnemonic code. Coding was very efficient and fast on the 1MHz the 12bit machine. The simulator was upgraded around 2009 where a PC emulated the hardware, the software remained the same. It would be interesting to see how well compilers convert high level languages into assembler, for instance, does if/else statements produce the same code as the switch statement. There is a lot of enthusiasm for 'clever' high level languages but does it make the compiled code more or less efficient! Great stuff and very well presented, thanks 😊
Now that sounds like a cool project! Thanks for the comment :)
not only do you explain the concept but also give examples?? This is actually so beautiful
I found a programming language for the brain and its taken me here, thanks! He will teach me how to teach geometric cognition
I love this video and its follow up! I'm not your target audience, but found it very enjoyable anyway, and already shared it with a few people who program but dont know assembly.
One note is that the videos cover basic concepts very well but also at a very fast pace. I think your on screen graphics are great for people to pause and ponder to fully grasp what is going on. But I also think it might capture more of your intended audience if it took a slower pace in places.
Please keep doing what you're doing. this is amazing!
Appreciate it @timnewsham1 - the pace is probably the #1 thing I think about so this feedback is really useful. Thanks!
I am indebted to you for your contributions. Thank you, dear!
this is the perfect course I was looking for, amazing work! Please keep going
i got some cool programming shorts on my channel but nothing like this haha. you are one smart cookie
Great explanation and nice visual style!
Exactly when I started learnng assembly this dropped!! Nice one.
Please do make few ones on the RISC-V
I remember downloading a program on IRC chat on my Pentium 75 mhz which was coded in assemply and it showed a giant earth in SVGA graphics bouncing around the screen and it was that moment that I realized assembly is actually magic.
I wish I could learn coding directly from you. Start with C and work my way up
as somewhat of a dolphin who watched the whole video rewinding here and there, I wonder if you've played a game called "human resource machine" which visually teaches a very assembly like way of solving puzzles! it's quite joyful how they've managed to teach a lot of the basic concepts without making things too heavy!
Dolphins are becoming increasingly abundant in our time. I'm glad that there are still unicorns.
lt blew my mind, loved every second of it.
This video was witty, funny, touching, and educational. I don't think I understood assembly (mea culpa), but I thoroughly enjoyed this video. I know more now than I did before.
Great stuff :) these videos have such a great format!
Oh my! I love this channel! Thanks for sharing! Great job!
This was really fantastic! Thank you 🙌
I generally watch on a Roku/TV - I think the vids are more appreciated on a computer/laptop. Wonderful job with the little "hand pointers", as a somewhat mature person a bigger font and less on the screen, and/or a weather person like pointer or 'red dot', to bring your eyes to the right place, or a yellow 'hallow' circle.
Thanks! I do think pointing is pretty important - almost impossible to teach without pointing in real life 👉
13:24 oh i'm only here in physical form ma'am, my mind is still WAY back there. (j/k i've seen a good bit of assembly instructions before.) i'm just going to have to find a copy of this magical program to play it over and over again to really get it burnt in my head.
Amazing video! Kudos from Chile
The algorithm sent me here, and I’m glad it did. Earned a new sub, you have great content.
I didn't even know I wanted to learn assembly, but now I'm kinda curious. Did some way back when, but yeah, this looks as close to magic as programming does cD
The dolphin passage comes from a book called "Assembly Language Step-byStep" by Jeff Duntemann. Now I strongly suspect that it was he who also wrote Ketman.
Ahhh, all those ancient programming languages that I came across during my college years: Pascal , Fortune , Assembley
love your videos!
This is so helpful and interesting! Thanks so much for this
Fantastic video, keep up the good work
Fantastic video
Thank you so much for this tutorial, it's amazing < 3
According to the instruction set docs Google found for me, the parameter of the svc function does indeed not do anything. The reason it's there is that the svc handler can retrieve it and use it as a function selector -- which Apple platforms apparently don't do. It's a bit reminiscent of the way software interrupts work on the 68k, where all opcodes starting with A caused an interrupt to the A-line interrupt handler, and the interrupt handler would then look at the lower 12 bits of the opcode to decide which system call was being requested.
BTW I can't help but suspect that "goto considered harmful" inspired the decision to omit goto from the Java programming language. I personally disagree with that decision, I think goto has legitimate uses even within structured programming. Lucky for me I mostly program in C and C++.
Nice tutorial! I'm not new to assembly language programming but my experience is mostly 6502 and 68k. It's neat to get a little taste of x86 and ARM at last.
This is art
I mastered IBM 360 assembler language enough to make a FORTH interpreter for it. (Don't ask me why that was a good idea. I don't know). But for some reason, 8086 assembly broke my brain.
very well done, this video
These videos are so good!
Ketman? Thought you said ketamine 🙃!! Guess there’s no shortcut pill to being a good programmer 😂😂
i like the debugger next to the code reminds me a little bit of Turbo debugger but made in a simpler way
Great video. Thanks for uploading. Subscribing.
In MS DOS we can use a lot of functions of DOS, the mainboard bios and the graphic bios. For calling these function we can use software interrupts with an interrupt number and with some prepared register. And there is a table of interrupt numbers online based on Ralph Browns interrupt list html version with the description how to use these interrupts.
You don't say!!!
Babe, wake up! new Kay video dropped
A program for MS DOS can act with the outside world with system calls and additional can access all hardware components directly without to get a message of a protection violation, because MS DOS is not running in the protected mode of the CPU like other OS do. This is a significant difference. Example we can use a DOS function for output a string and we can write the bytes of the string directly into the screen memory without using a DOS or BIOS function.
The good old days. Nice addition - thanks for commenting!
Great content thanks!
Thank you for these amazing videos. I've never formally studied comp sci so I always feel like I'm missing the fundamentals. Also I assume you've come across Forth? If not you might love it.
You know I very nearly made a Forth-like stack language in assembly for the "Fast and Beautiful Assembly" video I posted the other day! Didn't quite make the cut though but you're right - love some Forth :) Will touch on properly in the next video which is focused on the stack.
@neoeno4242 from where I'm standing thats very impressive.
Cool example but that loop is a recipe for disaster. You have a couple of push instructions. If that loop runs enough times you’re gonna blow up the stack and the machine will lock up with a stack overflow. Every push to the stack must have an equal number of pop instructions that will restore the stack to the original starting address. If one needs a value that is buried inside the stack you use BP and calculate where it is to get the value.
Otherwise, I always approve x86 16bit assembly videos!
Yay! I love your videos
My mind was blown when I learned mov is an alias for bitwise OR 🎉🤯
“svc 80” is a software-based interrupt, the equivalent in x86 land is INT 0x80.