SI、DI、BX、BP是8086CPU可用来作指针使用的寄存器,一般用来表示一个偏移量,具体的和寻址方式有关。
SS、DS是段地址寄存器。
由于8086CPU是16的,而其存储容量可达1MB,也就是20位的寻址空间,因此编程时用两个16位的地址来表示,即
段地址:偏移地址,它和实际地址,也就是物理地址的关系是:
物理地址=段地址×16+偏移地址
对于上面的寄存器,当作地址使用时,根据寻址方式不同,有一种默认关系,只要指令中出现BP作地址的,则其段地址为SS,否则就为DS。当然还有段前缀一说,这要看实际情况来定了。
比如:
MOV
AX,[BX];则其物理地址=DS×16+BX
MOV
AX,[BP];则其物理地址=SS×16+BP
MOV
AX,[BX][SI]
;则其物理地址=DS×16+(BX+SI)
MOV
AX,[BP][SI];则其物理地址=SS×16+(BP+SI)