Читать «Assembler. Программирование на языке ассемблера IBM PC» онлайн - страница 27
Unknown Author
В целом выражения. Я А походки на арифметйчесКйе выражения языка высокого уровня, однако между ними есть и отличия. Наиболее важное отличие заключается в том, что выражения ЯА вычисляются не во время выполнения программы, а во время ее трансляции: встретив в Тексте программы выражение, ассемблер вычисляет его и полученное значение (например, число) записывает в машинную программу. Поэтому, когда программа начнет выполняться, от выражений не останется никаких. следов. В <?йязи с этим: в выраженйях ЯД. можно использовать только такие величины, которые известны на этапе трансляции (например; адреса й типы имен), и ни в кое случае нельзя использовать величины (например, содержимое регистров или ячеек памяти), которые станут известными лишь во время счета программы.
Вообще говоря, в Я А для записи операндов директив и команд достаточно только чисел и имен. Более сложные выражения являются лишь удобной формой записи этих чисел и имен. Например, если имеется переменная X размером в слово и нужно описать переменную ТХ, начальным значением которой является тип (размер) этой переменной, то вместо директивы
тх DB 2 лучше использовать эквивалентную ей директиву
ТХ DB ТУРЕ X
поскольку она более универсальна и ее не надо менять, если изменится тип переменной X.
В ЯА выражения делятся на два класса - на константные и адресные, в зависимости от типа их значений. Если значением выражения является целое число, то оно называется константным выражением, а если значением является адрес, то это адресное выражение. Конечно, адрес - это тоже целое число (порядковый номер ячейки в памяти), но по смыслу адреса отличаются от просто чисел, и в ЯА они рассматриваются как самостоятельный тип данных.
Отметим, что выражений иных типов в ЯА нет, однако имеются объекты (например, строки и имена регистров), которые не относятся ни к константным, ни к адресным выражениям, но которые также используются для записи операндов команд и директив.
По структуре и назначению выражения, константные и адресные, можно разделить на простейшие выражения и операторы. Из простейших выражений строятся любые другие выражения. К простейшим выражениям относятся числа, имена констант, имена переменных и т. п. Термином "оператор” в ЯА принято обозначать то, что мы обычно называем функциями и операциями. Операторы ЯА делятся на одноместные (это аналог функций одного аргумента) и двухместные (это аналог бинарных операций); примером может служить TYPE X или А+1. С помощью операторов из простейших выражений строятся более сложные выражения.
С простейшими выражениями и операторами мы будем знакомиться по ходу дела. Однако уже сейчас укажем старшинство всех операторов ЯА (в порядке убывания; в каждой строке указаны операторы одного старшинства):
I. (), [], LENGTH, SIZE, WIDTH, MASK
3. :
4. PTR, OFFSET, SEG, TYPE, THIS
5. HIGH, LOW
6. одноместные + и -
7. *, /, MOD, SHL, SHR
8. двухместные + и -
9. EQ, NE, LT, LE, GT, GE
10. NOT
II. AND
12. OR, XOR
13. SHORT, .TYPE