http://www.jegerlehner.ch/intel/IntelCodeTable.pdf
Has a large list of ASM commands and registers. I personally use it as a reference whenever I need to code something in ASM.
About the registers... they are only shown for reference, they aren't really explained in the file, so I'll do that here.
The registers AL, AX, AH, and EAX are so-called accumulators, they are used primarily for gathering data from other registers like DX
AL is the low byte of a word, while AH is the high byte. AX is the word in its entirety, while EAX equals a dword.
The registers BL, BX, BH, and EBX are registers used in MOV operations.
They follow the same principle as the A-based registers.
The registers CL, CX, CH, and ECX are count registers for string operations.
They follow the same principle as the A-based registers.
The registers DL, DX, DH, and EDX are data multiplication, divisions, and general IO registers
Again, they follow the same principle as the A-based registers.
There are some special combinations of segment registers and general registers that point to important addresses:
CS:IP (CS is Code Segment, IP is Instruction Pointer) points to the address where the processor will fetch the next byte of code.
SS:SP (SS is Stack Segment, SP is Stack Pointer) points to the address of the top of the stack, i.e the most recently pushed byte.
DS:SI (DS is Data Segment, SI is Source Index) is often used to point to string data that is about to be copied to ES:DI.
ES:DI (ES is Extra Segment, DI is Destination Index) is typically used to point to the destination for a string copy, as mentioned above.
I hope this is enough information to get you going.