Регистр DI


Регистр 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. Однако мы несколько забежали здесь вперед: перед изучением строковых инструкций нам нужно сперва узнать о сегментах и сегментных регистрах. Строковые инструкции мы более детально обсудим в далее в данном руководстве.

Загрузка...