В чем практическая разница между регистрами SI и DI?

StackOverflow https://stackoverflow.com/questions/1484134

  •  18-09-2019
  •  | 
  •  

Вопрос

Я не понимаю, в чем разница.

Это было полезно?

Решение

Когда вы используете такие инструкции, как movsb, si считается срегистр source, а di считается дрегистр назначения.Но они оба обычные регистры x86.

Другие советы

Моя сборка немного заржавела, но одна — индекс источника, другая — индекс назначения.Инструкция типа movsb скопирует байт из ячейки памяти, на которую указывает SI, и переместите его в ячейку памяти, на которую указывает DI, а затем увеличить оба, поэтому, если вы хотите скопировать байт, хранящийся по адресу SI+1 к DI+1, требуется только дополнительная инструкция movsb.

SI означает исходный индекс.Индекс источника используется в качестве указателя на текущий символ, считываемый в строковой инструкции (LODS, MOVS или CMPS).Индекс источника также доступен в качестве смещения для добавления Bx или Bp при косвенной адресации.
пример:

MOV [Bx + SI] , Ax  

Эта инструкция копирует содержимое Ax в ячейку памяти, адрес которой представляет собой сумму Bx и SI.

DI обозначает индекс назначения, используемый как указатель на текущий записываемый или сравниваемый символ в строковой инструкции.

Он также доступен в виде смещения, как и SI.

как сказано выше, di означает индекс назначения, а si — индекс источника. Когда мы хотим переместить данные из памяти, мы используем si, например, mov ax,[si].и когда мы хотим переместить данные в память, мы используем di.например, mov [ди],ax

оба являются 16-битными регистрами и не могут быть разделены на 8-битные.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top