from:http://www.cnblogs.com/huzhongzhong/archive/2011/08/01/2123743.html
这里对这几个寄存器总结一下。
通用寄存器的主要用途
| 寄存器的分类 | 寄存器 | 主 要 用 途 | 
| 通 用 寄 存 器 | 数据   寄存器 | AX | 乘、除运算,字的输入输出,中间结果的缓存 | 
| AL | 字节的乘、除运算,字节的输入输出,十进制算术运算 | 
| AH | 字节的乘、除运算,存放中断的功能号 | 
| BX | 存储器指针 | 
| CX | 串操作、循环控制的计数器 | 
| CL | 移位操作的计数器 | 
| DX | 字的乘、除运算,间接的输入输出 | 
| 变址 寄存器
 | SI | 存储器指针、串指令中的源操作数指针 | 
| DI | 存储器指针、串指令中的目的操作数指针 | 
| 变址 寄存器
 | BP | 存储器指针、存取堆栈的指针 | 
| SP | 堆栈的栈顶指针 | 
| 指令指针 | IP/EIP |  | 
| 标志位寄存器 | Flag/EFlag |  | 
| 32位 CPU的 段寄存器 | 16位CPU的 段寄存器 | ES | 附加段寄存器 | 
| CS | 代码段寄存器 | 
| SS | 堆栈段寄存器 | 
| DS | 数据段寄存器 | 
| 新增加的 段寄存器
 | FS | 附加段寄存器 | 
| GS | 附加段寄存器 | 
这张表用来参照。(1)在8086CPU中只有这四个寄存器可以在[...]中进行内存单元的寻址。比如,下面的指令都是正确的:mov ax,[bx]mov ax,[bx+si]mov ax,[bx+di]mov ax,[bp]mov ax,[bp+si]mov ax,[bp+di]而下面都是错误的:mov ax,[cx]mov ax,[ax]mov ax,[dx]mov ax,[ds](2).在[...]中,这四个寄存器可以单独出现,或者只能以四种组合出现:bx和si、bx和di、bp和si、bp和di。比如下面都是正确的mov ax,[bx]mov ax,[si]mov ax,[di]mov ax,[bp]mov ax,[bx+si]mov ax,[bx+di]mov ax,[bp+si]mpv ax,[bp+di]mov ax,[bx+si+idata]mov ax,[bx+si+idata]mov ax,[bp+si+idata]mov ax,[bp+di+idata]下面就是错误的mov ax,[bx+bp]mov ax,[si+di](3)只要在[....]中使用寄存器bp,而指令汇总没有显示给出段地址,段地址就默认在ss中。 比如下面的指令。mov ax,[bp] 含义:(ax)=((ss)*16+(bp))mov ax,[bp+idata] 含义:(ax)=((ss)*16+(bp)+idata)mov ax,[bp+si] 含义:(ax)=((ss)*16+(bp)+(si))mov ax,[bp+si+idata] 含义:(ax)=((ss)*16+(bp)+(si)+idata)