Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

Ответ 3

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

MOV [Bx + SI] , Ax  

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

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

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

Ответ 4

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

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