Изменение адресации процессора


Изменение адресации процессора
Компьютер предназначен для выполнения программ. Он может действовать и как калькулятор, реагируя на нажатия кнопок, но это не его обычный режим. Для работы компьютеру требуется программа в ПЗУ или ЗУПВ. В 8-битовом компьютере программа представляет набор байтов, размещаемых друг за другом в ячейках памяти, которые можно адресовать. Байты программы — это коды программных строк.
Программный счетчик начинает адресацию с первой программной строки, а затем автоматически адресует строку за строкой. При каждой адресации программная строка подается на контакты данных процессора. Программный счетчик продолжает адресацию до исчерпания всех программных строк, до получения команды останова или изменения адреса.
В программах очень редко можно обойтись без изменения адресов. Практически любая программа имеет много строк, содержащих команды для изменения адреса. Адрес изменяется с помощью некоторых других регистров процессора. Они заставляют программный счетчик прекратить последовательную адресацию и выдать на шину адреса новый вычисленный адрес. Такие внезапные изменения не нарушают работу процессора, так как шина адреса мгновенно выводит любой адрес независимо от способа его получения. Единственное требование — адрес должен находиться в компьютере.
Для изменения адреса предназначено около десятка команд. Если код операции одной из них с шины данных попадает в регистр команды, выполняются следующие действия.
Когда команда попадает в регистр команды и биты кода операции определяют обработку данных, регистр команды посылает их прямо в аккумулятор. Когда код операции определяет изменение адреса, регистр команды должен обойти аккумулятор и послать биты в схемы программного счетчика. Счетчик должен прибавить или вычесть биты из своего содержимого или полностью заменить его. После этого измененное состояние программного счетчика выдается на шину адреса, т.е. адрес изменился. Изменяют адрес такие команды, как переход, условный переход, вызов, возврат или останов.
Команды перехода. Команды абсолютного перехода Jump и относительного перехода Branch похожи друг на друга, но их выполнение различно. Когда команда Jump попадает в регистр команды, последовательная адресация программного счетчика прекращается. Как показано на рис. 14.8, три 8-битовых ячейки памяти содержат код операции Jump и еще две строки кода («трайлеры» или «прицепы»), определяющие адрес перехода. Два байта «трайлеров» содержат 16 бит, которые регистр команды и дешифратор считают новым адресом.
Команда Jump заставляет процессор загрузить биты «трайлеров» в программный счетчик. После этого счетчик выводит биты на шину адреса и обращается к новой ячейке.

Команда относительного перехода Branch изменяет адрес по-другому. На рис. 14.9 показано, что команда Branch тоже имеет после кода операции один или два байта «трайлера», но он не определяет новый адрес. Этот байт или байты считаются положительным или отрицательным числом, и оно прибавляется к текущему адресу плюс 2 в программном счетчике или вычитается из него. Когда в регистр команды попа-
дает код операции Branch, проводится сложение с программным счетчиком или вычитание из него. После этого результирующие 16 бит выдаются на шину адреса и проводится обращение к новой ячейке.
В системе команд процессора обычно имеется несколько команд Branch. Рассмотренная команда Branch проводит относительный переход всегда (безусловный переход). Остальные команды Branch являются условными, и при их выполнении вначале проверяются флажки в регистре CCR. Если флажок, относящийся к данной команде, не удовлетворяет условию перехода, адрес в программном счетчике не изменяется. Когда же условие удовлетворяется, байт или байты «трайлера» изменяют адрес. Подробнее о регистре CCR сказано далее.
Команды вызова и возврата связаны с применением подпрограмм. Подпрограмма — это отдельная небольшая программа, предназначенная для выполнения определенной работы и находящаяся в памяти. Например, большинство процессоров не может умножать и выполняет умножение с помощью повторяющихся сложений. Если во многих местах программы требуется умножение, удобно разработать программу умножения и поместить ее в память. Когда в основной программе требуется умножение, можно вызвать подпрограмму, умножить и затем возвратиться из подпрограммы в основную программу.

Команда вызова изменяет содержимое программного счетчика так же, как команда Jump. После этого он обычным образом адресует подпрограмму умножения. После окончания умножения последним кодом операции в подпрограмме является возврат. Адрес в программном счетчике изменяется на основную программу, и она продолжается с того места, где была вызвана подпрограмма умножения.
Команда останова Halt также управляет программным счетчиком, прекращая его инкремент. Команда Halt часто применяется для останова в середине программы.

 

 Поиск и устранение неисправностей в персональных компьютерах