C++ Programming - Arrays and Loops
14:21
C++ Programming - User Inputs
6:01
x86 Operating Systems - Interrupts
45:09
Пікірлер
@abraham7966
@abraham7966 3 сағат бұрын
Where can I find the codes for BIOS interrupt? For example, 0x10 video interrupt
@abraham7966
@abraham7966 4 сағат бұрын
It's funny, in C you should close the file when you are done with it but here in Assembly I don't see that it is necessary.
@abraham7966
@abraham7966 20 сағат бұрын
I hope he is working on an "advanced" assembly series. There is a lot to cover in x86 and he really knows how to teach..
@Garfield_Minecraft
@Garfield_Minecraft 4 күн бұрын
the reason we use JA instead of JG is because for floating points we use IEEE notation for JE just compare 1s and 0s but greater than is a bit tricky 110.1(6.5 in decimal) and 1100(12 in decimal) may seem the same for computer even though they are completely different values computer sees 1101 > 1100 but in reality it's not 13 > 12 it's 6.5 > 12 which is wrong maybe? IDK if this the true reason just my guess they could make assembler so that use the same mnemonic code because it really doesn't have to be 1 to 1 with machine code but they designed assembler this way
@Garfield_Minecraft
@Garfield_Minecraft 4 күн бұрын
MOVSS that's very funny mnemonic code how do you actually pronounce it LOL. moves? I really don't use floating point much I just scale up by 10 or 100 or 1000 depends on precision. I tried avoid it at all cost hashtag IEEE is bad
@Garfield_Minecraft
@Garfield_Minecraft 4 күн бұрын
In fact you don't have to use octal value you can convert those values to binary, hexadecimal, decimal, and it still works it's the same numbers just written differently. but I guess this is more readable and maybe easier to remember
@abraham7966
@abraham7966 4 күн бұрын
GOD DAMN. Best assembly tutorial. So well explained. If you don't learn with this guy you are just dumb.
@abraham7966
@abraham7966 4 күн бұрын
HIDDEN GEM IN THE CORNER OF THE INTERNET.
@abraham7966
@abraham7966 4 күн бұрын
He said at the end: Thank you for watching this video. Man, more like: THANK YOU FOR MAKING IT.
@MohamadModather99
@MohamadModather99 5 күн бұрын
Just to clarify: Consider the number 9, which is 'odd'. The decimal number 9 is represented in binary as 1001. In the binary representation 1001, there are two 1s. Since there are two 1s (an even number), the Parity Flag (PF) would be set to 1.
@thetaomegatheta
@thetaomegatheta 5 күн бұрын
Trying to re-learn assembly. Not managing to do this on Windows. Are there any examples of simple NASM usage on Windows or relevant tutorials?
@nabihali6178
@nabihali6178 7 күн бұрын
Thanks!
@Ali107
@Ali107 8 күн бұрын
*eyes proceeds to burn away from white screen*
@myheroskryptonite
@myheroskryptonite 9 күн бұрын
commenting because this series is awesome. I wish I had found it at the beginning of semester!
@dhivakar.r2982
@dhivakar.r2982 10 күн бұрын
I tried to dump the value 0xff into the RAM of size 2GB the first code takes 0m 0.82 sec and the second code takes forever to execute. Why is that? Code 1: section .bss reserved_data RESB 2000000000 ;2GB space in RAM section .text global _start _start: MOV ax,1 MOV bl,0xff MOV ecx,2000000000 MOV edx,reserved_data L1: MOV [edx],bl INC edx DEC ecx JNZ L1 l2: INT 80h Code 2: section .data ram DB 2000000000 DUP(0xff) section .text global _start _start: MOV eax,1 INT 80h
@myheroskryptonite
@myheroskryptonite 10 күн бұрын
thank you
@eraofinteligance
@eraofinteligance 11 күн бұрын
goat
@sharifmugishaNovice
@sharifmugishaNovice 13 күн бұрын
why doesn't this channel get any views?
@MohamadModather99
@MohamadModather99 13 күн бұрын
Wonderful work, I just installed 'ubuntu' and started to write, debug and manipulate my own, beside writing notes 'documenting' whatever you say. Respect++
@tomasordorica2107
@tomasordorica2107 13 күн бұрын
really useful man, thanks
@sufalt123
@sufalt123 14 күн бұрын
a coming from freecodecamp thank for video :D tho i am still confused on the order of push and pop operations. its last in first out i think i kinfda get it
@robsawyer8034
@robsawyer8034 15 күн бұрын
Awesome brother!
@mechwarrior83
@mechwarrior83 15 күн бұрын
You have mad skills for explaining extremely complex topics in a very concise and clear manner. Genuine thanks for putting this together!
@sharifmugishaNovice
@sharifmugishaNovice 17 күн бұрын
why we have a warning "Warning! W1014: stack segment not found" is it because we defined sp to 0 ?, because no I tried to put 0x200 there and nothing changed however it works and it bothers to don't know why :(
@MohamadModather99
@MohamadModather99 17 күн бұрын
This channel is a hidden gem!! I just started learning this course, wish me luck :)
@WabuhWabuh
@WabuhWabuh 20 күн бұрын
So each type of chip architecture has it's own language.
@YusufTDelice
@YusufTDelice 21 күн бұрын
I couldn't quite get it, it would make sense if we tried to store them in 2 bytes of memory and the OS just hold them together, because then it would allocate just 2 bytes of memory, but why does this happen when you actually allocate 4 bytes already with eax.
@jaimedpcaus1
@jaimedpcaus1 21 күн бұрын
Excellent tutorial! Quick q: I ran the gdb debugger exactly like you ran it and it worked just like in your video. I tried to use the data display debugger (DDD) but it said it had no symbols. Is that correct? Thanks
@vikont79
@vikont79 22 күн бұрын
Thanks!
@Garfield_Minecraft
@Garfield_Minecraft 24 күн бұрын
4:39 you could also use 0x80 or convert it to decimal 8*16 or 128
@Bodenman
@Bodenman 24 күн бұрын
isnt 1/2 =0.5 ? or do you need to round up the number when converting to binary?
@mohamedkhoulali7267
@mohamedkhoulali7267 23 күн бұрын
In the binary conversion we are more focused on the integer division and the remainders rather than the decimal result , so the division of 1 by 2 results in a quotient of 0 and a remainder of 1 , this remainder is what we record for the binary representation
@Bodenman
@Bodenman 23 күн бұрын
@@mohamedkhoulali7267 thank you for explaining!
@ILikeTC
@ILikeTC 25 күн бұрын
Just hopped on this series again and instantly loved it in the first second.
@ILikeTC
@ILikeTC 26 күн бұрын
The fact that the mistakes doesn't mean skill issue but rather show that it's first try is just amazing.
@ILikeTC
@ILikeTC 26 күн бұрын
Thanks for doing all this ❤
@ILikeTC
@ILikeTC 26 күн бұрын
This video looks like you've put more effort in than the others, thanks!
@Phoenix_2924
@Phoenix_2924 26 күн бұрын
Your the best
@dheerajsuthar6591
@dheerajsuthar6591 26 күн бұрын
One interesting thing to note you can write beyond the defined byte (3 byte defined and wrote to 4th byte). Also, you can overwrite the data defined in .data section. Why both .data and .bss section exists - .bss is meant for uninitiazlied data as mentioned in video, (default zero initialized) equivalent to static int x; in C which don't become part of executable and take space during run time .data becomes part of executable with C equivalent static int x = 2; .rodata is meant for constants.
@tcpflood
@tcpflood 27 күн бұрын
i'm getting an issue where when printing, "Hello World" prints "ello World" and everything i tested theres always the first character missing. this is especially an issue when doing printf because the values were also one off, so printf("Hello %s", "John") would be "ello ohn". i figured it must be _x86_Video_WriteCharTeletype because its behind everything that goes on the screen. i changed "MOV bh, [bp+6]" to "MOV bh, 0", and it worked. this is my first time writing in asm especially x86, so if this isn't the right approach then please correct me.
@mechwarrior83
@mechwarrior83 27 күн бұрын
What fantastic explanation, thank you so so much for making this series!
@eyalshain5244
@eyalshain5244 28 күн бұрын
I did exactly like u, but for some reason its printing the message "failed to boot the disk..." what's the problem
@Garfield_Minecraft
@Garfield_Minecraft 29 күн бұрын
me pretending to be writing program in assembly: extern everything from c
@franzageek
@franzageek Ай бұрын
please don't tell me you're planning on dropping this series?
@MohammadEesa-yf9tb
@MohammadEesa-yf9tb Ай бұрын
@noderiviera
@noderiviera Ай бұрын
Why didn't you just jump on main after HLT is passed to HLT system again?
@noderiviera
@noderiviera Ай бұрын
It's not true that to work with GCC you need to use exclusively main. The thing is GCC puts initialization code before running your program and this code indeed runs main. Initialization sets up stack for you for example. But you can disable it and manually setup stack later. nasm -f win32 hello_world.asm -o hello_world.obj gcc -m32 hello_world.obj -o hello_world.exe -mconsole -lkernel32 -lmsvcrt -nostartfiles -e _start -nostartfiles is the option that disables initialization code that calls main. Instead it will directly run _start But to be honest I don't really understand why did you switch to GCC, because you can use C functions with ld as well. For windows it will be: ld -m i386pe hello_world.obj -o hello_world.exe -lkernel32 -lmsvcrt -e _start to link And functions itself will be section .text global _start extern _printf So you need to put underscore in front of the c function name and it will link succesfully then.
@noderiviera
@noderiviera Ай бұрын
You forgot ROL and ROR
@n64emu-y4j
@n64emu-y4j Ай бұрын
hi
@noderiviera
@noderiviera Ай бұрын
You present data very well, you should have more followers
@BaselBakr-e1k
@BaselBakr-e1k Ай бұрын
Can you make a video on how to setup the environment to be able to follow along with the tutorial?
@MohammadEesa-yf9tb
@MohammadEesa-yf9tb 15 күн бұрын
nope 🤗
@apurvkumar1808
@apurvkumar1808 Ай бұрын
the .data section is not part of stack. Even program has different memory segment and the list variable at 4:21 is stored in data section which has a seperate memory. If we talk in c language terms the list variable here is a global int array