Статус нашего сайта: |
ICQ Information Center |
ICQ SHOP 5-значные 6-значные 7-значные 8-значные 9-значные Rippers List ОПЛАТА СТАТЬИ СЕКРЕТЫ HELP CENTER OWNED LIST РОЗЫСК!New! ICQ РЕЛИЗЫ Протоколы ICQ LOL ;-) Настройка компьютера Аватарки Смайлики СОФТ Mail Checkers Bruteforces ICQTeam Soft 8thWonder Soft Other Progs ICQ Patches Miranda ICQ ФорумАрхив! ВАШ АККАУНТ ICQ LiveJournal
РекламаНаш канал:irc.icqinfo.ru |
Таненбаум Э.- Архитектура компьютера. стр.562В ассемблере имеются три секции, в которых хранятся транслируемый код и данные. Разделение на секции соответствует сегментации памяти. Первая секция, секция текста, предназначена для хранения команд процессора. Следующая секция, секция данных, служит для инициализации памяти в сегменте данных, который к началу процесса становится известен. Последняя секция, секция BSS (Block Started by Symbol — блок с начальным символом), нужна для резервирования памяти в неинициализированном (точнее говоря, в инициализированном нулем) сегменте данных. В каждой из трех секций есть собственный счетчик адресов. Секции задумывались для того, чтобы ассемблер мог сгенерировать не сколько команд, затем перейти к данным, затем вернуться к командам, потом снова к данным, и т. д., а компоновщик, в свою очередь, мог скомпоновать все эти блоки так, чтобы все команды оказались вместе в текстовом сегменте, а все слова данных — в сегменте данных. Результат обработки любой отдельно взятой строки на языке ассемблера попадает только в одну из секций, хотя строки кода и строки данных могут чередоваться. В период выполнения секция текста хранится в текстовом сегменте, а секции данных и BSS — последовательно в сегменте данных. Как команда, так и слово данных в программе на языке ассемблера может начинаться с метки. Метка также может быть единственным содержанием строки, и в этом случае она считается относящейся к следующей команде или слову данных. Пример: CMP АХ,ABC JE L MOV AX.XYZ L: Здесь L — метка, связанная со следующей командой или словом. Метки бывают двух видов. Во-первых, существуют глобальные метки, представляющие собой буквенно-цифровые идентификаторы, после которых ставится двоеточие (:). Такие метки должны быть уникальными; они не могут совпадать с ключевыми словами и мнемоническими кодами команд. Во-вторых, в секции текста встречаются локальные метки, каждая из которых состоит из одной цифры с последующим двоеточием (:). Локальная метка может устанавливаться многократно. Например: JE 2f Эта команда означает операцию перехода JUMP EQUAL вперед до следующей локальной метки 2. Аналогично: jne 4Ь Эта команда означает операцию перехода JUMP NOT EQUAL назад к ближайшей локальной метке 4. Ассемблер допускает присвоение константам символических имен в рамках синтаксической конструкции идентификатор = выражение Здесь идентификатор является буквенно-цифровой строкой, как в следующем примере: BLOCKSIZE = 1024 Во всех идентификаторах в рассматриваемом языке ассемблера значимыми являются только первые восемь символов. Таким образом, идентификаторы BLOCKSIZE, BLOCKSIZZ и BL0CKSIZ идентичны. Выражения могут состоять из констант, численных значений и операторов. Поскольку численные значения меток становятся известными к завершению первого прохода, они приравниваются к константам. Численные значения могут быть восьмеричными (в таком случае они начинаются с нуля), десятеричными или шестнадцатеричными (начинаются с сим волов ОХ или Ох). В шестнадцатеричном представлении буквы а-£ и А-Б обозначают значения от 10 до 15. Целочисленные операторы +,-,*,/ и % выражают сложение, вычитание, умножение, деление и остаток о деления, соответственно. Логические операторы &, * и ~ обозначают поразрядное И, поразрядное ИЛИ и логическое отрицание (НЕ), соответственно. Для группировки в выражениях могут устанавливаться квадратные скобки. Во избежание путаницы круглые скобки в выражениях не используются (оставлены для задания режимов адресации). |