john765 wrote:
I actually think B8 is the mov instruction. It's a memory address, right?
The phrasing of this is really confusing to me. Yes, the primary opcode B8 moves a imm16/32 into eax. However, this is completely unrelated. Going back, apparently you extracted this value from Bare Bones. It is the address of the VGA video buffer. If you would have read
the page that was linked to you, you'd be aware of that. Also, you didn't read Bare Bones thoroughly. It explains why 0xB8000 is relevant and what writing there does. Long story short: yes, it's a memory address, and it's completely unrelated to instruction encoding.
john765 wrote:
I know you add a h on the end of something in x86 assembly language.
I'm really picky about this: it depends on the syntax. If you use AT&T syntax (GAS uses this), yes. If you use Intel syntax (nasm, yasm), hex values are written C-Style with the '0x' prefix.
john765 wrote:
StudlyCaps, the code in Bare Bones is insane. How did someone know how to do that? What do you have to read to make it run?
You can learn that by reading. You've been pointed to the wiki, so use it. It's the best place to start. After that, some of the most valueable information is obtainable by reading specs and Linux or FreeBSD drivers.
To pick up the title of this thread: you definitely shouldn't (and probably can't) learn C and Assembly on here or the wiki. There are resources dedicated to this, and osdev.org doesn't belong into that category for sure. Also, does this thread have anything to do with Operating System Development? My guess would be that this belongs into General Programming.