Cтраница 3
Обычно при сравнении двух чисел запоминать получаемую разность не требуется. Команда сравнения СМР обеспечивает вычитание двух операндов и установку разрядов условий без запоминания разности. Данная команда используется вместе с командами условного перехода так, как это показано в разд. Подобно команде SUB, команда СМР устанавливает разряд С в 1, если при вычитании возникает заем, а не перенос. [31]
Сказанное не имеет отношения к процессору Z8000, разработчики которого допустили оплошность. Команды пересылки данных в этом процессоре не влияют на значение разрядов условий, что создает неудобства. Вместо этого предполагается, что после выполнения загрузки при необходимости должна использоваться команда TEST. Однако эта команда не приводит к сбросу разряда V, поэтому может случиться так, что если после ее выполнения не произвести сброс разряда V с помощью команды RESFLGV, то переход не будет выполнен. [32]
В большинстве процессоров при выполнении логических операций разряды N и Z устанавливаются в соответствии с получаемым результатом, разряд V сбрасывается, а разряд С сохраняет свое прежнее значение. Иногда проверку поля слова желательно производить, используя маску и операцию AND, которая обеспечивает установку разрядов условий, но не приводит к записи куда-либо получаемого результата. [33]
В зависимости от количества критериев можно говорить о двух постановках задачи: моно - и поликритериальной. При монокритериальной постановке в качестве главного критерия выбирается один из триады критериев, а два других переводятся в разряд дисциплинирующих условий. В первом случае задача приобретает смысл оптимизации облика БТС. [34]
Так, при операциях над байтами значение разряда N совпадает со значением 7-го разряда результата, а при операциях над словами - со значением 15-го разряда. Однако правила установки разрядов условий для разных команд и процессоров могут различаться. Однако во многих случаях правила установки могут быть в какой-то степени произвольными. [35]
В процессоре Z8000 для знакового разряда вместо N используется обозначение S; в процессоре 8086 разряды условий называются флажками условий и обозначаются CF, OF, SF ж ZF. У процессора 9900 имеется видоизмененный набор флажков, который обеспечивает получение той же информации. Что касается процессора MCS-48, то набор его разрядов условий и условных переходов является неполным. [36]
Установка разрядов условий при выполнении сложения. [37] |
Это означает, что сначала производится инвертирование значений отдельных разрядов операнда src, а затем полученный результат при начальном переносе, равном 1, прибавляется к операнду dst. Однако существует одно очень важное отличие этой операции от эквивалентного сложения. Во всех вычислительных машинах, рассматриваемых в данной книге, за исключением 9900, разряд условия С устанавливается в 1, если выполнение команды SUB приводит к возникновению заема. [38]
В этих циклах желательно передать значение разряда С из конца одного в начало следующего повторения цикла; следовательно, команды INC и DEC предназначались для сохранения значения разряда С. В выпущенной позднее мини - ЭВМ PDP-11 / 45 используется команда SOB ( Вычесть 1 и выполнить переход), которая по существу является комбинацией команд DEC и BNE и позволяет решить указанную проблему, не оказывая никакого влияния на состояние разрядов условий. В процессоре 68000 используется дополнительный разряд условия X, значение которого при операциях с повышенной точностью изменяется точно так же, как и значение разряда С, но остается неизменным при выполнении команд пересылки данных и управления циклами. [39]
На разряды условий оказывают влияние почти все команды пересылки и обработки данных. Однако иногда возникает необходимость в проверке операнда, который не требуется куда-либо пересылать или обрабатывать. В этом случае используется команда проверки TEST. По команде TEST dst производится чтение операнда dst и установка разрядов условий в соответствии с его значением; никаких других действий при этом не выполняется. [40]
Ряд команд ( JSR, RTS, RTI, RESET, WAIT) будут подробно рассмотрены в последующих главах. Команды ЕМТ, TRAP, ЮТ, ВРТ имеют специальное назначение и используются в системном программировании. По команде HALT ( останов процессора) процессор прекращает выборку команд из памяти. Выполнение команды NOP ( холостая операция) сводится только к одной фазе выборки, а фазы адресации и выполнения отсутствуют. В табл. 1.11 представлены команды, позволяющие устанавливать и сбрасывать разряды условий. Их часто используют для передачи одного бита информации из подпрограммы в основную программу. [41]
В некоторых процессорах, построенных на основе аккумулятора, например MCS-48, по команде условного перехода производится проверка содержимого аккумулятора и в соответствии с определенным условием ( например, нулевое / ненулевое, положительное / отрицательное значение) осуществляется переход. В процессорах с регистрами общего назначения для выполнения такого перехода необходимо, чтобы команда перехода задавала не только условие и адрес перехода, но и регистр, под-лежащий проверке. В программах вычислительных машин команды условного перехода обычно составляют значительную часть ( до 20 %) от всех используемых команд, и поэтому очень важно оптимизировать их длину и эффективность выполнения. Следует отметить, что именно с помощью таких команд чаще всего производится проверка операнда, над которым только что была выполнена Операция. Преимущество в этом отношении имеют процессоры, в которых используются разряды условий. [42]