Главная > Схемотехника > Искусство схемотехники, Т.2
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

НАБОР КОМАНД КОМПЬЮТЕРА

10.02. Язык ассемблера и язык машинных кодов

Для того чтобы понять сигналы магистрали и функционирование компьютера, необходимо выяснить, что делает ЦП во время выполнения различных команд. Соответственно нам хотелось бы познакомить читателя с набором команд семейства IBM PC/XT. К сожалению, набор команд большинства реально существующих микропроцессоров имеет тенденцию к расширению, сопровождающуюся усложнением, наряду с добавлением дополнительных возможностей, и МП Intel 8086 не исключение. Однако поскольку нашей целью является только иллюстрация сигналов магистрали и функционирования компьютера (а не изощренное программирование), рассмотрим сокращенный набор команд - подмножество набора команд МП 8086. Исключив «лишние» команды, мы тем самым решаем проблему выбора ограниченного содержательного подмножества понятных команд, достаточных для программирования любой задачи. Далее мы используем этот набор команд для того, чтобы продемонстрировать несколько примеров функционирования аппаратной части и программирования. Эти примеры помогут выразить идею программирования на уровне машинных команд, что решительно отличается от программирования на таких языках высокого уровня, как Фортран или Си.

Несколько слов по поводу языка машинных кодов и языка ассемблера. Как уже упоминалось выше, ЦП компьютера предназначен для интерпретации определенных машинных слов в качестве команд и выполнения соответствующих программных процедур. Такой машинный язык состоит из набора двоичных команд, каждая из которых занимает один или несколько байт.

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

Программирование непосредственно в машинных кодах является исключительно тоскливым занятием, так как приходится иметь дело с колонками двоичных чисел, каждый бит которых существенен. Поэтому вы неизбежно должны использовать программу, называемую ассемблером, она позволяет писать программы, используя легко запоминаемые мнемонические обозначения команд и символьные имена, которые вы можете придумывать сами для ячеек ОЗУ и переменных. Программа на языке ассемблера на самом деле не более, чем набор похожих на шифр строк, содержащих буквы и числа; ее следует передать «в руки» программы, называемой ассемблер, для того чтобы получить в результате законченную программу в машинном объектном коде, которую компьютер может выполнить. Каждая строка ассемблерного кода превращается в несколько байт машинного кода (1-6 байт для МП Intel 8086). Непосредственно выполнять команды на языке ассемблера компьютер не в состоянии. Для того чтобы конкретизировать высказанные соображения, рассмотрим наше подмножество команд языка ассемблера МП Intel 8086/8 и выполним несколько примеров.

<< Предыдущий параграф Следующий параграф >>
Оглавление