Структура программы на ассемблере. — КиберПедия 

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...

Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...

Структура программы на ассемблере.

2020-10-20 91
Структура программы на ассемблере. 0.00 из 5.00 0 оценок
Заказать работу

       Программа на ассемблере представляет собой последовательность строк. Строка может содержать:

1. Метку команды. Она представляет собой имя, заканчивающиеся двоеточием. Имя – последовательность символов, начинающихся с буквы или знака подчеркивания.

2. Команду (инструкцию). Любая команда ассемблера представляется в виде инструкции и операндов (операндов может не быть). Операнд – данные, с которыми манипулирует команда. Для удобства описания команд в таблице 3.1. приводятся обозначения операндов (цифра в обозначении указывает на количество бит в операнде).

3. Комментарий. Любая запись после точки с запятой (;).

4. Определение ячейки памяти. Состоит из имени (его может не быть), через пробел последовательность DB – байт (или DW – слово, или DD – двойное слово) и число, хранящееся в этой ячейке.

5. Метку команды и команду.

6. Метку команды, команду и комментарий

7. Некоторые другие комбинации первых четырёх пунктов.

 

Таблица 3.5.

Местонахождение операнда Обозначение Запись на ассемблере
в команде i8, i16, i32 константное выражение
в регистре общего назначения r8, r16 имя регистра
в сегментном регистре sr имя регистра
в ячейке памяти m8, m16, m32 адресное выражение

 

  Описание некоторых команд ассемблера.

Команды пересылки.

       Команда MOV:     MOV op1,op2

где допустимы следующие комбинации операндов:

op1 r8 m8 r16 sr (кроме CS) m16
op2 i8, r8, m8 i8, r8 i16,r16,sr,m16 r16, m16 i16, r16,sr

       По команде MOV содержимое op2 пересылается в op1.

       Команда XCHG:  xchg op1,op2

где допустимы следующие комбинации операндов:

op1 r8 m8 r16 m16
op2 r8, m8 r8 r16, m16 r16

       По команде XCHG содержимое операндов меняется местами.

 

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

     Сложение: add op1,op2

       Вычитание: sub op1,op2

       Сравнение: cmp op1,op2

       Комбинации операндов такие же, как и в команде XCHG, op2 может быть также константным выражением (i8 или i16).

       По командам ADD и SUB в op1 пересылается сумма или разность op1 и op2 соответственно. Эти команды влияют на флаги переноса CF, переполнения OF, знака SF и нуля ZF.

       Флаг CF устанавливается в 1, если при выполнении произошел перенос или заём. Флаг знака становится равным старшему биту результата, который используется как знаковый при представлении двоичных данных как целых чисел со знаком. Флаг переполнения устанавливается в 1, если результат не вмещается в размер операндов при представлении их содержимого как чисел со знаком. Флаг нуля устанавливается в 1, если результат равен нулю.

       Команда CMP аналогична команде SUB, только не происходит запоминание результата. Команда CMP лишь устанавливает флаги.

 

       Увеличение на 1: inc op

       Уменьшение на 1: dec op

       Операнд может быть следующим: r8, m8, r16, m16.

       После выполнения этих команд значение операнда увеличивается или уменьшается на 1. В отличие от команд сложения и вычитания, INC и DEC не влияют на флаг CF.

 

Команды перехода.

       Безусловный переход:     jmp op

где оp может быть меткой команды, на которую осуществляется переход; регистром или ячейкой памяти, в которых хранится адрес команды, на которую осуществляется переход.

       По команде JMP выполнение программы осуществляется с команды, адресуемой в операнде.

       Условный переход:        jxx op

где xx – условие перехода, op – метка команды.

       По команде Jxx выполнение программы продолжается с команды, адресуемой в операнде, если выполняется условие xx, или с команды, следующей за командой Jxx, если условие xx не выполняется.

       xx может содержать название флага, тогда переход будет осуществлен, если соответствующий флаг равен 1 (например jz op – переход при ZF=1); букву n и название флага, тогда переход будет осуществлен, если соответствующий флаг равен 0 (например jnz op – переход при ZF=0); аббревиатуру условия перехода, тогда переход осуществится при выполнении этого условия. Аббревиатуру составляют буквы, символизирующие следующие условия:

       E – equal (равно);

       N – not (не);

       G – greater (больше) – для чисел со знаком;

       L – less (меньше) – для чисел со знаком;

       A – above (больше) – для чисел без знака;

       B – below (меньше) – для чисел без знака.

       Например: NE – не равно; NGE – не больше и не равно, т.е. L – меньше.

       Условие перехода формируется набором флагов, которые устанавливаются в соответствии с результатом работы команды, предшествующей инструкции Jxx.

       Флаг – это бит в регистре флагов F. Регистр F является 16-ти разрядным, но только 9 разрядов отводятся под флаги, значение остальных разрядов документацией не определено.

       CF (carry flag) – флаг переноса.

       OF (overflow flag) – флаг переполнения.

       ZF (zero flag) – флаг нуля.

       SF (sign flag) – флаг знака.

       PF (parity flag) – флаг четности.

       AF (auxiliary carry flag) – флаг дополнительного переноса.

       DF (direction flag) – флаг направления.

       IF (interrupt flag) – флаг прерываний.

       ТF (trap flag) – флаг трассировки.

 

Логические команды.

       Логические команды влияют на все флаги.

       Отрицание: not op

       По этой команде каждый бит операнда меняет своё значение на противоположное. Операнд может быть следующим: r8, m8, r16, m16.

       Конъюнкция: and op1,op2

       Сочетание операндов такое же, как и в команде ADD.

       Команда AND производит поразрядное логическое умножение операндов, результат записывается на место первого операнда.

       Проверка:  test op1,op2

       Команда TEST аналогична команде AND, но результат никуда не записывается. Помещая в оp2 маску, можно проверить, установлены ли в ноль соответствующие биты op1.

       Дизъюнкция: or op1,op2

       Допустимые сочетания операндов – как и в команде AND.

       Команда OR производит побитовое логическое сложение операндов.

                   Исключающее ИЛИ: xor op1,op2

       Допустимые сочетания операндов – как и в команде AND.

       Команда XOR производит побитно операцию XOR. Команду XOR удобно использовать для инвертирования конкретных битов оp1.

 

Команды сдвига.

       Команды сдвига влияют на все флаги.

       Логический сдвиг влево на 1 разряд:    shl op,1

       Логический сдвиг влево на k разрядов: shl op,cl

       Логический сдвиг вправо на 1 разряд:  shr op,1

       Логический сдвиг вправо на k разрядов: shr op,cl

       При логическом сдвиге влево или вправо биты операнда сдвигаются на один разряд влево или вправо соответственно. При этом бит, уходящий за пределы размеров операнда, заносится в CF, а освобождающийся разряд принимает значение 0. При сдвиге на k разрядов, число k заносится в регистр CL.

Перечисленных выше команд достаточно для понимания управляющих программ (УП), рассмотренных в этом пособии. Более подробную информацию о командах МП ВМ86 можно найти в [1] и [3].

 


Поделиться с друзьями:

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.02 с.