
- •А) Структура данных fstenv в 16- и 32-разрядном защищенном режиме
- •Примерная схема взаимодействия cpu и npu, при решении на них произвольной смеси команд
- •6.4. Базовые арифметические команды
- •6.5. Команды сравнения
- •6.6. Трансцендентные команды
- •6.7. Команды загрузки констант
- •6.8. Команды управления мсп
Логическая структура управляющей микропроцессорной системы
ОУ – объект управления,
Д – измерительные датчики,
ИМ – исполнительные механизмы,
ИК – информационные контроллеры,
БСД – блоки сопряжения с датчиками,
БСИК – блоки сопряжения ИМ с информационными контроллерами,
ОП – модули основной памяти (ППЗУ и ОЗУ),
ДП – модули дополнительной памяти (например, накопители ЖМД, электронные диски, Smart-карты и т.п.).
Уровни абстрактного представления МПС
-
Уровень описания
Объект
Структурный базис
Язык описания
Электрические схемы
Логические и запоминающие элементы
Электронные и радиокомпоненты — транзисторы, резисторы, конденсаторы, индуктивности и др.
Основные соотношения теории электрических цепей. Языки описания электрических цепей
Логические схемы
Операционные элементы (счетчики, сумматоры, дешифраторы, регистры и т. д.), конечные цифровые автоматы с жесткой и программируемой логикой
Логические, буферные и запоминающие элементы
Булева алгебра, теория конечных цифровых автоматов, языки проектирования аппаратуры (HDL)
Операционные схемы
Операционные устройства: арифметико-логическое устройство, устройство управления, блок регистров общего назначения, запоминающее устройство, а также микропроцессор, информационный контроллер и др.
Операционные элементы, конечные цифровые автоматы с жесткой и программируемой логикой
Языки описания микроопераций, языки проектирования аппаратуры (HDL)
Структурные схемы
Подсистема обработки, подсистема прерывания, подсистема ввода-вывода, сама микроЭВМ и/или микропроцессорная система
Операционные устройства
Машинно-ориентированные языки: языки машинных команд, микропрограмм
Программный уровень
Операционная система, вычислительный процесс, супервизор управления
Команды и операторы
Алгоритмические языки высокого уровня, языки спецификаций
Современный взгляд на организацию МПС
с оперативно корректируемым поведением
Диаграмма Гайского-Кана: области и уровни моделей в проектировании МПС на основе СБИС
Уровни проектирования МПС на СБИС
Блок-схема
микроЭВМ с классической архитектурой
и архитектурные принципы фон-Неймана
Информация кодируется в двоичной форме и разделяется на единицы - слова.
Разнотипные по смыслу слова различаются по способу использования, но не по способу кодирования.
Слова информации размещаются в ячейках памяти и идентифицируются номерами ячеек — адресами слов.
Алгоритм представляется в форме последовательности управляющих слов, называемых командами. Команда определяет наименование операции и слова информации, участвующие в ней. Алгоритм, записанный в виде последовательности команд, называется программой.
Выполнение вычислений, предписанных алгоритмом, сводится к последовательному выполнению команд в порядке, однозначно определяемому программой.
Определение циклов
шины
#NPS1 |
NPS2 |
CMD0 |
CMD1 |
#NPRD |
#NPWR |
Тип цикла шины |
х |
0 |
х |
х |
х |
х |
МСП не выбран |
1 |
х |
х |
х |
х |
х |
МСП не выбран |
0 |
1 |
0 |
0 |
1 |
0 |
Запись кода операции в МСП |
0 |
1 |
0 |
0 |
0 |
1 |
Чтение CW или SW из МСП |
0 |
1 |
1 |
0 |
0 |
1 |
Чтение данных из МСП |
0 |
1 |
1 |
0 |
1 |
0 |
Запись данных в МСП |
0 |
1 |
0 |
1 |
1 |
0 |
Загрузка указателей исключений |
0 |
1 |
0 |
1 |
0 |
1 |
Зарезервировано |
0 |
1 |
1 |
1 |
0 |
1 |
Код операции чтение статуса при выполнении ряда команд, таких как FSAVE, FSTENV и т.д. |
0 |
1 |
1 |
1 |
1 |
0 |
Зарезервировано |
Дешифрирование адресов ввода/вывода МСП
Адреса ввода/вывода |
Команды ввода и выбора МСП |
|||
NPS2 |
#NPS1 |
CMD1 |
CMD0 |
|
00F8 |
1 |
0 |
0 |
0 |
00FA |
1 |
0 |
0 |
1 |
00FC |
1 |
0 |
1 |
0 |
00FE |
1 |
0 |
1 |
1 |
Код операции (Запись)/ CW или SW (Считывание)
Регистры данных
Регистры указателей исключений (EP) (Только запись)
Операция чтения статуса по командам FSAVE, FSTENV и т.д.
Регистровый стек МСП |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Формат целых двоичных чисел: А) ЦС, Б) КЦ, В) ДЦ
Формат упакованного десятичного целого числа (УПК)
Формат вещественных чисел с ПЗ: А) КВ, Б) ДВ, В) ВВ
ПРИМЕЧАНИЕ: заштрихован скрытый бит, которого в формате на самом деле нет.
|
79 |
64 |
63 |
0 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
R0 |
Знак |
Порядок |
Мантисса |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
R1 |
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
R2 |
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
R3 |
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
R4 |
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
R5 |
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
R6 |
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
R7 |
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
15 |
0 |
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CW |
Регистр управления |
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SW |
Регистр состояния |
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
TW |
Слово тэгов |
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
31 |
|
0 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IP |
Указатель команды |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DP |
Указатель данных |
|
Значение двухбитного тэга в слове тэгов
-
Тэг
Содержимое
0
Режимы округления МСП
0Допустимое ненулевое число
01
Нуль
10
Специальное значение (нечисло и др.)
11
Пустой (empty) регистр
Регистр слова управления СW
|
15 13 |
12 |
11 10 |
9 8 |
7 6 |
5 |
4 |
3 |
2 |
1 |
0 |
CW |
*** |
IC |
RC |
PC |
** |
PM |
UM |
OM |
ZM |
DM |
IM |
PC (Precision Control) определяет точность вычислений в 24 бита (РС = 00), 53 бита (РС = 10) или 64 бита (РС = 11).
RC = 00 – округление к ближайшему; RC = 01 – округление вниз (к минус бесконечности);
RC = 10 – округление вверх (к плюс бесконечности); RC = 11 – усечение к нулю.
Регистр слова состояния SW
|
15 |
14 |
13 11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
SW |
B |
C3 |
TOP |
C2 |
C1 |
C0 |
ES |
SF |
PE |
UE |
OE |
ZE |
DE |
IE |
А) Структура данных fstenv в 16- и 32-разрядном защищенном режиме
б) Структура данных FSTENV в 16- и 32-разрядном реальном режиме
Примерная схема взаимодействия cpu и npu, при решении на них произвольной смеси команд
Найти
корни x1
и х2
квадратного уравнения ax2+bx+c
= 0: x1,2
=
.
причем должно выполняться неравенство b2—4ас >= 0.
{$N+}
program CalcRoot;
uses
Crt,Dos;
type
TypeFMassiv = array [0..2] of Single;
TypeIMassiv = array [0..2] of integer;
var
CoeffA,CoeffB,CoeffC : TypeFMassiv;
ArrayRoot1,ArrayRoot2 : TypeFMassiv;
ArrayPriznak : TypeIMassiv;
ArrayPasRoot1,ArrayPasRoot2, Delta1, Delta2 : TypeFMassiv;
ArrayPasPriznak : TypeIMassiv;
i,j : word;
Procedure PASFPP(A,B,C:single; var Root1, Root2: single; var Lrezult:integer);
var
x1, x2, xx : single;
rezult : integer;
begin
x2 := 0.0;
xx := b*b - 4 * a * c;
if (xx >=0) then begin
x1:= (- b + sqrt(xx)) /(2*a);
x2:= (- b - exp(0.5*ln(xx))) /(2*a);
rezult := 0;
end
else begin
x1:=0.0;
rezult := -1;
end;
root1:=x1;
root2:=x2;
lrezult:= rezult;
end;
Procedure FPP(A,B,C:single; var Root1, Root2: single; var Lrezult:integer);
var
x1, x2 : single;
status, rezult : word;
begin
rezult:=0;
x1 := 0.0;
x2 := 0.0;
Изменение содержимого стека МСП во времени
St(0) |
a |
b |
c |
ac |
1 |
1 |
2 |
ac |
4ac |
4ac |
b |
B2 |
B2-4ac |
St(1) |
|
a |
b |
b |
ac |
1 |
ac |
2 |
2 |
b |
4ac |
4ac |
b |
St(2) |
|
|
a |
a |
B |
ac |
b |
b |
b |
a |
b |
b |
a |
St(3) |
|
|
|
|
A |
b |
a |
a |
a |
|
a |
a |
|
St(4) |
|
|
|
|
|
a |
|
|
|
|
|
|
|
команды |
Fld A |
Fld B |
Fld C |
Fmul st,st(2) |
Fld1 |
Fld1 |
Fadd |
Fxch |
Fscale |
Fstp st(1) |
Fld st(1) |
Fmul st,st(2) |
Fsubrp |
finit
fld A
fld B
fld C
fmul st,st(2
fld1
fld1
faddp
fxch
fscale
fstp st(1)
fld st(1)
fmul st,st(0)
fsubrp
ftst
fstsw status
fwait
mov ah, byte ptr [status+1]
sahf
jnc @no_error
mov rezult, -1
jmp @error
@no_error:
St(0) |
|
a |
2a |
-b |
-b+ |
x1 |
2a |
-b |
-b- |
x2 |
|
St(1) |
b |
|
|
2a |
2a |
2a |
|
2a |
2a |
|
b |
St(2) |
a |
b |
b |
|
|
|
b |
|
|
b |
a |
St(3) |
|
a |
a |
B |
b |
b |
a |
b |
b |
a |
|
St(4) |
|
|
|
A |
a |
a |
|
a |
a |
|
|
команды |
Fsqrt |
Fld st(2) |
Fadd st,st(3) |
Fld st(2) Fchs |
Fadd st,st(2) |
Fdiv st,st(1) |
Fstp X1 |
Fld st(2) Fchs |
Fsub st,st(2) |
Fdivr |
Fstp X2 |
fsqrt
fld st(2)
fadd st,st(3)
fld st(2)
fchs
fadd st,st(2)
fdiv st,st(1)
fstp x1
fld st(2)
fchs
fsub st,st(2)
fdiv st,st(1)
fstp x2
wait
mov rezult, 0
@error:
finit
end;
Root1 := x1;
Root2 := x2;
Lrezult:= rezult;
end;
procedure InitMassiv;
var i: word;
begin
CoeffA[0]:= 300.0;
CoeffB[0]:= -10.0;
CoeffC[0]:= 5.0;
CoeffA[1]:= 40.0;
CoeffB[1]:= -70.0;
CoeffC[1]:= -34.0;
CoeffA[2]:= -56.89;
CoeffB[2]:= -356.456;
CoeffC[2]:= 123.789;
for i := 0 to 2 do
begin
Delta1[i] := 0.0;
Delta2[i] := 0.0;
ArrayRoot1[i]:=0.0;
ArrayRoot2[i]:=0.0;
ArrayPriznak[i]:=0;
ArrayPasRoot1[i]:=0.0;
ArrayPasRoot2[i]:=0.0;
ArrayPasPriznak[i]:=0;
end;
end;
var f:text;
begin
InitMassiv;
ClrScr;
for i := 0 to 2 do FPP(CoeffA[i],CoeffB[i],CoeffC[i],ArrayRoot1[i],ArrayRoot2[i],ArrayPriznak[i]);
for i := 0 to 2 do PASFPP(CoeffA[i],CoeffB[i],CoeffC[i],ArrayPasRoot1[i],ArrayPasRoot2[i],ArrayPasPriznak[i]);
for i := 0 to 2 do begin
Delta1[i]:=abs(ArrayPasRoot1[i] - ArrayRoot1[i]);
Delta2[i]:=abs(ArrayPasRoot2[i] - ArrayRoot2[i]);
end;
assign(F,'d:\student\fpu\exampl.txt');
Rewrite(F);
writeln(F);
writeln;
for i := 0 to 57 do begin
write(f,'░');
write('░');
end;
writeln;
writeln(F);
for i := 0 to 2 do begin
writeln('░ i:=',i:3,' │ A =',CoeffA[i]:10:4,' │ B =', CoeffB[i]:10:4, ' │ C =',CoeffC[i]:10:4,' ░');
writeln('░ │ Pr=',ArrayPriznak[i]:10,' │ X1=', ArrayRoot1[i]:10:4, ' │ X2=',ArrayRoot2[i]:10:4,' ░');
writeln('░ Pascal │ Pr=',ArrayPasPriznak[i]:10,' │ X1=', ArrayPasRoot1[i]:10:4,' │ X2=',ArrayPasRoot2[i]:10:4,' ░');
writeln('░ │ │DT1=',Delta1[i]:10:4,' │DT2=',Delta2[i]:10:4,' ░');
writeln(f,'░ i:=',i:3,' │ A =',CoeffA[i]:10:4,' │ B =', CoeffB[i]:10:4, ' │ C =',CoeffC[i]:10:4,' ░');
writeln(f,'░ │ Pr=',ArrayPriznak[i]:10,' │ X1=', ArrayRoot1[i]:10:4, ' │ X2=',ArrayRoot2[i]:10:4,' ░');
writeln(f,'░ Pascal │ Pr=',ArrayPasPriznak[i]:10,' │ X1=', ArrayPasRoot1[i]:10:4, ' │ X2=',ArrayPasRoot2[i]:10:4,' ░');
writeln(f,'░ │ │DT1=',Delta1[i]:10:4,' │DT2=',Delta2[i]:10:4,' ░');
if i<>2 then begin
write('░');
write(f,'░');
for j := 0 to 55 do begin write('─');write(f,'─');
end;
writeln('░');
writeln(f,'░');
end;
end;
for i := 0 to 57 do begin write('░');
write(f,'░');
end;
writeln;
writeln(f);
writeln('Thank you. Put <Enter>');
readln;
Close(F);
end.
Команды |
ST0 |
ST1 |
ST2 |
ST3 |
ST4 |
|
||||||
FINIT |
Режим округления – к ближайшему Формат – Временный вещественный Стек инициализирован и доступен |
|
||||||||||
fld [ptrcoef ] |
a |
|
|
|
|
|
||||||
fld [ptrcoef + 4] |
b |
a |
|
|
|
|
||||||
fld [ptrcoef + 8] |
c |
b |
a |
|
|
|
||||||
fmul st,st(2) |
ac |
b |
a |
|
|
|
||||||
fld1 |
1 |
ac |
b |
a |
|
|
||||||
fld1 |
1 |
1 |
ac |
b |
a |
|
||||||
faddp |
2 |
ac |
b |
a |
|
|
||||||
fxch |
ac |
2 |
b |
a |
|
|
||||||
fscale |
ac22 |
2 |
b |
a |
|
|
||||||
fstp st(1) |
4ac |
b |
a |
|
|
|
||||||
fld st(1) |
b |
4ac |
b |
a |
|
|
||||||
fmul st,st(0) |
b2 |
4ac |
b |
a |
|
|
||||||
fsubrp |
b2-4ac |
b |
a |
|
|
|
||||||
ftst |
Сравнить ST0 с нулем и определить значения признаков результата C3..C0 |
|
||||||||||
fstsw word ptr [di] |
Выгрузить слово состояния sw в ячейку оперативной памяти |
|
||||||||||
fwait |
Ожидать окончания выгрузки |
|
||||||||||
mov ah, [di+1] |
Загрузить ah содержимым старшего байта sw |
|
||||||||||
sahf |
Загрузить мл.байт регистра флагов из ст.байта ax |
|
||||||||||
jnc no_error |
Продолжить, если нет ошибок |
|
||||||||||
… |
|
|
|
|
|
|
||||||
Продолжение при отсутствии ошибок |
|
|
||||||||||
Команды |
ST0 |
ST1 |
ST2 |
ST3 |
ST4 |
|||||||
fsqrt |
√( b2-4ac) |
b |
a |
|
|
|||||||
fld st(2) |
a |
√( b2-4ac) |
b |
a |
|
|||||||
fadd st,st(3) |
2a |
√( b2-4ac) |
b |
a |
|
|||||||
fld st(2) |
b |
2a |
√( b2-4ac) |
b |
a |
|||||||
fchs |
-b |
2a |
√( b2-4ac) |
b |
a |
|||||||
fadd st,st(2) |
-b + √ |
2a |
√( b2-4ac) |
b |
a |
|||||||
fdiv st,st(1) |
(-b+√ )/ 2a |
2a |
√( b2-4ac) |
b |
a |
|||||||
fstp [root] |
2a |
√( b2-4ac) |
b |
a |
|
|||||||
fld st(2) |
b |
2a |
√( b2-4ac) |
b |
a |
|||||||
fchs |
-b |
2a |
√( b2-4ac) |
b |
a |
|||||||
fsub st,st(2) |
-b - √ |
2a |
√( b2-4ac) |
b |
a |
|||||||
fdiv st,st(1) |
(-b -√ )/ 2a |
2a |
√( b2-4ac) |
b |
a |
|||||||
fstp dword ptr [root+4] |
2a |
√( b2-4ac) |
b |
a |
|
|||||||
… |
|
|
|
|
|
|||||||
Fstp st(0) |
√( b2-4ac) |
b |
a |
|
|
|||||||
Fstp st(0) |
b |
a |
|
|
|
|||||||
Fstp st(0) |
a |
|
|
|
|
|||||||
Fstp st(0) |
Стек пуст !!!! Важно! |
Все команды МСП можно разделить на несколько групп:
команды передачи данных;
арифметические команды;
команды сравнений чисел;
трансцендентные команды;
команды загрузки констант;
управляющие команды.
Форматы машинных команд МСП
|
7 3 |
2 1 |
0 |
|
7 6 |
5 |
4 3 |
2 0 |
|
7 0 |
|
n 0 |
А) |
11011 |
MF |
1 |
|
mod |
1 |
коп |
r/m |
|
sib |
|
disp |
|
7 3 |
2 1 |
0 |
|
7 6 |
5 3 |
2 0 |
|
7 0 |
|
n 0 |
Б) |
11011 |
MF |
0 |
|
mod |
коп |
r/m |
|
sib |
|
disp |
|
7 3 |
2 |
1 |
0 |
|
7 6 |
5 3 |
2 0 |
В) |
11011 |
R |
P |
коп |
|
11 |
коп |
ST(i) |
|
7 3 |
2 0 |
|
7 5 |
4 0 |
Г) |
11011 |
001 |
|
111 |
коп |
|
7 3 |
2 0 |
|
7 5 |
4 0 |
Д) |
11011 |
011 |
|
111 |
коп |
Команды с форматами А) и Б) осуществляют обращение к памяти. Поля mod (режим), r/m (регистр/память) и байт sib имеют тот же смысл, что и в командах целочисленного процессора. Напомним, что эти поля задают способ формирования эффективного адреса (Аэф). Эти команды, в зависимости от кодирования поля mod, могут иметь или не иметь байты смещения disp, участвующие в формировании Аэф. Само поле disp может иметь формат 1, 2 или 4 байта (n = 7 или 15, или 31).
Команда с форматом А) передает данные в память или считывает их из памяти. Команда с форматом Б) выполняет арифметические операции и операции сравнения с операндом, взятым из памяти.
Команды с форматом В) выполняют арифметические операции и операции сравнения с операндами, взятыми из регистров МСП. Бит R (Reverse) показывает, куда помещается результат: в ST(0) [R=0] или в ST(i) [R=1]. Бит P (Pop) показывает, происходит ли после операции выталкивание из стека (PopRegisterStack).
Команды с форматом Г) оперируют константами, то есть операнды в этих командах задаются самим кодом операции. Формат Д) зарезервирован для команд управления, которые не обращаются к памяти.
Таблица 4
Система команд передачи данных
КОМАНДЫ ПЕРЕДАЧИ ДАННЫХ |
|||
Команда |
Описание |
Формальное описание |
Примечания |
FLD m32fp
FLD m64fp
FLD m80fp
FLD ST(i) |
загрузить вещественное число в стек |
TOP TOP – 1 ST(0) m32fp
TOP TOP – 1 ST(0) m64fp
TOP TOP – 1 ST(0) m80fp
temp ST(i) TOP TOP – 1 ST(0) temp |
ВВ КВ
ВВ ДВ
ВВ ВВ |
FST m32fp
FST m64fp
FST ST(i)
FSTP m32fp
FSTP m64fp
FSTP m80fp
FSTP ST(i) |
сохранить вещественное число из стека
вытолкнуть вещественное число из стека |
m32fp ST(0)
m64fp ST(0)
ST(i) ST(0)
m32fp ST(0) TOP TOP + 1
m64fp ST(0) TOP TOP + 1
m80fp ST(0) TOP TOP + 1
ST(i) ST(0) TOP TOP + 1 |
КВ ВВ
ДВ ВВ
КВ ВВ
ДВ ВВ
ВВ ВВ |
FILD m16int
FILD m32int
FILD m64int |
загрузить целое число в стек |
TOP TOP – 1 ST(0) m16int
TOP TOP – 1 ST(0) m32int
TOP TOP – 1 ST(0) m64int |
ВВ ЦС
ВВ КЦ
ВВ ДЦ |
FIST m16int
FIST m32int
FISTP m16int
|
сохранить целое число из стека
вытолкнуть целое число из стека |
m16int ST(0)
m32int ST(0)
m16int ST(0) TOP TOP + 1
|
ЦС ВВ
КЦ ВВ
ЦС ВВ
|
FISTP m32int
FISTP m64int |
|
m32int ST(0) TOP TOP + 1 m64int ST(0) TOP TOP + 1 |
КЦ ВВ
ДЦ ВВ |
Продолжение табл. 4
КОМАНДЫ ПЕРЕДАЧИ ДАННЫХ |
|||
Команда |
Описание |
Формальное описание |
Примечания |
FBLD m80bcd |
загрузить десятичное число в стек |
TOP TOP -1 ST(0) m80bcd |
РТ УПК |
FBSTP m80bcd |
вытолкнуть десятичное число из стека |
m80bcd ST(0) TOP TOP + 1 |
УПК РТ |
FXCH ST(i)
FXCH |
поменять значения регистров между собой |
ST(0) <--> ST(i)
ST(0) <--> ST(1) |
|
FCMOVB ST(0), ST(i)
FCMOVE ST(0), ST(i)
FCMOVBE ST(0), ST(i)
FCMOVU ST(0), ST(i)
FCMOVNB ST(0), ST(i)
FCMOVNE ST(0), ST(i)
FCMOVNBE ST(0), ST(i)
FCMOVNU ST(0), ST(i) |
передать по условию |
если флаг cf = 1 (если «меньше»), то ST(0) ST(i)
если zf = 1….
если cf или zf =1..
если pf =1….
если cf = 0…
если zf = 0…
если cf и zf = 0…
если pf = 0 …. |
флаги cf, zf и pf располагаются в регистре флагов (ef) целочисленного устройства (процессора) |
ПРИМЕЧАНИЕ: команды «передать по условию» (FCMOVcc) поддерживаются не всеми МСП.