Регистр DI очень похож на регистр SI в том плане, что его можно использовать в качестве указателя ячейки памяти. При использовании его в строковых инструкциях он имеет также особые свойства. Например:
mov ax,0
mov ds,ax
mov di,1024
add bl,[di]
lodsb
Здесь 8битовое значение, расположенное по адресу 1024, записывается в регистр BL. при использовании его в строковых инструкциях регистр DI несколько отличается от регистра SI. В то время как SI всегда используется в строковый инструкциях, как указатель на исходную ячейку памяти (источник), DI всегда служит указателем на целевую ячейку памяти (приемник). Кроме того, в строковых инструкциях регистр SI обычно адресуется к памяти относительно сегментного регистра DS, тогда как DI всегда адресуется к памяти относительно сегментного регистра ES. (Когда регистры SI и DI используются в качестве указателей на ячейки памяти в других инструкциях (не строковых), то они всегда адресуются к памяти относительно регистра DS.) Например:
cld
mov dx,0
mov es,dx
mov di,2048
stosb
Строковая инструкция STOSB используется здесь и для сохранения значения в регистре AL (по адресу памяти, на который указывает регистр DI), и для добавления к содержимому регистра DI 1. Однако мы несколько забежали здесь вперед: перед изучением строковых инструкций нам нужно сперва узнать о сегментах и сегментных регистрах. Строковые инструкции мы более детально обсудим в далее в данном руководстве.
