我没有得到什么区别。
答案 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位