Общее описание МП 8086/8088
Ассемблером называется машинно-зависимый компилятор, преобразующий специальным образом составленные текстовые строки в машинные инструкции. Как и любой другой компилятор, ассемблер упрощает разработку программ за счет того, что предоставляет пользователю доступ к кодам машинных инструкций и операндам с помощью символьных имен.
В этой главе рассматриваются приемы программирования с помощью ассемблера, встроенного в компилятор Турбо Паскаля. Встроенный ассемблер имеется в версиях 6.0 и 7.0 Турбо Паскаля и в руках опытного программиста представляет собой мощный инструмент, позволяющий "выжать" из ПК все возможное.
Встроенный ассемблер (далее – просто ассемблер) дает возможность программировать на уровне отдельных машинных инструкций. Это – главное отличие ассемблера от Паскаля и в этом отличии сосредоточены все его достоинства и недостатки. Достоинство заключается в том, что, программируя на ассемблере, программист обычно выбирает последовательность машинных инструкций так, чтобы реализовать нужные вычисления с максимальной скоростью при минимальных затратах памяти, в то время как даже такой весьма совершенный компилятор, как компилятор Турбо Паскаля, неизбежно вносит в машинный код некоторую избыточность, уменьшающую скорость счета и увеличивающую затраты памяти.
С другой стороны, программирование на уровне машинных инструкций – чрезвычайно хлопотное занятие и не может сравниться по скорости разработки программ с программированием на Паскале – в этом заключается главный недостаток ассемблера.
Чтобы использовать средства ассемблера, необходимо ясно представлять себе детали архитектуры микропроцессоров Intel 80x86. К этому семейству относятся микропроцессоры:
- 8086-16-разрядный микропроцессор, используемый в ПК IBM PC/XT;
- 8088 – аналог 8086, отличается от него только взаимодействием с памятью: 8086 может обмениваться с памятью как байтами, так и 16-разрядными словами, в то время как 8088 – только байтами;
- 80286 – улучшенный вариант 8086, используемый в ПК IBM AT; может работать в двух режимах: в реальном режиме, полностью эмулирующем работу МП 8086, и в защищенном режиме, в котором способен адресовать память до 16 Мбайт (в реальном – до 1 Мбайт);
- 80386-32-разрядный вариант 80286; способен адресовать до 4 Гбайт;
- 80486 – комбинация 80386/80387, т.е. имеет внутреннюю подсистему реализации операций с плавающей точкой;
- 80586 (Pentium) – имеет ряд усовершенствований, обеспечивающих ему увеличение производительности в 2…3 раза по сравнению с 80486, в том числе возможность обрабатывать 64-разрядные числа.
Микропроцессоры этого семейства наращивают свои возможности в перечисленном порядке, но строго совместимы от младших моделей к старшим: все, что может 8086/8088, реализует и Pentium, но не наоборот. Ниже обсуждается архитектура (внутреннее устройство, способы адресации и система команд) МП 8086/8088.