|
|||
Сегментные регистры. Регистры смещений. Регистр флаговСегментные регистры Регистры сегментной адресации CS, DS, SS, ES используются для хранения начальных адресов полей памяти (сегментов), отведенных в программах для хранения: - команд программы (сегмент кода — CS); - данных (сегмент данных — DS); - стековой области памяти (сегмент стека — SS); - дополнительной области памяти данных при межсегментных пересылках - (расширенный сегмент — ES), поскольку размер сегмента в реальном режиме работы МП ограничен величиной 64 Кбайт. Регистры смещений Регистры смещений (внутрисегментной адресации) IP, SP, BP, SI, DI предназначены для хранения относительных адресов ячеек памяти внутри сегментов (смещений относительно начала сегментов): - регистр IP (Instruction Pointer) хранит смещение адреса текущей команды программы; - регистр SP (Stack Pointer) — смещение вершины стека (текущего адреса стека); - регистр BP (Base Pointer) — смещение начального адреса поля памяти, непосредственно отведенного под стек; - регистры SI, DI (Source Index и Destination Index соответственно) предназначены для хранения адресов индекса источника и приемника данных при операциях над строками и им подобных. Регистр флагов Регистр флагов FL содержит условные одноразрядные признаки-маски, или флаги, управляющие выполнением программы в ПК; флаги работают независимо друг от друга, и лишь для удобства они помещены в единый регистр. Всего в регистре содержится 9 флагов: 6 из них статусные, отражают результаты операций, выполненных в компьютере (их значения используются, например, при выполнении команд условной передачи управления — команд ветвления программы), а 3 других — управляющие, непосредственно определяют режим исполнения программы. Статусные флаги: - CF (Carry Flag) — флаг переноса. Содержит значение «переносов» (0 или 1) из старшего разряда при арифметических операциях и некоторых операциях сдвига и циклического сдвига. В окне регистра флагов обозначается буквой c; - PF (Parity Flag) — флаг четности. Проверяет младшие восемь битов результатов операций над данными. Нечетное число единичных битов приводит к установке этого флага в 0, а четное — в 1. В окне регистра флагов обозначается буквой p; - AF (Auxiliary Carry Flag) — флаг логического переноса в двоично-десятичной арифметике. Вспомогательный флаг переноса устанавливается в 1, если арифметическая операция приводит к переносу или заему четвертого справа бита однобайтового операнда. Этот флаг используется при арифметических операциях над двоично-десятичными кодами и кодами ASCII. В окне регистра флагов обозначается буквой a; - ZF (Zero Flag) — флаг нуля. Устанавливается в 1, если результат операции равен нулю; если результат не равен нулю, ZF обнуляется. В окне регистра флагов обозначается буквой z; - SF (Sign Flag) — флаг знака. Устанавливается в соответствии со знаком результата после арифметических операций: положительный результат устанавливает флаг в 0, отрицательный — в 1. В окне регистра флагов обозначается буквой s; - OF (Overflow Flag) — флаг переполнения. Устанавливается в 1 при арифметическом переполнении: если возник перенос в знаковый разряд при выполнении знаковых арифметических операций, если частное от деления слишком велико и переполняет регистр результата и т. д. В окне регистра флагов обозначается буквой o. Управляющие флаги: - TF (Trap Flag) — флаг системного прерывания (трассировки). Единичное состояние этого флага переводит процессор в режим пошагового выполнения программы (режим трассировки); - IF (Interrupt Flag) — флаг прерываний. При нулевом состоянии этого флага прерывания запрещены, при единичном — разрешены. В окне регистра флагов обозначается буквой i; - DF (Direction Flag) — флаг направления. Используется в строковых операциях для задания направления обработки данных. При нулевом состоянии флага команда увеличивает содержимое регистров SI и DI на единицу, обусловливая обработку строки «слева направо»; при единичном — «справа налево». В окне регистра флагов обозначается буквой d.
|
|||
|