Введение
Наверняка вы уже знакомы с понятием алгоритма, представляющего собой формализованное описание логики работы программы. Способы такой формализации весьма разнятся: от текстового описания последовательности действий до алгоритма развитых case-систем. Последовательность действий, описываемых алгоритмом, может быть:
-линейной — все действия выполняются поочередно, друг за другом;
-нелинейной — в алгоритме есть точки ветвления, в которых должно приниматься решение о месте, с которого программа продолжит свое выполнение, причем решение может носить условный или безусловный характер.
Линейные участки алгоритма обычно содержат команды манипуляции данными, вычисления значений выражений, преобразования данных. В точках ветвления размещают команды сравнения, различных видов перехода, вызова подпрограмм и некоторые другие.
Еще раз обратимся к функциональной классификации целочисленных машинных команд процессора. Из всей совокупности этих команд на линейных участках работают следующие группы:
-команды пересылки данных;
-арифметические команды;
-логические команды;
-команды управления состоянием процессора.
В этой главе мы рассмотрим только группу команд пересылки данных. Эти команды осуществляют пересылку данных из одного места в другое, запись и чтение информации из портов ввода-вывода, преобразование информации, манипуляции с адресами и указателями, обращение к стеку. Для некоторых из этих команд операция пересылки является только частью алгоритма. Другая его часть выполняет некоторые дополнительные операции над пересылаемой информацией. Поэтому для удобства практического применения и отражения их специфики данные команды будут рассмотрены в соответствии с их функциональным назначением, согласно которому они делятся на команды:
-собственно пересылки данных;
- ввода из порта и вывода в порт;
-работы с адресами и указателями;
-преобразования данных;
-работы со стеком.