I am relatively new to all this low level stuff,assembly language.. and want to learn more detail. Why there is a difference between Linux, Windows Assembly languages?
The OS determines two things: (1) the calling convention, which defines how parameters go on the stack and therefore impacts the assembly code, and (2) the run-time libraries that implement common functions like memory allocation, input/output, higher-level math, etc.
So while x+y
compiles to the same assembly code under Windows or Linux on an x86 processor, y = sin(x)
will be different due to a different calling convention and different math library.
Beyond that, the assembly language itself is dependent on the processor. x86, x86_64, ARM, PowerPC, each have their own assembly language.