Assembler для начинающих


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



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


    В  процессоре 8088 имеется четыре 16-битовых регистров, которые мо-
    гут принимать  участие в адресации операндов.  Один из них является
    одновременно регистром общего назначения  - регистр базы BX. Другие

           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 Адресация операндов
    три  - это    указатель базы    (Base Poiner  - BP),  индекс источника
    (Source Index -  SI) и индекс назначения (Destination  Index - DI).
    Программа  может  использовать  регистры  BP,  SI  и  DI в качестве
    16-битовых операндов, но отдельные байты в них недоступны. Основное
    назначение    этих   регистров  -  поставлять   16-битовые  значения,
    используемые в формировании адресов операндов.
      Каждая команда в 8088 задает для выполнения некоторую операцию.
    Разные операции  могут иметь от  нуля до двух  операндов. Например,
    команде  разрешения  прерываний  Set  Interrupt  (STI)  операнды не
    нужны. Команда увеличения (INC)  требует, чтобы программист опреде-
    лил  один операнд,  - регистр  или ячейку  памяти, - который должен
    быть увеличен  на еденицу. Команда ADD  (сложение) должна иметь два
    операнда -    складываемые величины. Некоторые  команды неявно задают
    расположение операнда, но большинство команд позволяют программисту
    выбирать  в качестве  операнда регистр  или ячейку      памяти. Если  в
    качестве операнда  выбран регистр, то  программисту остается только
    указать его имя. Для указания же в качестве операнда участка памяти
    у вас есть много различных способов.
      Хорошим  примером служит  команда INC.    Она имеет  единственный
    операнд.  На Фиг.  3.2 изображен  листинг ассемблера  с несколькими
    различными вариантами  команды INC. Первая  команда INC называет  в
    качестве операнда регистр BX. Заметим,  что в поле операндов в этом
    случае кроме BX ничего нет. Остальные команды в примере указывают в
    качестве операнда ячеку памяти. И  хотя в них иногда появляется имя
    регистра BX,  он не является здесь    самим операндом, а используется
    для определения его адреса.




Содержание раздела