Электронный учебник:


Курс лекций:


Дополнительно:

Практикум:



Наши хостеры:

Пример программы

Приведем пример программы на языке процессора семейства Intel, которая увеличивает число, находящееся в регистре АХ, в 10 раз. Вместо умножения используются более быстрые команды сдвига влево. Каждый такой сдвиг на один разряд эквивалентен умножению на 2.

В первом столбце указаны адреса команд (длина команд неодинакова!), а во втором -двоичный код команд процессора. Следующий (шестнадцатеричный) столбик повторяет содержимое предыдущего, но в компактном виде. Затем следует ассемблерная мнемоника и расшифровывается содержимое операций. В последнем столбце даны пояснения к вычислениям.

Адрес

Bin-код

Нех-код

Мнемоника

Операция

Результат

100

11010001 11100000

D1 E0

SHL AX, 01

сдвиг AX плево на один разряд

2Z

102

10001001 11000011

89 C3

MOV BX, AX

скопировать АХ в ВХ

2 Z

104

11000001 11100000

00000010

C1 E0 02

SHL AX, 02

сдвиг АХ плело на два разряда

8 Z

107

00000001

11011000

01 D8

ADD AX, BX

сложить АХ с ВХ

10 Z

Примечание. Несмотря на то, что приведенная программа по длине явно больше, чем простое умножение на 10, работать она будет заметно быстрее, поскольку умножение - "медленная" операция. Вот оценка для процессора Intel 80486: команды переписи и сложения тина "регистр-регистр" выполняются быстро и требуют всего по 1 машинному такту, а сдвиг регистра - 3. Все вычисления по пpoграмме будут выполнены в течение 8 тактов работы процессора. В то же время команда умножения целых чисел выполняется за 13 тактов!

предыдущаяследующая тема