This article is classified "Real"
Assembly language programming is one of the most powerful methods of programming a computer. It works one step above the level of the computer. That is, instead of writing a program that says "print this character on the screen when such and such a condition is met" you write a program that says "put the number $A6 at address $E510 when the flag at $1023 becomes a one." Actually, this isn't entirely true. Which addresses and numbers are appropriate varies wildly from computer to computer (or, microcontroller to microcontroller. The actual semantics of whether to say computer or microcontroller are just that -- semantics. Generally, microcontrollers are used with devices and computers are used for number-crunching). Assembly programs generally use numbers in base 16, also known as hexadecimal, due to the fact that the physical structure of most computers is based on grouping the individual switches in groups of 8. Thus it is very easy to go from the switch patterns to the hexadecimal numbers. The commands are very short, and the computer does exactly what you tell it. The advantage to this is that the executables are extremely small and fast. To give you an idea of the speed gains, an assembly program will generally run 2 to 4 times faster than a comparable C/C++ program, and orders of magnitude faster than many other languages. One of the disadvantages of assembly is, the computer does exactly what you tell it. That is, if you think you're telling it one thing, and you're actually telling it another, the results are going to be quite different than what you expect. Usually, they're dramatically different, and nine times out of ten they involve an infinite loop somewhere you didn't expect it. This brings us to the second disadvantage. Due to the short and direct nature of the syntax, debugging your own program can be difficult. Even trying to figure out what someone else's program is attempting to do can take so much time that it's often easier to start from scratch. And the slightest mistake will mean the program won't work properly. Only very rarely will it even do anything close. This is simply because of the direct nature of the commands. The only way around this is to document the program far more than one would deem necessary; every line if possible. Thus assembly language can be considered an extremely fast, powerful, and efficient language. But one should be alert for the potential difficulties assembly language can present.