DS
is called data segment register. It points to the segment of the data used by the running program. You can point this to anywhere you want as long as it contains the desired data. ES
is called extra segment register. It is usually used with DI
and doing pointers things. The couple DS:SI
and ES:DI
are commonly used to do string operations. SS
is called stack segment register. It points to stack segment.
The register SI
and DI
are called index registers. These registers are usually used to process arrays or strings. SI
is called source index and DI
is destination index. As the name follows, SI
is always pointed to the source array and DI
is always pointed to the destination. This is usually used to move a block of data, such as records (or structures) and arrays. These register is commonly coupled with DS
and ES
.
The register BP
, SP
, and IP
are called pointer registers. BP
is base pointer, SP
is stack pointer, and IP
is instruction pointer. Usually BP
is used for preserving space to use local variables. SP
is used to point the current stack. Although SP
can be modified easily, you must be cautious. It's because doing the wrong thing with this register could cause your program in ruin. IP
denotes the current pointer of the running program. It is always coupled with CS
and it is NOT modifiable. So, the couple of CS:IP
is a pointer pointing to the current instruction of running program. You can NOT access CS
nor IP
directly.