Принцип работы ЭВМ

В нижеследующих разделах объясняются некоторые общие принципы работы ЭВМ, важные для уяснения структуры и работы микропроцессора 8088. Излагаемый здесь материал относится в равной степени ко всем ЭВМ. Там, где это необходимо, будут сделаны специальные ссылки на микропроцессор 8088, хотя большая часть сведений, относящихся исключительно к микропроцессору 8088, приводится в следующей главе.

Работа ЭВМ состоит в выборке из памяти команд и их последующем выполнении. Этот двухшаговый процесс обработки проходит каждая команда. На шаге, относящемся к выборке команды из памяти, управление осуществляется одним из регистров микропроцессора. Этот регистр называется счетчиком команд или указателем команд. Он указывает на "местонахождение" выполняемой в этот момент команды. В реристре находится адрес ячейки с командой, которую микропроцессор считывает из памяти и выполняет. Обращаясь к этой ячейке, микропроцессор считывает байт или байты данных, интерпретирует их как команду и выполняет ее. Затем микропроцессор увеличивает значение указателя в соответствии счислом байтов в команде. Теперь счетчик команд будет указывать на следующую команду. Этот цикл стандартно повторяется для каждой команды. Обычно ход выполнения программы последовательный: от одной команды к другой, следующей за ней.

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

Обратите внимание, что в команде JMP для задания ячейки, начиная с которой должна дальше выполняться программа, используется метка - в данном случае "FIG2_16". Это - еще одна из возможностей ассемблера. В языке ассемблера необходимо указать только метку, определенную программистом метку, в то время как в машинном языке требуется абсолютный адрес следующей команды. Ассемблер сам вычисляет абсолютный адрес и записывает полученное точное значение в команду на машинном языке.

Команды перехода не обязательно должны быть безусловными, как в приведенном выше примере. У микропроцессора 8088 имеется множество команд, которые выполняются в соответствии с кодом условия. Значение кода условия устанавливается командами при выполнении их микропроцессором. Код, указанный в команде условного перехода, сравнивается с содержимым регистра состояния. Если коды условий совпадают, то микропроцессор выполняет переход по указанному адресу. Если же коды условий не совпадают, то команда перехода микропроцессором игнорируется и продолжается обычное последовательное выполнение программы. На рис.2.17 дается измененный вариант предыдущего примера. Здесь цикл прекращается, когда значение BX становится равным 1000.

В программе на рис.2.17 добавлена команда сравнения, которая устанавливает значения кодов условий. Команда условного перехода JNE (Jump if Not Equal - перейти, если не равно) осуществляет переход на метку "FIG_17", если код условия имеет логическое значение "истина". Если же логическое значение кода условия "ложь", то микропроцессор 8088 выполняет команду, следующую за командой условного перехода, в данном случае - команду NOP. Команда условного перехода позволяет проверить значения данных в процессе выполнения программы. Ход выполнения программы может меняться в зависимости от результатов этой проверки.

Хостинг от uCoz