Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Раздаточный материалМПС_микроЭВМ_ред.3 ФАВТ.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
9 Мб
Скачать
☆

6.6. Трансцендентные команды

Трансцендентные команды предназначены для вычисления различных тригонометрических, логарифмических, показательных и гиперболических функций - sin(), cos(), tg() и т.п. В табл. 10 представлены команды трансцендентных операций МСП.

Таблица 10

Система команд трансцендентных операций МСП

КОМАНДЫ ТРАНСЦЕНДЕНТНЫХ ОПЕРАЦИЙ

Команда

Описание

Формальное описание

Примечание

FSIN

Синус

ST(0)  sin [ST(0)]

Операнд задается в радианах и должен лежать в диапазоне -263 - +263.

FCOS

Косинус

ST(0)  cos [ST(0)]

  • // -

FSINCOS

Синус и косинус

temp  cos [ST(0)]

ST(0)  sin [ST(0)]

  • // -

Продолжение табл. 10

КОМАНДЫ ТРАНСЦЕНДЕНТНЫХ ОПЕРАЦИЙ

Команда

Описание

Формальное описание

Примечание

TOP  TOP – 1

ST(0)  temp

FPTAN

Частичный тангенс

ST(0)  tan [ST(0)]

TOP  TOP – 1

ST(0)  1.0

  • // -

FPATAN

Частичный арктангенс

ST(1)  arctan [ST(1)/ST(0)]

TOP  TOP + 1

Нет примечания

F2XM1

ST(0)  (2ST(0) – 1)

FYL2X

ST(1)  ST(1)*log2ST(0)

TOP  TOP + 1

FYL2XP1

ST(1)  ST(1)*log2(ST(0)+1)

TOP  TOP + 1

6.7. Команды загрузки констант

В табл. 11 представлены команды загрузки констант.

Таблица 11

Система команд загрузки констант

КОМАНДЫ ЗАГРУЗКИ КОНСТАНТ

Команда

Формальное описание

FLD1

TOP  TOP - 1

ST(0)  1.0

FLDZ

TOP  TOP – 1

ST(0)  0.0

FLDPI

TOP  TOP – 1

ST(0)  π

FLDL2E

TOP  TOP – 1

ST(0)  log2 e

FLDL2T

TOP  TOP – 1

ST(0)  log2 10

FLDLG2

TOP  TOP – 1

ST(0)  log10 2

FLDLN2

TOP  TOP – 1

ST(0)  loge 2

6.8. Команды управления мсп

В табл. 12 представлены команды управления МСП. Многие из этих команд сохраняют в памяти и загружают в МСП большие объемы информации (весь или частичный контекст МСП) в определенном формате. Учитывая, что для выполнения данной лабораторной работы команды управления вряд ли понадобятся, здесь приводится только краткое словесное описание таких команд.

Таблица 12

Система команд управления МСП

КОМАНДЫ УПРАВЛЕНИЯ

Команда

Описание

FINCSTP

TOP  TOP + 1 ; ST(0) не очищается

FDECSTP

TOP  TOP – 1

FFREE

все ST(i) помечаются как пустые

FINIT

инициализация МСП после проверки на наличие отложенных незамаскированных особых случаев

FNINIT

инициализация МСП без проверки особых случаев

FCLEX

сброс флагов особых случаев после проверки на наличие отложенных незамаскированных особых случаев

FNCLEX

сброс флагов особых случаев без проверки

FSTCW m2byte

сохранить CW после проверки на наличие отложенных незамаскированных особых случаев

FNSTCW m2byte

сохранит CW без проверки

FSTSW m2byte

FSTSW ax

сохранить SW в памяти после проверки на наличие отложенных незамаскированных особых случаев

- // - в регистре AX

FNSTSW m2byte

FNSTSW ax

сохранит SW без проверки

FLDCW m2byte

загрузить CW из памяти

FSTENV m14/m28byte

сохранить управляющий контекст МСП после проверки на наличие незамаскированных особых случаев

FNSTENV m14/m28byte

сохранить управляющий контекст без проверки

FLDENV m14/m28byte

загрузить управляющий контекст МСП

FSAVE m94/m108byte

сохранить полный контекст МСП после проверки на наличие незамаскированных особых случаев

FNSAVE m94/m108byte

сохранить полный контекст без проверки

FRSTOR m94/m108byte

загрузить (восстановить) полный контекст МСП

FWAIT

тоже самое что WAIT

FNOP

пустая операция

FXSAVE m512byte

сохранить контекст FPU, MMX, XMM и MXCSR регистров

FXRSTOR m512byte

загрузить контекст FPU, MMX, XMM и MXCSR регистров

Регистр состояния (Status)

Пример решения задачи определения машинного кода команды МП

Задано: машинная команда из состава системы команд МП i80x86 с заданным режимом адресации операндов. Разрядность данных указывается преподавателем.

Задание выполнить в следующей последовательности:

  • Расписать формат команды и привести описание правил ее выполнения с учетом заданных режимов адресации.

  • Вычислить значения эффективных и физических адресов операндов.

  • Выполнить команду теоретически на заданном пространстве значений ячеек памяти и регистров микропроцессора, включая его регистр состояния (расписать полученные значения).

  • Проверить результаты в турбо-отладчике TD.exe или в любом другом, поддреживающем микропроцессор ix86 (полученные результаты зафиксировать в отчет в виде соответствующих копий экрана)

