Статус
нашего
сайта:
ICQ Secrets Center is Online  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

Таненбаум Э.- Архитектура компьютера. стр.565


Таненбаум Э.- Архитектура компьютера. стр.565

Некоторые отличия от других ассемблеров 8088

Ассемблер as88 построен по модели стандартного ассемблера UNIX, в связи с чем он в некоторых отношениях довольно существенно отличается от макроассемблера Microsoft MASM и ассемблера Borland 8088 TASM. И MASM, и TASM были разработаны для операционной системы MS-DOS, и связь операционной системы и ассемблера в определенных аспектах прослеживается весьма отчетливо. MASM и TASM поддерживают все модели памяти 8088, поддерживаемые MS-DOS. К примеру, в них предусмотрены миниатюрная модель памяти, в которой весь код и все данные, вместе взятые, должны умещаться в 64 Кбайт, малая модель, где по 64 Кбайт отводится под каждый из этих сегментов, и большая модель, допускающая наличие множества кодовых сегментов и сегментов данных. Различия между этими моделями зависят от способа применения сегментных регистров. В большой модели можно выполнять дальние вызовы и изменять регистр DS. Процессор сам по себе налагает некоторые ограничения на сегментные регистры (например, регистр CS не может быть целевым адресом в команде M0V). Для упрощения трассировки в as88 применяется модель памяти, сходная с малой, хотя ассемблер и без помощи трассера может обрабатывать сегментные регистры без каких-либо дополнительных ограничений.

В двух вышеупомянутых ассемблерах нет секции BSS, а инициализируют память они только в секциях данных. Обычно код на языке ассемблера начинается с заголовка в том или ином виде; затем следует секция данных, обозначаемая ключевым словом .data, после чего пишется текст программы с ключевым словом .code. В заголовке используются ключевые слова title (название программы), .model (модель памяти) и .stack (резервирование памяти для стекового

сегмента). Если целевой двоичный файл должен быть записан с расширением .com, применяется миниатюрная модель памяти; при этом все сегментные регистры уравниваются, а в начале объединенного сегмента 256 байт резервируются для «префикса сегмента программы».

Вместо директив .WORD .BYTE и ASCIZ в ассемблерах TASM и MASM применяются ключевые слова DW (определение слова) и DB (определение байта). После директивы DB может быть помещено определение строки в двойных кавычках. После меток в определениях данных двоеточия не ставятся. Крупные блоки памяти инициализируются ключевым словом DUP; перед ним указывается число байтов, а после него определяется инициализация. Например:

LABEL DB 1000 DUP (0)

Этот оператор инициализирует 1000 байт памяти байтами ASCII-нулей по адресу метки LABEL.

После меток подпрограмм устанавливается не двоеточие, а ключевое слово PR0C. В конце подпрограммы эта метка дублируется, а после нее ставится ключевое слово ENDP, которое позволяет ассемблеру определить точную область действия подпрограммы. Локальные метки не поддерживаются.

Ключевые слова, применяемые с командами, идентичны в MASM, TASM и as88. Кроме того, в командах с двумя операндами исходный операнд ставится после целевого. С другой стороны, чаще всего для передачи аргументов функциям используется не стек, а регистры. Если же программы на языке ассемблера вставляются в программы на С или С++, стек предпочтительнее, поскольку он согласуется с механизмом вызова подпрограмм С. Это не очень принципиально, поскольку в as88 стек можно заменить регистрами.


⇐ Предыдущая страница| |Следующая страница ⇒

.