- •История разработки микропроцессоров
- •3.Регистр флагов eflags/flags
- •Сегментная организация памяти
- •Сегментная организация памяти в защищенном режиме
- •Страничная организация памяти
- •Команды передачи данных
- •Двоично-десятичная арифметика
- •2.Команда add
- •Команда shr
- •Команда sar
- •Особые случаи
- •Округления
3.Регистр флагов eflags/flags
Содержит флаги, подразделяющиеся на флаги состояния и флаги управления. Каждый флаг является одним разрядом в регистре флагов. Флаги состояния сообщают об особенностях результата команд обработки данных. К этим флагам относятся следующие.
Флаги состояния
Флаг переноса CF устанавливается в состояние 1, если арифметическая команда вызвала перенос (при сложении) или заем (при вычитании) из старшего разряда результата
Флаг паритета PF устанавливается в 1, если в младшем байте результата содержится либо четное количество единичных разрядов, либо все разряды младшего байта содержат нули.
Флаг нулевого результата ZF устанавливается в 1, когда результат выполнения команды равен 0.
Флаг знака SF устанавливается в то же состояние, в каком находится старший разряд результата.
Флаг переполнения разрядной сетки OF устанавливается в 1, если при выполнении арифметических команд со знаковыми операндами результат превышает диапазон представимых чисел. Алгоритм формирования этого флага будет изложен позднее.
Флаг вспомогательного переноса AF устанавливается в 1, если при выполнении арифметической операции возник перенос из 3 в 4 разряд (при сложении) или заем между из 4 разряда (при вычитании). Этот флаг используется при выполнении команд десятичной арифметики.
Режимы адресации
1. Неявная адресация Пример mul cx . Второй операнд (множитель) в регистре al, результат в регистре ax.
1.Регистровая адресация - операнд находится в одном из регистров общего назначения Пример add ax, bx
2.Непосредственная адресация - операнд находится в самой команде, т.е. хранится вместе с командой в сегменте кода. Пример add ax, 15.
3.Остальные режимы адресации осуществляют обращение к памяти.
A) Прямая адресация - адрес, по которому процессор выполняет обращение к память, содержится в команде в виде смещения относительно базового адреса Пример
Q db 20h
add ax, Q
B) Косвенная адресация, адрес, по которому процессор обращается к памяти, находится либо в регистре общего назначения, либо же находится в ячейке памяти. Если адрес находится в регистре, то такая адресация называется косвенной регистровой. Пример
mov bx, Q
add ax, [bx]
В качестве регистра, содержащего косвенный адрес, может быть использован регистр общего назначения, кроме регистра E(SP), который используется для работы со стеком.
Следующий режим косвенной адресации – это базовая индексная адресация, при которой адрес рассчитывается при сложении содержимого двух регистров общего назначения. Разновидностью этой адресации является базовая индексная адресация со смещением, при этом к содержимому суммы двух регистров прибавляется целое число, указанное в команде. Как правило в качестве базы используется регистр BX , а в качестве индекса регистры SI, DI. Пример add ax, [bx,si+20]
Сегментная организация памяти
В МП используется сегментированная память. Вся оперативная память делится на участки со последовательными адресами, которые называются сегментами.
Сегменты:
кодовый сегмент (CS) для хранения кода программы;
сегменты данных – основной (DS) и дополнительные (ES,FS,GS) для хранения данных
стековый сегмент (SS) для хранения стека
Каждый сегмент в первую очередь характеризуется собственным базовым адресом, относительно которого и происходит обращение к памяти при работе МП.
Базовые адреса сегментов содержатся в сегментных регистрах.
CS - для кодового сегмента DS, ES, FS и GS – для сегментов данных. SS – для стекового сегмента
Максимальный размер сегмента в реальном режиме равняется 64 Кбайт.
