Your question is so broad that several books have been written on this subject. Please do your homework on your own by reading good books on the subject.
Specifically to answer your questions.
what is an assembler?
Assembler is the program that converts the mnemonics (MOV, ADD, SUB etc.) your have written into actual machine code and also binds the logical addresses you have used in your assembly program to absolute machine addresses. This is a very general, non-technical way of putting it, but this is what it is.
is assembley language is more powerfull than c & c++?
Yes and no. C and C++ are high-level languages that concentrates more on writing code in a more abstracted and human understandable way than machine language. While you would write ten or more lines of code in assembly language to do a multiplication or division between two numbers, in C and C++ you just "multiply" and that's it. But one thing is that assembly programs written specifically utilizing a particular architecture's features would be highly optimized and run fast on that platform.
Is assembly language portable?
Assembly language is "machine-specific". That is to say, an assembly program written to target a particular architecture (example Intel x86) will not work with other architectures (example PowerPC).
can one create his own operating system in assembly language?
Though theoritically possible, this would be a huge task and probably not worth it because, as I mentioned, the platform-specific nature of assembly code. Most OSes are written in C because there are many existign C compilers for different platforms and C programs can target multiple platforms if linked with cross-platform libraries. Assembly code is used inside of C programs for very small sections where a high degree of optimization is required.
Last edited by vharishankar; 03-13-2005 at 12:04 AM.