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

010 | [BP]+[SI] [BP]+[SI]+a8 [BP]+[SI]+a16

011 | [BP]+[DI] [BP]+[DI]+a8 [BP]+[DI]+a16

100 | [SI] [SI]+a8 [SI]+a16


101 | [DI] [DI]+a8 [DI]+a16

110 | a16 [BP]+a8 [BP]+a16

111 | [BX] [BX]+a8 [BX]+a16


Замечания. Если в команде не задан адрес, то он считается нулевым. Если адрес задан в виде байта (a8), то он автоматически расширяется со знаком до слова (a16). Случай mod=00 и mem=110 указывает на отсутствие регистров-модификаторов, при этом адрес должет иметь размер слова (ад­ресное выражение [BP] ассемблер транслирует в mod=01 и mem=110 при a8=0). Случай mod=11 соответствует формату "регистр-регистр".

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

| КОП |s|w| |11|КОП"|reg| |непосред.операнд (1-2 б)|

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

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

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

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

| КОП |s|w| |mod|КОП"|mem| |адрес (0-2б)| |непоср.оп (1-2б)|

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

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

Помимо рассмотренных в ПК используются и другие форматы команды с двумя операндами; так, предусмотрен специальный формат для команд, один из операндов которых фиксирован (обычно это регистр AX). Имеют свои форматы и команды с другим числом операндов.

1.3.3 Запись команд в MASM

Из сказанного ясно, что одна и та же операция в зависимости от ти­пов операдов записывается в виде различных машинных команд: например, в ПК имеется 28 команд пересылки байтов и слов. В то же время в MASM

все эти "родственные" команды записываются единообразно: например, все команды пересылки имеют одну и ту же символьную форму записи:

MOV op1,op2 (op1:=op2)

Анализируя типы операндов, ассемблер сам выбирает подходящую машинную команду.

В общем случае команды записываются в MASM следующим образом:

метка: мнемокод операнды ;комментарий

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

Мнемонические названия операций полностью перечислены в главе 2. Операнды, если есть, перечисляются через запятую. Основные правила

записи операндов следующие.

Регистры указываются своими именами, например:

MOV AX,SI ;оба операнда - регистры

Непосредственные операнды задаются константными выражениями (их значениями являются константы-числа), например:

MOV BH,5 ;5 - непосредственный операнд

MOV DI,SIZE X ;SIZE X (число байтов, занимаемых перемен­;ной X) - непосредственный операнд

Адреса описываются адресными выражениями (например, именами пере­менных), которые могут быть модифицированы по одному или двум регист­рам; например, в следующих командах первые операнды задают адреса:

MOV X,AH

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