Here is brief info to help me understand the above program:
";" marks comments (to the end of the line).
"msg:" -- is an example of a label (like in FORTRAN).
org (="origin")--declares where in the memory the program begins (after it is loaded to memory for execution).
db, dd, dw are nasm "pseudoinstructions" used to insert initialized data into the output file.
"$" evaluates to the assembly position at the beginning of the line containing the expression; so you can code an infinite loop using "JMP $". "$$" evaluates to the beginning of the current section.
The general-purpose 32-bit registers in the 80x86 ("Intel") processor are: EAX, EBX, ECX, EDX, ESI, EDI, EBP, and ESP. (The "E" stands for extended. It is there because the processor can instead "overlay" the registers and treat them as 16-bit registers with names: AX, BX, CX, CX, SI, DI, BP, and SP. Still underlying those, there are also eight 8-bit registers: AL, AH, BL, BH, CL, CH, DL, DH. Here, the "L" and "H" stand for "high" and "low" byte.).
Mnemonics for some common 80x86 processor instructions:
Name Syntax Comment
NOP NOP No operation (do nothing).
MOV mov destination, source Move (copy, set)data.
XCHG XCHG operand1,operand2 Exchange the values.
CMP CMP operand1,operand2 Compare the two operands.
PUSH PUSH source Push onto stack.(Place the value on stack and increment the stack pointer).
PUSHF PUSHF Push flags.
PUSHA PUSHA Push all general-purpose registers.
POP POP destination Pop from stack(take the value from stack, and decrement the stack pointer). Pop is reverse to push.
POPF POPF Pop flags.
POPA POPA Pop all general-purpose registers.
INC INC operand Increment (increase by 1).
DEC DEC operand Decrement (decrease by 1).
ADD ADD Dest,Source Add.
ADC ADC Dest,Source Add with carry.
SUB SUB Dest,Source Subtract.
INT INT number Execute an interrupt.
CALL CALL subroutine Call a subroutine.
RET RET Return from this (current, innermost) subroutine.
JMP JMP destination Jump (start executing code starting at the the address "destination")
JE JE destination Jump if equal.
JNE JNE destination Jump if not equal.
JZ JZ destination Jump if zero.
JNZ JNZ destination Jump if not zero.
JP JP destination Jump if parity (parity is even).
JNP JNP destination Jump if no parity (parity is odd).
JPE JPE destination Jump if parity even.
JPO JPO desitination Jump if parity odd.
JCXZ JCXZ destination Jump if CX zero.
JECXZ JECXZ destination Jump if ECX zero.
8.2.8 Scheme
guile
An implementation of "Scheme" programming language. Scheme is a modern dialect of the LISP language (the one that has been promising the artificial intelligence for the last 40 years).
Silly examples for the guile interpreter.
guile
(+ 1 1)
(define a 2)
(/ a 3)
(= a 7)
(display "hello\n")
(system "ls")
(exit)
The first command runs the guile interpreter. The next four commands do addition, definition, division, and comparison using the so-called Polish notation (operator in front of the operants). See the section on reverse Polish notation on this page. The last command exits the guile interpreter.
8.2.9 FORTRAN
g77
GNU FORTRAN. An on-line manual is available at: http://gcc.gnu.org/onlinedocs/g77/. If you are really into FORTRAN, you might also want to

