вариант № 12
Дата 20.02.2017
Задание:
Команда FINCSTP
КОП
2б
D9F7
Начало алгоритма
Ф2
Ф2 – декодирование команды
Тип команды – обработки данных.
Длина – 2б.
Поля – КОП – 2б.
Ф2
Число операндов – 1, местоположение – служебный регистр SWR,
режим адресации – неявная.
Результат – 1, местоположение – регистр SWR, адресация – неявная.
Ф3 – выборка операндов
Чтение операнда из SWR во временный буфер БФ = SWR.TOP
Ф2
Ф4 – выполнение операции
ЕСЛИ БФ == 7
ТО БФ = 0;
ИНАЧЕ БФ =Ф2
БФ + 1;
ВСЁ
Ф5 – запись результата
SWR.TOP = БФ
[Результат – изменение (вращение) стека регистров FPU:
Ф2
ST(0) ST(7), ST(7) ST(6), …, ST(1) ST(0)]
Конец алгоритма
Команда TEST
б)
КОП Постбайт SIB Константа
1б 1б 1б 1, 2, 4б
в)
КОП Постбайт DISP Константа
1б 1б 1, 2, 4б 1, 2, 4б
г)
КОП Постбайт SIB DISP Константа
1б 1б 1б 1, 2, 4б 1, 2, 4б
а)
КОП Постбайт Константа
1б 1б 1, 2, 4б
б)
КОП Постбайт SIB
1б 1б 1б
в)
КОП Постбайт DISP
1б 1б 1, 2, 4б
г)
КОП Постбайт SIB DISP
1б 1б 1б 1, 2, 4б
КОП Константа
1б 1б
А8 03
Начало алгоритма
Ф2 команды
Ф2 – декодирование
Тип команды: обработки данных.
Длина – 2 байта.
Поля – КОП – 1 байт, константаФ2
– 1 байт.
Число операндов – 3, местоположение: 1 оп. – РП, 2 оп. – IR[15..8],
адресация – явная непосредственная, местоположение 3 оп. – РФ,
адресация – неявная.
Результат – 1, местоположение – ОП, адресация – неявная.
Ф3 – выборка операндов
Чтение операндов во временные буферы: БФ1 = AL, БФ2 = IR.i8.
Пусть БФ3 = EFLAGSФ2 (регистр флагов).
Ф4 – выполнение операции
БФ4 = БФ1 & БФ2
Ф2 у БФ3.
Установка флагов
Ф5 – запись результата
1)
БФ3.OF = 0
Ф2
БФ3.CF = 0
2)
ЕСЛИ БФ4 == 0
ТО БФ3.ZF = 0
ИНАЧЕ БФ3.ZF = 1
ВСЁ
3)
Пусть PAR(REG) – функция, принимающая 8-битный регистр
REG, результат которой равен 1, если младший (единственный) байт REG
после выполнения команды TEST содержит четное количество битов,
равных 1. В противном случае результат равен 0. Тогда:
ЕСЛИ PAR(БФ4) == 1Ф2
ТО БФ3.PF = 0
ИНАЧЕ БФ3.PF = 1
ВСЁ
4)
Пусть SIGN(REG) – функция, принимающая 8-битный регистр
REG, результат которой равен 1, если старший бит результата равен 1.
В противном случае результат равен 0. Тогда:
ЕСЛИ SIGN(БФ4) == 1
ТО БФ3.SF = 1
ИНАЧЕ БФ3.SF = 0
ВСЁ
Конец алгоритма
Команда LOOPNZ
Начало алгоритма
Ф2
Ф2 – декодирование команды
Тип команды: передачи управления.
Длина – 2 байта.
Поля – КОП – 1 байт, REL (адрес) – 1 байт.
Ф2
Число операндов – 4, местоположение оп1 (метки) – ОП, адресация
– прямая, явная, местоположение оп2 (ECX) – РП, адресация – неявная,
местоположение оп3 (EIP) – РП, адресация – неявная, местоположение
оп4 (EFLAGS) – РП, адресация – неявная.
Результат – 2, местоположение 1-го рез-та (адреса) – ОП, адресация
– неявная, местоположение 2-го рез-та (ECX) – РП, адресация – неявная.
Ф3 – выборка операндов
Чтение операндов во временные буферы: БФ1 = cycle (метка),
БФ2 = ECX (или CX)1, БФ3 = EIP, БФ4 = EFLAGS.
Ф2
Ф4 – выполнение операции
БФ2 = БФ2 – 1
ЕСЛИ БФ2 == 0 или БФ4.ZF == 1
ТО БФ3 = БФ3 + 2 (передать управление команде,
следующей за командой LOOPNZ, то есть выйти из цикла)
1
Примечание: если атрибут размера адреса равен 16 бит, то в качестве
счетчика используется регистр CX, иначе — ECX.
ИНАЧЕ БФ3 = БФ3 + REL (передать управление
команде, следующей за меткой cycle, то есть перейти к началу цикла)
ВСЁ
Ф2
Ф5 – запись результата
ECX (или CX) = БФ2
EIP = БФ3 Ф2
Конец алгоритма
Команда PMADDWD
КОП Постбайт
2б 1б
б)
КОП Постбайт SIB
2б 1б 1б
г)
КОП Постбайт SIB DISP
2б 1б 1б 1, 2, 4б
КОП Постбайт
2б 1б
0FF5 C3
Начало алгоритма
Ф2 команды
Ф2 – декодирование
Тип команды: обработки данных.
Длина – 3 байта. Ф2
Поля – КОП (2 байт), постбайт (1 байт).
Число операндов – 2. Местоположение 1-го и 2-го операндов – РП,
адресация –явная, прямая.
Результат – 1, местоположение – РП (первый операнд), адресация –
Ф2
явная, прямая.
Ф3 – выборка операндов
Чтение операндов во временные буферы: БФ1 = rmmx1, БФ2 = rmmx2.
Ф2
Ф4 – выполнение операции
БФ1(31..0) = (БФ1(15..0) * БФ2(15..0)) + (БФ1(31..16) * БФ2(31..16));
БФ1(63..32) = (БФ1(47..32) * БФ2(47..32)) + (БФ1(63..48) * БФ2(63..48)).
Ф5 – запись результата
rmmx1 = БФ1.
Ф2
Конец алгоритма