>>36
DIFFERENCES BETWEEN MOST HIGH-LEVEL LANGUAGES AND ASM
1. No variables. Actually, you have to make your own. Either memory locations or registers can be your variables. Preferably registers, but you only have a couple of those. So, you have to decide which memory locations are going to serve as your variables, or decide which registers you can use.
2. No IF statements. You have compare instructions. And then depending on ther result of that comparison, you can jump(branch) to another address or carry on.
3. No PRINT/printf statement. You have to make your own using operating system/DOS/BIOS routines or writing to screen memory yourself.
4. No expressions. Everything boils down to a sequence of instructions.
5. Direct access to hardware. Ports/IRQs/memory locations, it's all there. Unless your program is running under protected mode.
6. No data types. You have signed or unsigned bytes, words, doublewords, quadwords, but they're all really bytes.
7. Flag register. Generally, after a math operation, the bits in the flag register are set to some values based on what just happened. You can branch depending on how various bits are set in it, like the carry bit, etc. Google for information on carry and overflow bits.