Описание процессора i8086 для программиста

Время выполнения команд


В этом приложении приведено время выполнения команд и прерываний в машинных тактах для микропроцессора 8086 (КР1810ВМ86). Для микропроцессора 8088 время выполнения многих команд будет больше, поскольку ему требуется больше обращений к памяти.

Во многих командах общее время выполнения складывается из некоторого “базового” количества тактов плюс количества, необходимого для вычисления эффективного адреса.

Время вычисления эффективного адреса

Поле R/M

Mod=00

Mod=01



Mod=10

адресация

такты

адресация

такты

адресация

такты

000

BX+SI

7

BX+SI+disp8

11

BX+SI+disp16

BX+SI+disp8

001

BX+DI

8

BX+DI+disp8

12

BX+DI+disp16

BX+DI+disp8

010

BP+SI

8

BP+SI+disp8

12

BP+SI+disp16

BP+SI+disp8

011

BP+DI

7

BP+DI+disp8

11

BP+DI+disp16

BP+DI+disp8

100

SI

5

SI+disp8

9

SI+disp16

SI+disp8

101

DI

5

DI+disp8

9

DI+disp16

DI+disp8

110

disp16

6

BP+disp8

9

BP+disp16

BP+disp8

111

BX

5

BX+disp8

9

BX+disp16

BX+disp8

Время выполнения команд

Команда

Такты

AAA

4

AAD

60

AAS

4

AAM

83

ADC r, r

3

    r, m

9+EA

    m, r

16+EA

    r, imm

4

    m, imm

17+EA

ADD r, r

3

    r, m

9+EA

    m, r

16+EA

    r, imm

4

    m, imm

17+EA

AND r, r

3

    r, m

9+EA

    m, r

16+EA

    r, imm

4

    m, imm

17+EA

CALL rel16

19

     r16

16

     m16

21+EA

     ptr16:16

28

     m16:16

37+EA

CBW

2

CLC

2

CLD

2

CLI

2

CMC

2

CMP r, r

3

    r, m

9+EA

    m, r

9+EA

    r, imm

4

    m, imm

10+EA

CMPS

22

REP CMPS

9+22*N

CWD

5

DAA

4

DAS

4

DEC r16

2

    r8

3

    m

15+EA

DIV r8

80–90

    r16

144–162

    m8

(86–96)+EA

    m16

(150–168)+EA

ESC op, r

2

    op, m

8+EA

HLT

2

IDIV r8

101–112

     r16

165–184

     m8

(107–118)+EA

     m16

(171–190)+EA

IMUL r8

80–98

     r16

128–154

     m8

(86–104)+EA

     m16

(134–160)+EA

IN acc, imm8

10

   acc, DX

8

INC r16

2

    r8

3

    m

15+EA

INT 3

51

    imm8

52

INTO

4/53

IRET

24

Jcc rel8

4/16

JCXZ rel8

6/18

JMP rel8/16

15

    r16

11

    m16

18+EA

    ptr16:16

15

    m16:16

24+EA

LAHF

4

LDS r16, m16:16

16+EA

LEA r16, m

2+EA

LES r16, m16:16

16+EA

LODS

12

LOOP rel8

5/17

LOOPE rel8

LOOPZ rel8

6/18

LOOPNE rel8

LOOPNZ rel8

5/19

MOV m, acc

10

    acc, m

10

    sr, r16

2

    sr, m16

8+EA

    r16, sr

2

    m16, sr

9+EA

    r, r

2

    r, m

8+EA

    m, r

9+EA

    r, imm

4

    m, imm

10+EA

MOVS

18

REP MOVS

9+17*N

MUL r8

70–77

    r16

118–133

    m8

(76–83)+EA

    m16

(124–139)+EA

NEG r

3

    m

16+EA

NOP

3

NOT r

3

    m

16+EA

OR r, r

3

   r, m

9+EA

   m, r

16+EA

   r, imm

4

   m, imm

17+EA

OUT acc, imm8

10

    acc, DX

8

POP r16

8

    m16

17+EA

    sr

8

POPF

8

PUSH r16

11

     m16

16+EA

     sr

10

PUSHF

10

сдвиг r, 1

2

      m, 1

15+EA

      r, CL

8+4*N

      m, CL

20+EA+4*N

RET (ближний)

8

    imm16 (ближний)

12

    (дальний)

17

    imm16 (дальний)

18

SAHF

4

SBB r, r

3

    r, m

9+EA

    m, r

16+EA

    r, imm

4

    m, imm

17+EA

SCAS

15

REP SCAS

9+15*N

STC

2

STD

2

STI

2

STOS

11

REP STOS

9+10*N

SUB r, r

3

    r, m

9+EA

    m, r

16+EA

    r, imm

4

    m, imm

17+EA

TEST r, r

3

     r, m

9+EA

     m, r

9+EA

     acc, imm

4

     r, imm

5

     m, imm

11+EA

WAIT

3+5*N

XCHG AX, r16

3

     r16, AX

3

     r, r

4

     r, m

17+EA

     m, r

17+EA

XLAT

11

XOR r, r

3

    r, m

9+EA

    m, r

16+EA

    r, imm

4

    m, imm

17+EA

Префиксы команд

LOCK

2

REP/REPcc

2

замены сегмента

2

Прерывания

внешние

61

немаскируемые

50

трассировки

50

<
 

В таблице EA – время вычисления эффективного адреса; N – число повторений операции.

[1]

Позднее, при разработке микропроцессора 80286, инженеры фирмы Intel допустили ошибку, из-за чего этот перенос учитывался. Ошибка не была вовремя замечена, и в персональные компьютеры пришлось вводить дополнительные схемы, позволяющие либо блокировать 20-ю линию адреса (чтобы сохранялась совместимость с процессором 8086), либо разрешать её нормальное функционирование (для использования областей памяти с физическими адресами свыше FFFFF16). Эта ошибка из соображений совместимости повторяется и во всех последующих процессорах.

[2]

Примером может служить многозадачная многопользовательская операционная система реального времени RSX-11, способная эффективно работать на ЭВМ с объёмом памяти 128 Кбайт, обеспечивая при этом истинную многозадачность, защиту памяти и предоставляя пользователю куда более широкий набор функций, чем MS DOS, хотя последняя является однозадачной и при этом намного более требовательна к объёму памяти. Начиная с микропроцессора 80386, фирма Intel значительно улучшила эффективность системы команд, но так и не смогла “подтянуть” её даже до уровня PDP-11, не говоря уже о 32-разрядной супермини-ЭВМ VAX-11.

[3]

Нельзя смешивать короткие и длинные переходы с ближними и дальними, т.е. с внутрисегментными и межсегментными.

[4]

В вычислительных системах других архитектур сегментация памяти не используется, и программист работает с логическими (виртуальными) адресами, состоящими не из двух, а из одного-единственного компонента. В таких вычислительных системах для обозначения величины, используемой при относительной адресации, почти всегда используется термин “смещение”, поскольку для них вызывать путаницы он не может.

[5]

Не следует путать номера векторов прерываний, т.е. местоположение адреса программы-обработчика прерывания в таблице векторов прерываний, с номером аппаратного прерывания, т.е. номером линии запроса прерывания, поступающего контроллеру прерываний (номером IRQ).Соответствие между номерами линий прерываний (IRQ) и номерами векторов задаётся при программировании контроллера прерываний и, вообще говоря, к архитектуре микропроцессора прямого отношения не имеет.


Содержание раздела