Сделать выводы о работе. Оформить отчет по результатам выполнения задания 0.

Таблица 9.1

Варианты к заданию 0

Вар

ID

EA

Reg, mod,

rm,

N

COP

Вар

ID

EA

Reg, mod,

rm,

N

COP

Вар

ID

EA

Reg, mod,

rm,

N

COP

Вар

ID

EA

Reg, mod,

rm,

N

COP

1

0,1,0

2

1

4

3,0,2

3

18

  1. 1

2

3,0,7

2

3

2

7,2,6

2

12

2

0,0,1

1

2

5

4,2,3

1

19

  1. 2

7

3,2,3

3

2

3

7,1,7

3

13

3

0,2,2

3

3

6

4,1,5

2

20

  1. 3

1

4,1,5

1

4

4

7,0,3

1

14

4

1,1,3

1

4

7

4,0,6

3

21

  1. 4

2

4,0,6

2

5

5

2,0,5

2

15

5

1,0,5

2

5

1

5,2,7

1

22

  1. 5

3

4,2,7

3

6

6

3,1,6

3

16

6

1,2,6

3

6

2

5,1,5

2

23

  1. 6

4

5,1,1

2

7

7

4,2,3

1

17

7

4,2,7

1

7

3

5,0,6

3

24

  1. 7

5

5,0,5

3

1

1

5,0,2

2

18

1

4,0,7

2

8

4

6,2,7

1

25

  1. 8

6

5,2,3

1

2

2

5,1,1

3

19

2

3,0,6

3

9

5

7,0,0

2

26

  1. 9

7

6,0,2

3

3

3

6,0,0

3

20

3

6,2,5

1

10

6

7,1,1

3

27

1

6,1,1

2

4

4

2,2,5

2

21

4

6,1,6

2

11

7

6,0,2

1

28

  1. 1

2

6,2,5

1

5

5

2,1,1

1

22

5

5,0,3

3

12

1

6,1,3

3

29

  1. 1

3

7,0,3

3

6

6

1,1,2

3

23

6

5,2,2

1

13

2

7,2,3

2

30

  1. 1

4

7,1,2

2

7

7

4,0,7

2

24

7

5,1,1

3

14

3

2,1,1

1

1

  1. 1

5

7,2,7

1

8

7

1,1,7

1

25

1

7,2,0

2

15

4

2,0,0

2

2

  1. 1

6

0,1,6

3

9

6

6,2,3

1

26

2

3,2,0

2

16

5

2,2,2

3

3

7

1,1,1

2

10

5

3,2,1

2

27

3

3,1,1

1

17

6

3,1,6

1

4

1

0,2,0

1

11

4

3,1,7

3

28

Причем

  • код N определяет номер варианта из таблицы 9.2, регламентирующий разрядность данных;

  • код ID определяет исходное состояние регистров микропроцессора (таблица 9.3);

  • код EA регламентирует используемые в команде способы адресации (см. табл.9.4);

  • код COP задает мнемонику команды микропроцессора ix86, которую необходимо выполнить в Турбоотладчике(см. табл.9.5).

Таблица 9.2

N - Обрабатываемая разрядность данных

Вариант

1

2

3

Мнемоника

8

16

32

Таблица 9.3

ID - Исходные значения регистров и ячеек памяти

Вариант

Регистры

1

2

3

4

5

6

7

AX (000)

CX (001)

DX (010)

BX (011)

SP (100)

BP (101)

SI (110)

DI (111)

ES (00)

CS (01)

SS (10)

DS (11)

FP

[AA]

[AA+2]

Disp8

Disp16

Data8(im8)

Data16(im16)

40EA

E456

F341

2345

345E

8956

1289

AF3B

4657

3564

1256

9123

F290

FF44

F290

34

E341

E4

2734

4657

3564

1256

9123

E456

F341

345E

8956

1289

2F3B

4FC0

4FE0

FF05

1245

FF05

96

1051

17

FE45

4523

4512

A457

FE34

43EF

67FB

ADEF

9856

7076

5444

4333

2111

F740

8945

F740

E9

2894

66

DEEF

7076

5444

4333

2111

F740

4512

A457

FE34

43EF

67FB

43EF

67FB

F341

5462

67FB

C2

6211

49

EFDC

223A

5DF2

FDAE

FE34

AED2

1234

9834

7503

A45E

1231

4512

4320

F694

56F4

4512

56

A633

C2

1875

1234

9834

7503

A45E

1231

4512

4320

223A

5DF2

2DAE

2E34

2347

F284

34F2

2E34

F1

1404

31

9F9E

1256

9123

40EA

E456

43EF

67FB

F740

4512

5444

4333

2345

345E

F341

3445

4512

45

0C44

99

AAA1

Замечание. При 32-разрядном представлении данных в старшую часть регистра записать содержимое его младшей части: например, для первого варианта содержимое EAX в шестнадцатеричной записи будет равно 40EA40EA

