Читать «Assembler. Программирование на языке ассемблера IBM PC» онлайн - страница 14

Unknown Author

[BX]+[SI]

[BX]+[SI]+a8

[BX]+[SI]+al6

[BX]+[DI]

[BX]+[DI]+a8

[BX]+[DI]+al6

[BP]+[SI]

[BP]+[SI]+a8

[BP]+[SI]+al6

[BP]+[DI]

[BP]+[DI]+a8

[BP]+[DI]+al6

[SI]

[SI]+a8

[SI]+al6

[DI]

[DI]+a8

[DI]+al6

al6

[BP]+a8

[BP]+al6

[BX]

[BX]+a8

[BX]+al6

Замечания. Если в команде не задан адрес, то он считается нулевым. Если адрес задан в виде байта (а8), то он автоматически расширяется до слова (а16). Случай mod=00 и mem=110 указывает на отсутствие регистров-модификаторов, причем адрес должен иметь размер слова. Случай mod=ll соответствует формату "регистр-регистр".

3) Формат "регистр - непосредственный операнд" (3-4 байта):

%

Команды этого формата описывают операции reg:=reg2im (im - непосредственный операнд). Бит w указывает на размер операндов, а поле reg - на регистр-операнд (см. выше). Поле КОП в первом байте определяет лишь группу операций, в которую входит операция данной команды, уточняет же операцию поле КОП' из второго байта. Непосредственный операнд может занимать 1 или 2 байта (в зависимости от значения бита w), при этом операнд размером в слово записывается в команде в "перевернутом" виде. Ради экономии памяти в ПК предусмотрен случай, когда в операции над словами непосредственный операнд может быть задан байтом (на это указывает 1 в бите s при w=l), и тогда перед выполнением операции байт автоматически расширяется до слова.

4) Формат "память - непосредственный операнд" (3-6 байтов):

КОП' mem

Команды этого формата описывают операции типа adr:=adr2im. Смысл всех полей - тот же, что и в предыдущих форматах.

Уже из рассмотренных форматов команд видно, что записывать машинные команды ПК в цифровом виде - вещь чрезвычайно неприятная. Сложности возникают и при записи данных; например, знаковые числа приходится представлять в дополнительном коде, а затем еще и "переворачивать". Поэтому нужен какой-то иной, более удобный способ записи команд и данных. И таким способом является язык ассемблера.

ДИАЛОГ-МИФИ"

ЯЗЫК АССЕМБЛЕРА. НАЧАЛЬНЫЕ СВЕДЕНИЯ

Команды сложения и вычитания

ПЕРЕХОДЫ. ЦИКЛЫ

МАССИВЫ. СТРУКТУРЫ

БИТОВЫЕ ОПЕРАЦИИ. УПАКОВАННЫЕ ДАННЫЕ

Глава 7. ПРОГРАММНЫЕ СЕГМЕНТЫ

СТЕК

9.6, Рекурсивные процедуры

МАКРОСРЕДСТВА

МНОГОМОДУЛЬНЫЕ ПРОГРАММЫ

На каждое двоично-десятичное число отводят соседни

1

   регистры общего назначения (АХ, ВХ, СХ, DX, SI, DI, BP, SP);

•    сегментные регистры (CS, DS, SS, ES);

•    указатель команд (IP);

•    регистр флагов (Bags).

2

   в квадратных скобках будем указывать конструкции, которые можно опускать; например, запись А[В]С означает либо текст АВС, либо текст АС;

•    в фигурные скобки будем заключать конструкции, которые могут быть повторены любое число раз, в том числе и ни разу; например, запись А {ВС) означает любой из следующих текстов: А, АВС, АВСВС, АВСВСВС и т. д.

ЯЗЫК АССЕМБЛЕРА. НАЧАЛЬНЫЕ СВЕДЕНИЯ