Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРОГРАММНАЯ ИНЖЕНЕРИЯ.docx
Скачиваний:
115
Добавлен:
09.09.2018
Размер:
2.83 Mб
Скачать

4.3.6. Индексная адресация

Этот метод адресации подобен предыдущему, только адрес операнда формируется сложением содержимого индексного регистра (SI или DI) и смещения. Если смещение не задано, то предполагается нулевое значение.

В индексной адресации можно использовать множитель 1, 2, 4 или 8 чтобы прочитать элемент равный соответственно – байту, слову, двойному или учетверенному слову. Это называется масштабированием индексного регистра.

Примеры: mov ax,[si] mov ax,[di] mov ax,12[di]

mov ax,[esi*4]+2

Индексная адресация имеет множество альтернативных форм. Так, эквивалентными формами являются:

смещение[SI] [смещение][SI] [SI+смещение] [SI].смещение [SI]+смещение

В каждом случае адрес операнда равен сумме значений указанного смещения и содержимого заданного индексного регистра.

4.3.7. Базовая-индекснаяадресация

Адрес операнда формируется сложением содержимого базового регистра (BP или BX) и индексного регистра (SI или DI), и смещения, если оно указано.

Если используется регистр BP, то адрес отсчитывается относительно сегмента, на который указывает регистр SS. В ином случае этот адрес отсчитывается относительно сегмента, на который указывает регистр DS.

Примеры:

mov ax,[bp][si] mov ax,12[bp+di] mov ax,[bx][si+2]

mov ax,2[bx][si]

Базово-индекснаяадресация имеет множество альтернативных форм. Так, эквивалентными формами являются:

смещение[BP][SI] [смещение][BP][SI] [BP+DI+смещение] [BP+DI].смещение [DI]+смещение+[BP]

В каждом случае адрес операнда равен сумме значений указанного смещения и содержимого заданных регистров. Можно комбинировать любой базовый регистр с любым индексным регистром, но комбинация двух базовых или двух индексных регистров не допускается.

  1. Математические операции языка Ассемблер.

Выполнение простейших арифметических действий на ассемблере можно выполнять с помощью обычных арифметических операторов: + (плюс), - (минус), * (умножение), / (целочисленное деление), MOD (остаток от деления). К арифметическим операторам относят также унарный плюс (+) и унарный минус (-),которые соответственно могут ставиться перед положительными и отрицательными числами. В выражениях могут использоваться также круглые скобки(). Часть выражения, заключенная в круглые скобки, вычисляется в первую очередь.

Примеры использования арифметических операторов:

  1. db 3+2*5

    ; db

    13

    db (8+3)*2

    ; db

    22

    mov al,14 / 4

    ; mov al,3

    mov al,14 mod 4

    ; mov al,2

    mov al,10 - +5

    ; mov al,5


    mov al,10 - -5; mov al,15

5.2.3.1. Сложение и вычитание

Основной инструкцией для сложения целых двоичных чисел является ADD, а для вычитания SUB.

Инструкция ADD складывает операнд-источниксоперандом-приемникоми записывает результат воперанд-приемник:

ADD приемник,источник

Инструкция SUB вычитает операнд-источникизоперанда-приемникаи записывает результат воперанд-приемник:

SUB приемник,источник

Пример: mov ax,10

add ax,6 ; ax=ax+6 sub ax,9 ; ax=ax-9

В результате выполнения этих инструкций в регистре AX окажется число 7.