About 1970, I first started to learn programming. Initially I had to write in Machine Code (Binary). Later we learned Assembler, which was so much easier than Machine Code. Later the programming languages we could learn was Fortran or BASIC (the first iteration of BASIC). All of our code had to be punched onto Punch Cards and then loaded into the computer. Our modems were either 110 or 300 baud. (yes, very slow). So seeing a video about assembler brings back many memories. FYI -- the largest Assembler program I wrote in college was about 500 to 900 punch cards. (You did not want to drop your box of punch cards.)
@@MaxCE On punch cards, Only could use zero or one, and each instruction was the exact number of bits. Typically a first few bits were the instruction (add, subtract or compare.) and the remaining bits were the parameters, such as which register and maybe a constant. This was about 50 years ago, so I do not remember all the specifics.
@@StephenEhrlichPhotos binary, that’s probably pretty insane if you are able to write on that language today because the only thing you see are numbers
note: it's no mandatory to put the numbers in hex form, you can use regular integers, assembly x86 accepts that equally, but of course knowing how to convert from regular numbers to hex abd vice versa, and from regular numbers to binary and vice versa is a necessary and very useful advantage in low level programming (assembly,C ,etc)
Hello Sir! I recently watched your PRINTING Hello World in Assembly language. I was quite impressed from that video and I understood it very well. Unfortunately there's only one video of Assembly language in your channel. Please it's my humble request to add more videos about Assembly language. Thanks a lot in advance
Trippin' back now to places I been to.... I couldn't afford a decent assembler for my C64(6502/6510), so I wrote my own. The assembler itself was written in extremely tight Basic. Assy source files were written using Speedscript. I used it at the time mainly for a new threaded code compiler language I was working on. I don't think I could even imagine trying to solo write an assembler for modern systems today. How times have changed.
Assembler for a high-end CPU's like arm7 or x86 is not recommended, opcodes have many advanced variations like adding two registered and moving it to a third (MOV R1, R3, R8) 6502 and msp430 assembler is OK, but learn to program in C "assembler style" state machine, let the compiler handle the var placement and initialization.
Every 5 years, coding becomes 5 times easier. At present it's easy enough that anyone with enough time can create something with it and with A.I. on the horizon it will be easy enough that even complete amateur will be capable of creating something.
x86 is a family of processors and instruction sets (IA-16, IA-32 and 64-bit additions to it). Writing assembly for a Linux x86_64 program is a valid modern demonstration of it. The 32-bit hello world program looks exactly the same, except it's using 32-bit registers (eax, edi, esi, edx) and the SYSENTER instruction (or INT 0x80 if you're oldschool) since SYSCALL is an AMD invention that Intel processors only support in 64-bit mode.
Learnt the MOV rax, 0x1 and what it means. Also how to start an assembly program. global _start section .something _start: I didn't quite catch the MOV rdi, 0x1 and MOV rsi, msg. Just heard that it's something to do with buffers. Learnt about msg: DB "Hello World", 0xA. (A is ten in hex) And nasm installation. Assembly is machine dependent. Yeah. Okay. Just made sure I could type the little bits I got.
Going to try this under Ubuntu. Author: machine, assembly and system programming for the ibm 360. 1969. Been using Forth interactive, incremental assemblers since ~1982. No link step. :) Batch assemblers 1960 technology. :(
Experimenting writing machine code in portable transparent c bypassing assembler. Works on x86 and arm platforms so far. Let compiler writer tell us what machine codes to use.
It is assembled at compile time. The EQU directive instructs the compiler to replace all occurrences of msglength with the constant 0x20 (or the other constant it was set to). The object file has no idea what is msglength and it doesn't store it in memory. It only appears as a constant. It's very similar to a C or C++ macro or #define.
@@c3a118 basically Memory is segmented into different segments that hold either data or instructions. I think it has to do with some limitations of the x86 architecture. That way you can load the diffrent parts of the programm into the corresponding segments by defining the section or segment inside it.
About 1970, I first started to learn programming. Initially I had to write in Machine Code (Binary). Later we learned Assembler, which was so much easier than Machine Code. Later the programming languages we could learn was Fortran or BASIC (the first iteration of BASIC). All of our code had to be punched onto Punch Cards and then loaded into the computer. Our modems were either 110 or 300 baud. (yes, very slow). So seeing a video about assembler brings back many memories.
FYI -- the largest Assembler program I wrote in college was about 500 to 900 punch cards. (You did not want to drop your box of punch cards.)
im afraid to ask how you wrote in binary
@@MaxCE On punch cards, Only could use zero or one, and each instruction was the exact number of bits. Typically a first few bits were the instruction (add, subtract or compare.) and the remaining bits were the parameters, such as which register and maybe a constant. This was about 50 years ago, so I do not remember all the specifics.
@@StephenEhrlichPhotos binary, that’s probably pretty insane if you are able to write on that language today because the only thing you see are numbers
So insane i thought u was ironic
Remarkable
note: it's no mandatory to put the numbers in hex form, you can use regular integers, assembly x86 accepts that equally, but of course knowing how to convert from regular numbers to hex abd vice versa, and from regular numbers to binary and vice versa is a necessary and very useful advantage in low level programming (assembly,C ,etc)
This is the clearest video I have seen about assembly language. Thanks a lot.
ikr I could actually follow along without errors somehow
Damn!!!
I never expected this content.
Please make a series.
Love your content!!! ❤️
Finally I can add Assembly on my resume
plz make a series on Assembly
wow i did not expect x86 assembly here and although i've been learning it already, i'm still really excited
This is your first video I have seen and I'm so impressed. You teach well
@NeuralNine. More tutorials on Assembly would be much appreciated. Really interesting.
Why so underrated
I found it after hours on my start page
Cuz nobody writes asm
@@andrewlalis what about other vids
perfect !!! i like this video comparing assembly to C and how machine works
why is he so underrated?
i dont know it make me sad that he is not famous although his content is super rich !!
I don't understand how this guys get low views in his videos, his content is really helpful and important
can you actually do an assembly 8086 lesson/course?
Hello Sir! I recently watched your PRINTING Hello World in Assembly language. I was quite impressed from that video and I understood it very well. Unfortunately there's only one video of Assembly language in your channel. Please it's my humble request to add more videos about Assembly language. Thanks a lot in advance
The subtitle helped me ALOT!
Trippin' back now to places I been to....
I couldn't afford a decent assembler for my C64(6502/6510), so I wrote my own.
The assembler itself was written in extremely tight Basic.
Assy source files were written using Speedscript.
I used it at the time mainly for a new threaded code compiler language I was working on.
I don't think I could even imagine trying to solo write an assembler for modern systems today. How times have changed.
That is so amazing nothing like C at all but I think I will love this just as I love C.
so smooth im impressed
Thanks so much for this, looking forward for more assembly content ! Maybe a course ?
well explained
I've been writing assembly for a year now. it's awful and I hate it. I highly recommend learning it 10/10
Assembler for a high-end CPU's like arm7 or x86 is not recommended, opcodes have many advanced variations like adding two registered and moving it to a third (MOV R1, R3, R8)
6502 and msp430 assembler is OK, but learn to program in C "assembler style" state machine, let the compiler handle the var placement and initialization.
Could you make a series out of it?.
There are some deleloper manuals from INTEL and AMD for x86 CPU and there is an online assembler to test some instructions.
Please make a Assembly for beginners course please
Every 5 years, coding becomes 5 times easier. At present it's easy enough that anyone with enough time can create something with it and with A.I. on the horizon it will be easy enough that even complete amateur will be capable of creating something.
Awesome content 👍👍
Ur the best man keep it up ♥️🔥
Which font are u using ? Its look amazing
more assembly please!
please make more assembly!
Why did you link , there was just one translation unit... please explain.
Do you have a tutorial on x86 assembly?
I'm a little confused, it says x86 in the title but you're using 64 bit registers?
x86 is a family of processors and instruction sets (IA-16, IA-32 and 64-bit additions to it). Writing assembly for a Linux x86_64 program is a valid modern demonstration of it.
The 32-bit hello world program looks exactly the same, except it's using 32-bit registers (eax, edi, esi, edx) and the SYSENTER instruction (or INT 0x80 if you're oldschool) since SYSCALL is an AMD invention that Intel processors only support in 64-bit mode.
EQU is equals, isn’t it?
Yes.
how does the code you wrote , understood by computer(or coverted to machine code)
Nice!
I like to write into the framebuffer.
Thank you!!!
Learnt the MOV rax, 0x1 and what it means.
Also how to start an assembly program.
global _start
section .something
_start:
I didn't quite catch the MOV rdi, 0x1
and MOV rsi, msg. Just heard that it's something to do with buffers.
Learnt about msg: DB "Hello World", 0xA. (A is ten in hex)
And nasm installation. Assembly is machine dependent.
Yeah. Okay.
Just made sure I could type the little bits I got.
Thanks
Didn’t know Ricky Martin is well versed in Assembly language
Keep it up...Love you
How the text is written to the screen memory is not shown and not explained.
Going to try this under Ubuntu.
Author: machine, assembly and system programming for the ibm 360. 1969. Been using Forth interactive, incremental assemblers since ~1982. No link step. :) Batch assemblers 1960 technology. :(
Amazing how much of your list is still relevant!
Experimenting writing machine code in portable transparent c bypassing assembler. Works on x86 and arm platforms so far. Let compiler writer tell us what machine codes to use.
Is msglength stored in memory in the data section or assembled as a constant?
It is assembled at compile time. The EQU directive instructs the compiler to replace all occurrences of msglength with the constant 0x20 (or the other constant it was set to). The object file has no idea what is msglength and it doesn't store it in memory. It only appears as a constant. It's very similar to a C or C++ macro or #define.
Thanks ❤️
🔥🔥🔥🔥
What does NR means ?
for some reason its saying my file (test.o) isnt a reconised format
(command) ld -o test test.o
set noshowmode to hide the original status
Starts at 2:13.
First❤
He's simply comparing C to Python 0:26
damn looks ez,
i hope its ez
Wow
I'm not that smart😂
Firstttt
How to write hello world. 14 minutes💀☠
14 minutes
bro literally make a mistake in a Hello World program and couldn't figure it out. This talks a lot about ASSEMBLY
it tells you a lot about him as a programmer.
section .text for what
it is a section
@@c3a118 ....
@@c3a118 basically Memory is segmented into different segments that hold either data or instructions. I think it has to do with some limitations of the x86 architecture. That way you can load the diffrent parts of the programm into the corresponding segments by defining the section or segment inside it.