В основной памяти компьютера можно разместить множество программ одновременно, выделив для каждой различные области памяти. Тем, какая из этих программ начнет выполняться при запуске машины, можно легко управлять, просто соответствующим образом установив исходное значение счетчика адреса.
Однако не следует забывать, что данные также содержатся в основной памяти и кодируются с помощью нулей и единиц, поэтому машина сама по себе не может установить, что именно является данными, что — программой. Если в счетчике адреса, вместо адреса требуемой программы, будет установлен адрес данных, то компьютер не сможет предпринять никаких иных действий, кроме как считать битовые комбинации данных так, как если бы они были командами, и попытаться выполнить их. Полученный результат непредсказуем и будет зависеть от того, с какими именно данными работала машина.
Тем не менее, нельзя сказать, что мы поступаем неверно, придавая и программам и данным одинаковую форму. Благодаря этому одна программа может работать с другими программами (и даже с самой собой) как с обычными данными. Например, можно представить себе программу, которая в результате взаимодействия с окружающей средой изменяет саму себя, получая, таким образом, возможность обучаться. Или другой пример — программа, которая пишет и выполняет другие программы, используя их как средства решения поставленной перед ней задачи.
Контрольные вопросы
1. Охарактеризуйте этапы машинного цикла при выполнении программы?
2. Какую информацию содержит счетчик адреса перед выполнением команды и в процессе выполнения команды машинного языка?
3. Почему команда JUMP является особой командой машинного языка?
4. Как обеспечивается синхронизация работы различных схем машины?
5. Программы и данные имеют одинаковую форму. Как это может сказаться на работе машины?
Лекция № 10 Арифметические и логические операции