Take the 2-minute tour ×

I start university in a few weeks (software engineering degree) and know that one of the modules I'll be studying in the first year is 'fundamentals of architecture' or something similar; basically it's learning to program in 'assembly'.

I'm wanting to do some background learning so I'm prepared for it (I've done the same on some other units), but don't know if there is more than one 'assembly language'. How many are there? Is it one per manufacturer, a 32-bit and 64-bit language, or just one standard?

If there is more than one type, what is the most 'popular' or likely to be taught at university level?

share|improve this question
If you want to get a head start, I'd recommend contacting someone at the university (the prof or department secretary) to find out which assembly language will be used. Some universities don't even use a "real" assembly language, preferring to create a synthetic one for students to learn with. –  Blair Conrad Aug 19 '10 at 23:21
@Blair That's a good idea, I'll do that. I really hope I end up not using a synthetic language - that would be so disappointing. –  Saladin Akara Aug 19 '10 at 23:27
My university taught the equivalent course using MIPS, which is a relatively simple RISC (reduced instruction set) assembly language. It's very likely they won't teach using x86 (the Intel 32-bit assembly language and probably the most frequently targeted for compilers), simply because there are so many arcane instructions in the x86 set that have evolved over time to provide various optimizations. Here is some info on MIPS: en.wikipedia.org/wiki/MIPS_architecture –  Dan Bryant Aug 19 '10 at 23:30
If you do find out they're teaching MIPS, you could play around a bit on your own using SPIM, which is likely what you'll use in class. You can find a web-based version of SPIM here: cgi.aggregate.org/cgi-bin/cgispim.cgi –  Dan Bryant Aug 19 '10 at 23:40

2 Answers 2

up vote 9 down vote accepted

There are many, many types of assembly languages. The current most popular are ARM, MIPS, and x86. ARM is used on lots of cell phones and many embedded systems. MIPS is for Motorola systems - Macs, some video game consoles, and a few I'm sure I'm missing. x86 assembler is used on Intel PCs. Each flavor has different versions which span the gammut from 16-bit to 64-bit opcodes. The thing about assembly is old architectures tend to die and new ones come along, but the fundamental things that RISC style systems do are mostly the same. It's just a matter of learning the mnemonics between systems. Move, Mov, Load, etc. all load a register with a value. It's like any other language really. Once you learn one, it's pretty easy to pick up newer ones. Some older ones you might run into are Z80, 68000, 6502, and 6510 - depending on how far back in the way back machine you want to go.

Hope that helps.

share|improve this answer


Different assemblers (e.g. Gnu's and Microsoft's) for the same CPU may have different assembly language syntax; but the difference is trivial, because they're both targeting the same CPU, and there's a 1-to-1 mapping (if you ignore macros) between assembly instructions and CPU opcodes.

The bigger difference is between different types of CPU.

Sometimes different CPU support the same opcodes (and can therefore be targeted by the same assemblers), because they're designed to be compatible with or competitive against each other, by executing the same machine language.

But sometimes they're different: see List of Instruction Set Architectures.

share|improve this answer

Your Answer


