Реферат: ЯЗЫК МАКРОАССЕМБЛЕРА IBM PC

ведется по модулю 2^16 ([r] означает содержимое регистра r):

A : Aисп = A

A[M] : Aисп = A+[M] (mod 2^16)

A[M1][M2]: Aисп = A+[M1]+[M2] (mod 2^16)

Полученный таким образом 16-разрядный адрес определяет т.н. смеще­ние - адрес, отсчитанный от начала некоторого сегмента (области) памя­ти. Перед обращением к памяти процессор еще добавляет к смещению на­чальный адрес этого сегмента (он хранится в некотором сегментном реги­стре), в результате чего получается окончательный 20-разрядный ад­рес, по которому и происходит реальное обращение к памяти (см. 1.4).

1.3.2 Форматы команд

В ПК форматы машинных команд достаточно разнообразны. Для примера приведем лишь основные форматы команд с двумя операндами.

1) Формат "регистр-регистр" (2байта):

------------- ----------------

| КОП |d|w| | 11 |reg1|reg2|

------------- ----------------

7 2 1 0 7 6 5 3 2 0

Команды этого формата описывают обычно действие reg1:=reg1_reg2 или

reg2:=reg2_reg1. Поле КОП первого байта указывает на операцию (_), ко­торую надо выполнить. Бит w определяет размер операндов, а бит d ука­зывает, в какой из регистров записывается результат:

w = 1 - слова d = 1 - reg1:=reg1_reg2

= 0 - байты = 0 - reg2:=reg2_reg1

Во втором байте два левых бита фиксированы (для данного формата), а трехбитовые поля reg1 и reg2 указывают на регистры, участвующие в опе­рации, согласно следующей таблице:


reg w=1 w=0 reg w=1 w=0 ----------------- ----------------­

000 AX AL 100 SP AH

001 CX CL 101 BP CH

010 DX DL 110 SI DH

011 BX BL 111 DI BH

2) Формат "регистр-память" (2-4 байта):


------------- ------------- -------------------

| КОП |d|w| |mod|reg|mem| |адрес (0-2 байта)|

------------- ------------- -------------------

Эти команды описывают операции reg:=reg_mem или mem:=mem_reg. Бит w первого байта определяет размер операндов (см. выше), а бит d указыва­ет, куда записывается результат: в регистр (d=1) или в ячейку памяти (d=0). Трехбитовое поле reg второго байта указывает операнд-регистр (см. выше), двухбитовое поле mod определяет, сколько байтов в команде занимает операнд-адрес (00 - 0 байтов, 01 - 1 байт, 10 - 2 байта), а трехбитовое поле mem указывает способ модификации этого адреса. В сле­дующей таблице указаны правила вычисления исполнительного адреса в за­висимости от значений полей mod и mem (a8 - адрес размером в байт, a16


- адрес размером в слово):

mem \ mod | 00 01 10

------------------------------------------------------­000 | [BX]+[SI] [BX]+[SI]+a8 [BX]+[SI]+a16

К-во Просмотров: 489
Бесплатно скачать Реферат: ЯЗЫК МАКРОАССЕМБЛЕРА IBM PC