stevej150 wrote:
Is the documentation really good for learning about the FASM syntax? Can you use all the instructions?
You can use all instructions supported on the CPU you're using. You may need to detect specific instruction sets using CPUID; for example, SSE, AVX, VT-x and other things are not present on all CPUs and you need to detect their existance.
stevej150 wrote:
By the way, how would I print a string in 32 bit? The tutorial on the Wiki has lea instruction and it doesn't work.
Copying and pasting is a very bad practice, even for a beginner. It doesn't get you anywhere useful.
Instead, read on the theory of printing to the screen. The theory is that the screen (in standard VGA text mode 0x03) has 80 columns and 25 rows and the video RAM starts at 0xB8000. Each video RAM "entry" is a 16-bit word, the low byte is the character to display and the high byte is the attribute. The low 4 bits of the attribute is the foreground color. The high 4 bits of the attribute is the background color (or bit 7 may be the blink bit, it depends on how you configure the VGA controller, but this is off-topic.)
Knowing that the screen resolution is 80x25, you should be able to calculate the address of a specific character on your own, knowing that each character takes up two bytes of video memory (i.e. at 0xB8000 is the character and attribute at position 0, 0, at 0xB8002 is the character and attribute at position 0, 1, etc...)