Статус нашего сайта: |
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 |
Таненбаум Э.- Архитектура компьютера. стр.548Если адреса в четырех сегментных регистрах значительно отстоят друг от друга, эти сегменты разделяются, однако в условиях ограниченного объема доступной памяти разделять их не обязательно. Объем программного кода после компиляции неизвестен. Поэтому эффективнее всего размещать начальную границу сегмента данных и стекового сегмента через первое кратное 16 значение после последней команды. В этом решении подразумевается, что кодовый сегмент и сегмент данных ни при каких обстоятельствах не будут использовать один и тот же физический адрес. Адресация Для выполнения абсолютного большинства команд требуются данные, которые извлекаются либо из памяти, либо из регистров. Для именования этих данных в 8088 предусмотрено несколько режимов адресации. Многие команды содержат по два операнда, которые в этом случае обычно называются исходным (источник) и целевым (приемник). Возьмем для примера команды копирования и сложения: MOV АХ.ВХ ADD СХ.20 Первые операнды в этих командах являются приемниками, а вторые — источниками. (Их очередность не принципиальна; она с тем же успехом могла бы быть обратной.) Очевидно, что в таком случае приемник является левым значением, то есть в этом месте должно располагаться перезаписываемое значение. Следовательно, целевые операнды, в отличие от исходных, не могут быть константами. В первоначальном проектном решении 8088 один из операндов в случае, если в команде их два, обязательно должен был быть регистром. Предполагалось, что это требование позволит различать команды обработки байтов и слов, исходя из того, является ли адресуемый регистр регистром для байтов или для слов. В первой версии процессора это правило соблюдалось с неимоверной строгостью. Невозможно было даже ввести в стек константу, поскольку в таком случае ни в одном из двух операндов команды не было бы ни одного регистра. В последующих версиях ограничения были смягчены, но сам принцип оказал определенное влияние на конструктивное решение процессора. В некоторых случаях один из двух операндов не упоминается. Например, в команде MULB роль приемника может выполнять только регистр АХ. Существуют также команды с одним операндом. В эту категорию входят, помимо прочего, команды приращения, сдвига и сброса. В этих командах требование о применении регистра в качестве операнда не действует, и различать команды обработки байтов и слов можно только по кодам операций (то есть типам команд). Процессор 8088 поддерживает четыре базовых типа данных: байт, слово (2 байта), длинное слово (4 байта) и двоично-десятичное число, в котором в слово упаковываются 2 десятичные цифры. Последний тип не поддерживается интерпретатором. Адрес в памяти всегда соответствует байту, но в случае с обычным или длинным словом также присутствует неявное указание на ячейки памяти, находящиеся непосредственно над указанным байтом. К примеру, слово, расположенное по адресу 20, занимает ячейки памяти 20 и 21. Длинное слово по адресу 24 занимает ячейки 24, 25, 26 и 27. Процессор 8088 является системой с обратным порядком следования байтов (little endian); это означает, что часть слова меньшего порядка хранится по младшему адресу. В стековом сегменте слова должны размещаться по четным адресам. Комбинация АХ DX, где в АХ содержится слово меньшего порядка, является единственно возможным вариантом размещения длинных слов в регистрах процессора 8088. |