Статус нашего сайта: |
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Некоторые отличия от других ассемблеров 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 стек можно заменить регистрами. |