SI和DI寄存器之间的实际区别是什么?

时间:2009-09-27 18:33:26

标签: assembly x86 cpu-registers

我没有得到什么区别。

4 个答案:

答案 0 :(得分:27)

当你使用像movsb这样的指令时,si被认为是 s 源寄存器,而di被认为是 d estination寄存器。但它们都是正常的x86寄存器。

答案 1 :(得分:11)

我的集会有点生疏,但其中一个是源索引,另一个是目的地索引。像movsb这样的指令将从SI指向的内存位置复制一个字节,并将其移动到DI指向的内存位置,然后递增两者,如果你想要的话要将存储在SI+1的字节复制到DI+1,它只需要进一步的movsb指令。

答案 2 :(得分:5)

SI代表源索引。源索引用作指向在字符串指令(LODS,MOVS或CMPS)中读取的当前字符的指针。在进行间接寻址时,源索引也可用作添加Bx或Bp的偏移量 例如:

MOV [Bx + SI] , Ax  

该指令将Ax的内容复制到存储单元中,该存储单元的地址是Bx和SI的总和。

DI代表目标索引,用作指向在字符串指令中写入或比较的当前字符的指针。

它也可以像SI那样作为偏移量使用。

答案 3 :(得分:0)

如上所述,di代表目标索引,si代表源索引,当我们想要从内存中移动数据时,我们使用si,例如mov ax,[si]。 当我们想要将数据移动到内存时,我们使用di。例如,mov [di],ax

都是16位寄存器,不能分成8位