ВУЗ:
Составители:
24
1.3.5. Адресация по базе со сдвигом
Теперь скомбинируем два предыдущих метода адресации: следующая
команда
mov ax,[bx]+2
помещает в регистр AX слово, находящееся в сегменте, указанном в DS, со
смещением на 2 большим, чем число, находящееся в BX. Так как слово занимает
ровно два байта, эта команда поместила в AX слово, непосредственно следующее
за тем, которое есть в предыдущем примере. Такая форма адресации используется
в тех случаях, когда в регистре находится адрес начала структуры данных, а
доступ надо осуществить к какому-нибудь элементу этой структуры. Другое
важное применение адресации по базе со сдвигом — доступ из подпрограммы к
параметрам, данным в стеке, используя регистр BP в качестве базы и номер
параметра в качестве смещения.
До 80386 в качестве базового регистра можно было использовать только BX,
BP, SI или DI и
сдвиг мог быть только байтом или словом (со знаком). С помощью
этого метода можно организовывать доступ к одномерным массивам байт:
смещение соответствует адресу начала массива, а число в регистре — индексу
того элемента массива, который надо обработать.
1.3.6. Адресация по базе с индексированием
В этом методе адресации смещение операнда в памяти
вычисляется как
сумма чисел, содержащихся в двух регистрах, и смещения, если оно указано:
mov ax,[bx+si]+2
В регистр AX помещается слово из ячейки памяти со смещением, равным
сумме чисел, содержащихся в BX и SI, и числа 2. Из шестнадцатибитных
регистров так можно складывать только BX+SI, BX+DI, BP+SI и BP+DI. Так
можно прочитать, например, число из двумерного массива: если задана таблица
10x10 байт, 2 — смещение ее начала от начала сегмента данных, BX = 20, а SI = 7,
приведенная команда прочитает слово, состоящее
из седьмого и восьмого байт
третьей строки.
24 1.3.5. Адресация по базе со сдвигом Теперь скомбинируем два предыдущих метода адресации: следующая команда mov ax,[bx]+2 помещает в регистр AX слово, находящееся в сегменте, указанном в DS, со смещением на 2 большим, чем число, находящееся в BX. Так как слово занимает ровно два байта, эта команда поместила в AX слово, непосредственно следующее за тем, которое есть в предыдущем примере. Такая форма адресации используется в тех случаях, когда в регистре находится адрес начала структуры данных, а доступ надо осуществить к какому-нибудь элементу этой структуры. Другое важное применение адресации по базе со сдвигом — доступ из подпрограммы к параметрам, данным в стеке, используя регистр BP в качестве базы и номер параметра в качестве смещения. До 80386 в качестве базового регистра можно было использовать только BX, BP, SI или DI и сдвиг мог быть только байтом или словом (со знаком). С помощью этого метода можно организовывать доступ к одномерным массивам байт: смещение соответствует адресу начала массива, а число в регистре — индексу того элемента массива, который надо обработать. 1.3.6. Адресация по базе с индексированием В этом методе адресации смещение операнда в памяти вычисляется как сумма чисел, содержащихся в двух регистрах, и смещения, если оно указано: mov ax,[bx+si]+2 В регистр AX помещается слово из ячейки памяти со смещением, равным сумме чисел, содержащихся в BX и SI, и числа 2. Из шестнадцатибитных регистров так можно складывать только BX+SI, BX+DI, BP+SI и BP+DI. Так можно прочитать, например, число из двумерного массива: если задана таблица 10x10 байт, 2 — смещение ее начала от начала сегмента данных, BX = 20, а SI = 7, приведенная команда прочитает слово, состоящее из седьмого и восьмого байт третьей строки.
Страницы
- « первая
- ‹ предыдущая
- …
- 22
- 23
- 24
- 25
- 26
- …
- следующая ›
- последняя »