Статус нашего сайта: |
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 |
Таненбаум Э.- Архитектура компьютера. стр.560Например: printf(??x = %6 and у = *d\n??. х, у); Этот вызов заменяет при выводе численные значения х и у строками Хй из форматной строки. В целях совместимости с языком С в стеке сначала размещается аргумент у, затем — х, и в завершение — адрес форматной строки. Это соглашение обуславливается тем, что у процедуры printf переменное число параметров, и при условии их размещения в стеке в обратном порядке форматная строка всегда остается последней. Если бы параметры размещались в стеке слева направо, форматная строка оказалась бы слишком глубоко, и процедура printf не смогла бы ее обнаружить. Первым аргументом вызова SPRINTF является буфер, в который направляется выходная строка (в отличие от PRINTF, где строка попадает в файл стандартного вывода). Остальные аргументы аналогичны тем, что применяются в PRINTF. Вызов SSCANF в определенном смысле противоположен PRINTF — первым аргументом здесь является строка, которая может содержать целые числа в десятичном, восьмеричном или шестиадцатеричном представлении, а вторым — форматная строка с указателями преобразования. Могут быть и другие аргументы — адреса слов памяти, принимающие преобразованные данные. Все упомянутые системные подпрограммы весьма разносторонне но подробный анализ их возможностей мы проводить не будем. В разделе «Примеры» есть несколько примеров, демонстрирующих Pix применение в различных ситуациях. Заключительные замечания о наборе команд В официальной спецификации набора команд 8088 предусмотрен префикс перекрытия сегмента, который позволяет применять действительные адреса из других сегментов; первый адрес в памяти, следующий за префиксом перекрытия, вычисляется при помощи указанного сегментного регистра. К примеру: ESEG MOV DX.(BX) Эта команда сначала вычисляет адрес ВХ, используя для этого дополнительный сегмент, а затем перемещает содержимое в регистр DX. В то же время, ни стековый сегмент (в случае адресации с использованием регистра SP), ни дополнительный сегмент (в отношении строковых команд, оперирующих регистром DI) перекрыть нельзя. Сегментные регистры SS, DS и ES могут быть задействованы в команде M0V, но переместить непосредственные данные в сегментный регистр нельзя, в а операции XCHG эти регистры не используются. Менять сегментные регистры и практиковать перекрытие довольно сложно, и по возможности этих методов в программировании лучше избегать. Так как интерпретатор работает с фиксированными сегментными регистрами, здесь подобных проблем не возникает. Команды выполнения операций с плавающей точкой предусмотрены в большинстве компьютеров. Иногда они выполняются в процессоре, иногда — в сопроцессоре. Бывает и так, что они лишь программно интерпретируются при помощи специального исключения. Более детально эту тему мы развивать не будем. Ассемблер Итак, мы закончили обсуждение архитектуры 8088. Данный раздел посвящен программному обеспечению, позволяющему программировать процессор 8088 на языке ассемблера, в частности, тем инструментальным средствам, которые мы предлагаем в качестве основы для обучения программированию на этом языке. Сначала мы рассмотрим ассемблер (программу ассемблирования), затем — трассер (программу трассировки) и наконец обсудим некоторые практические моменты их применения. |