Таблица 9.4

EA - cпособы адресации, разрешенные в 16-разрядном МП

┌────┬─────────────────────────────────────────────────────────────┐

│поле│ поле md ( mod ) │

│r/m ├──────────────┬───────────────────┬────────────────────┬─────┤

│ │ 00 │ 01 │ 10 │ 11 │

│ ├──────┬───────┼───────────┬───────┼────────────┬───────┼──┬──┤

│ │ ЕА │ сегм │ ЕА │ сегм │ ЕА │ сегм │0w│1w│

├────┼──────┼───────┼───────────┼───────┼────────────┼───────┼──┼──┤

│000 │ BX+SI│data DS│BX+SI+disp8│data DS│BX+SI+disp16│data DS│Al│AX│

├────┼──────┼───────┼───────────┼───────┼────────────┼───────┼──┼──┤

│001 │ BX+DI│data DS│BX+DI+disp8│data DS│BX+DI+disp16│data DS│Cl│CX│

├────┼──────┼───────┼───────────┼───────┼────────────┼───────┼──┼──┤

│010 │ BP+SI│stackSS│BP+SI+disp8│stackSS│BP+SI+disp16│stackSS│Dl│DX│

├────┼──────┼───────┼───────────┼───────┼────────────┼───────┼──┼──┤

│011 │ BP+DI│stackSS│BP+DI+disp8│stackSS│BP+DI+disp16│stackSS│Bl│BX│

├────┼──────┼───────┼───────────┼───────┼────────────┼───────┼──┼──┤

│100 │ SI │data DS│ SI+disp8│data DS│ SI+disp16│data DS│Ah│SP│

├────┼──────┼───────┼───────────┼───────┼────────────┼───────┼──┼──┤

│101 │ DI │data DS│ DI+disp8│data DS│ DI+disp16│data DS│Ch│BP│

├────┼──────┼───────┼───────────┼───────┼────────────┼───────┼──┼──┤

│110 │disp16│data DS│ BP+disp8│stackSS│ BP+disp16 │stackSS│Dh│SI│

├────┼──────┼───────┼───────────┼───────┼────────────┼───────┼──┼──┤

│111 │ BX │data DS│ BX+disp8│data DS│ BX+disp16 │data DS│Bh│DI│

└────┴──────┴───────┴───────────┴───────┴────────────┴───────┴──┴──┘

w=0─┘ w=1

Таблица 9.5

COP - Команды микропроцессора фирмы Intel 80486

Вариант

Мнемоника

Вариант

Мнемоника

1

IMUL r/m

16

SHL r/m,im8

2

CMP reg, r/m

17

IMUL reg,r/m

3

ADD r/m,reg

18

SAR r/m,im8

4

SAL r/m,CL

19

MUL reg,r/m,im8

5

NEG r/m

20

SBB r/m, im8

6

AND r/m,im16

21

DIV r/m

7

SBB reg, r/m

22

SHR r/m,CL

8

ROR r/m,CL

23

SUB r/m, im16

9

XOR r/m,im16

24

ROL r/m,im8

10

RCR r/m,im8

25

IDIV r/m

11

BTC r/m,im8

26

OR r/m, im16

12

CMPXCHG r/m, reg

27

RCL r/m,CL

13

XADD r/m,reg

28

BTC r/m,reg

14

ADC r/m,im8

29

SHLD r/m,reg,CL

15

SHRD r/m,reg,CL

30

SHRD r/m,reg,im8

Приведем краткие пояснения по выполнению задания

Пусть необходимо определить формат и выполнить команду

mov word ptr [bx+64h],dx

Из описания известно, что в такой записи команда микропроцессора ix86 имеет трехбайтовую структуру и выполняется на 16-разрядными операндами.

КОП Постбайт Смещение

┌7───────0┬7─────────0┬7─────────0┐

r/m <- reg │1000 100w│md reg r/m │ Disp 8 │

└─────────┴───────────┴───────────┘

1000 1001 01 010 111 0110 0100

8 9 5 7 6 4

Рис. 9.1 Формат команды MOV R/M,REG

Причем по этой команде микропроцессор должен взять 16-разрядное число из своего регистра DX и переслать это число в ячейку памяти, адрес которой определяется как SR:ЕА (SR – сегментный регистр, ЕА – эффективный адрес в пределах сегмента SR)

Первый байт (r/m <- reg) - 89h

Второй байт 01reg r/m - dx – 010b

r/m – 111b Итого – 01010111b или 57h

Третий байт disp8 - 64h

Следовательно формат команды – 89 57 64.

По данной команде содержимое регистра dx будет помещено в память по адресу ds: [bx+64h]. Вычислим значение абсолютного адреса.

Пусть ds – 5BE6h, bx – 23a8h.

Тогда EA = bx+64h = 23a8h + 0064h = 240Ch

AA = ds * 16 + EA = 5BE60h+0240Ch = 5E26Ch

В результате после выполнения команды содержимое ячейки памяти с адресом АА(или 36D0Ch) будет равно содержимому регистра dx.

Пример выполнения команды в TD.exe.

4