代码之家  ›  专栏  ›  技术社区  ›  tatsuhirosatou

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

  •  16
  • tatsuhirosatou  · 技术社区  · 15 年前

    我不知道有什么区别。

    4 回复  |  直到 11 年前
        1
  •  27
  •   Pierre Bourdon    15 年前

    当您使用MOVSB之类的指令时,si被认为是 S 源寄存器,而DI被认为是 D 评估登记簿。但它们都是正常的x86寄存器。

        2
  •  11
  •   Michiel Buddingh    15 年前

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

        3
  •  5
  •   Radim Köhler user2134822    11 年前

    SI 代表源索引。源索引用作在字符串指令(LOD、MOV或CMP)中读取的当前字符的指针。在进行间接寻址时,源索引也可用作添加BX或BP的偏移量。
    例子:

    MOV [Bx + SI] , Ax  
    

    此指令将AX的内容复制到地址为BX和SI之和的内存位置。

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

    它也可以作为偏移量使用,就像si一样。

        4
  •  0
  •   anjali dhasmana    15 年前

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

    两者都是16位寄存器,不能拆分为8位