throAU said:
I know a little x86 assembly (from back in the DOS days, in-lining it in Turbo Pascal), and I'd suggest that "learning assembly" isn't like learning a language like say, C or Pascal.
Due to it's low level nature, to get much done you actually need to know more than assembly language. You need to have a firm grasp of how to call functions in your operating system and how to talk to the hardware.
You'll also need a firm understanding of binary math, the concept of pointers, etc.
Also, as you have discovered - assembly language syntax varies, depending on the assembler you are using.
Work out what you want to learn assmbly FOR, and then figure out what hardware and operating system libraries you'll need to interact with and read up on those as well.
You may find it easier to learn a simpler assembly language first - back when I was in university we used Motorola 68HC11 development kits - the CPU/instruction set is much simpler because you were pretty much running directly on the hardware there were far less hoops set up by the operating system to jump through to get anything done.
edit:
these days, maybe pick up a Rasberry Pi and learn ARM assembly? ARM is a much "cleaner" architecture than x86 and I suspect may be easier to start off with.
Ya, I know about binary math and the concept of pointers. I know C and C++. I have made simple windows programs using win32 api but never made system calls or anything low level.
I did read a ASM book on linux ASM programming and they had a chapter on system calls.
They explained that system calls are nothing but actual calls to the kernal itself. However, windows don't allow this. They said that windows will put you in protected mode which forces you to use their api which the api then does the system calls to the kernal.
I don't know how true but the book said that DOS and linux don't put you in protected mode. It allows you to directly do system calls to the kernal.
I do know how to build computer circuits and did take a class on it. Did learn ohms law etc. I have made my own 4-bit cpu and 32-bit cpu. It didn't do anything cool but I made it do many functions.
I had built a radio ya it works I can tune into real stations. I built a binary counter and built circuits in analog and digital. I even built a analog to digital converter and the reverse of that too.
Ya, I know the syntax varies depending on the assembler... I know there is NASM,MASM,FASM,TASM.
I already read a few books some about hacking which had ASM. I read the books since I was recommended to read them since it had a few chapters on assembly.
I know the numbering systems like binary which is based 2 and hexadecimal which is 16 base and decimal system is 10 based. then octal is 8 base and then there is a 9 based numbering system called Nonary and there is a 3 based numbering system called Ternary and 12 based numbering system is duodecimal.
I took electronic classes in highschool that was college equivalent. I built my own cpu's and created my own opcodes.
I already went thru the basics and do know some operations like add,mov,push,pop,cmp,jmp,call...etc..
I currently don't understand how to interact with an OS. I did start learning windows.
I was told you would need to use the call operation to call C functions / classes etc.
I would have to use the windows win32 api to make windows software for windows.
I haven't done this physically other then create a hello world in text with an ok button and a windows window something very basic.
yet, there is still alot that I don't know or understand. I haven't read books that goes into detail about ASM and making software or drivers for an OS.
I am pretty sure I can handle ASM. I think I have a good enough background to understand the material. I just need a book or a tutorial that can explain system calls and working with the kernal or win32 api. I was told that the win32 api isn't different then how you would use it in C or C++. It's the same functions.
However, I would still need someone to explain to me the ASM code. Since it's not like C or C++. Like I done labs so far. The ASM window application had @16 messagebox A something like that.
I had to ask people online what it does. I was told It was used to be capable with DOS predecessors. So I would need to use it or else I would get some nice errors.
Anyways, thanks for the replies. I will look into anything that is suggested. I am pretty sure I can handle ASM. I have the will and the desire to learn it.