Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ассемблер.doc
Скачиваний:
26
Добавлен:
25.08.2019
Размер:
526.34 Кб
Скачать

3.3. Регистры адресации

В процессоре 8088 имеется четыре 16-битовых регистров, которые могут принимать участие в адресации операндов. Один из них является одновременно регистром общего назначения - регистр базы BX. Другие три - это указатель базы (Base Poiner- BP), индекс источника (Source Index -SI) и индекс назначения (DestinationIndex - DI). Программа может использовать регистры BP, SIи DI в качестве 16-битовых операндов, но отдельные байты в них недоступны. Основное назначение этих регистров - поставлять 16-битовые значения, используемые в формировании адресов операндов.

Microsoft (R) Macro Assembler Version 5.00 11/17/88 21:42:25

Фиг 3.2 Адресация операндов Page 1-1

PAGE ,132

TITLE Фиг 3.2 Адресация операндов

0000                  CODE   SEGMENT

                   ASSUME CS:CODE,DS:CODE,SS:CODE

0123                    ORG    123H

0123 ????              OPND DW     ?

0200       ORG    200H

0200 43                    INC     BX          ;Увеличение регистра

0201 FF 06 0123 R              INC     OPND     ;Увеличение ячейки памяти

0205 FF 07                INC     WORD PTR [BX] ;Увеличение слова памяти

0207 FF 87 0123 R              INC     [OPND+BX]     ;Смещение плюс индекс

020B FF 84 0123 R              INC     [OPND+SI]

020F FF 84 0123 R              INC     OPND[SI]        ;Другой способ - тот же результат

0213 FF 85 0123 R              INC     OPND + [DI]

0217 FF 86 0123 R              INC     [OPND] + [BP]

021B FF 00                 INC     WORD PTR [BX+SI]  ;База плюс индекс

021D FF 03                 INC     WORD PTR [BP]+[DI]

021F FF 81 0123 R              INC     [OPND+BX+DI] ;База + индекс + смещение

0223 FF 82 0123 R              INC     OPND[BP][SI]

0227                 CODE   ENDS

                      END

Фиг 3.2 Адресация операндов

Каждая команда в 8088 задает для выполнения некоторую операцию. Разные операции могут иметь от нуля до двух операндов. Например, команде разрешения прерываний Set Interrupt (STI) операнды не нужны. Команда увеличения (INC) требует, чтобы программист определил один операнд, - регистр или ячейку памяти, - который должен быть увеличенна еденицу. Команда ADD (сложение) должна иметь два операнда - складываемые величины. Некоторые команды неявно задают расположение операнда, но большинство команд позволяют программисту выбирать в качестве операнда регистр или ячейку памяти. Если в качестве операнда выбран регистр, топрограммисту остается только указать его имя. Для указания же в качестве операнда участка памяти у вас есть много различных способов. Хорошим примером служит команда INC. Она имеет единственный операнд. На Фиг. 3.2 изображен листинг ассемблерас несколькими различными вариантами команды INC. Первая команда INC называет в качестве операнда регистр BX. Заметим, что в поле операндов в этом случае кроме BX ничего нет. Остальные команды в примере указывают в качестве операнда ячеку памяти. И хотя в них иногда появляется имя регистра BX,он не является здесь самим операндом, а используется для определения его адреса.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]