Лабораторная работа № 2. Целью работы является разработка простой программы преобразования данных для приобретения практических навыков программирования на языке ассемблера и

Режимы адресации

ЦЕЛЬ РАБОТЫ

Целью работы является разработка простой программы преобразования данных для приобретения практических навыков программирования на языке ассемблера и закрепления знаний по режимам адресации.

ОСНОВНЫЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

Команды ассемблера

Программа на языке ассемблера представляет собой последовательность операторов, описывающих выполняемые действия. Оператором (строкой) исходной программы может быть или команда, или псевдооператор (директива) ассемблера.

Команды представляют краткую нотацию (запись) системы команд. В некоторых руководствах они называются машинными командами, т.к. именно они сообщают процессору, какие действия необходимо выполнять. В отличие от команд псевдооператоры сообщают (транслятору), что ему делать с командами и данными, которые вводятся в программу.

Команда может включать до 4-х полей следующего вида:

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

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

GETCOUNT: MOV CX,DX ;инициализация счетчика, поместить содержимое регистра DX в регистр CX

Пример команды с полем мнемокода:

PUSHF

Эта команда сохраняет в стеке содержимое регистра флагов.

Перечень команд ассемблера, применяемых во всех моделях микропроцессоров Intel приводится в приложении 2.

В качестве операнда в команде может фигурировать константа, которая может вводиться в следующих формах:

а) двоичной, как последовательность цифр 0 и 1, заканчивающихся буквой В, например, 10111010В;

б) десятичной, в привычной десятичной системе счисления с необязательной буквой D на конце, например, 129D или просто 129;

в) шестнадцатеричной, как последовательность цифр от 0 до 9 и букв от A до F, заканчивающаяся буквой H. Если шестнадцатеричная константа начинается с буквы, то такая константа дополняется первым символом - цифрой от 0 до 9, например, 0E23H (в данном случае первая цифра информирует Ассемблер о том, что E23 число, а не идентификатор или переменная);

г) литералом, в виде строки букв, цифр и других символов, заключенной в кавычки или апострофы.

Мнемокоды могут иметь от 2 до 6 букв, при трансляции мнемокод преобразуется в числовое значение по таблице перекодировки (внутри транслятора). Мнемокоды имеют жесткий формат, предусматривающий 1,2 или отсутствие операндов. Если операндов 2 , они отделяются друг от друга запятой.

Нельзя использовать в качестве меток имена регистров и мнемокоды, кроме того метка должна начинаться с буквы, но может содержать цифры и специальные символы: ?, @/, _, $ и точку, однако точка может быть только первым символом метки.

Важной особенностью машинных команд является то, что они не могут манипулировать одновременно 2-мя операндами, находящимися в оперативной памяти (ОЗУ). Это означает, что в команде только 1 операнд может указывать на ячейку ОЗУ, другой операнд должен быть либо регистром, либо непосредственным значением. По этой причине возможны следующие сочетания операндов в команде:

а) регистр - регистр;

б) регистр - память;

в) память – регистр;

г) регистр - непосредственный операнд;

д) память - непосредственный операнд.

Для команд характерно, что при наличии двух операндов первый из них является приемником, а второй – источником. Результат операции сохраняется по первому адресу, вот почему первый операнд никогда не может быть непосредственным операндом или, иначе говоря, константой.

Наши рекомендации