Курс лекций по вычислительной технике



         

Из операций сравнения вытекает - часть 8


-        с выходом по счетчику в СХ или по условию

 

Безусловные передачи управления:

- безусловный переход

- вызов процедуры и возврат из нее

- вход в прерывание и выход из него

 

Подпрограммы - процедуры.

Группа команд, выполняющая некоторую подзадачу, реализованная таким образом, что ее можно использовать любое число раз и в любом  месте, называется подпрограммой. В ЯВУ  аналогом  п/п  служат  процедуры.

Однако, там всю работу по их реализации берет на себя транслятор. В  ЯА ор­ганизация п/п возложена на программиста.

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

Подпрограмма после завершения извлекает этот адрес и совершает по нему переход в основную программу.  В РС передача адреса возврата осуществляется только через стек. Для этой цели служат специальные команды: CALL и RET.

 

Команда CALL записывает адрес следующей  за  ней команды в стек и затем осуществляет переход на первую команду процедуры.

 

Команда RET считывает из вершины стека адрес и осуществляет  переход по нему.

Существуют следующие способы передачи  аргументов  процедуре  (да и воз­врата результатов):

 

     - через регистры

     - через общую область памяти

    -  через стек

    

 

         Операции вызова  прерываний.

 

Вообще  прерывание означает временное прекращение основного  процесса вычислений для выполнения действий  предусмотренных  операционной системой. Т. о. прерывания - это средство передачи управления операционной системе.

 

В зависимости от источника прерывания подразделяются на следующие типы

- внешние прерывания (маскируемые): вызов ОС внешним асинхронным ис­точником; маскирование осуществляется сбросом в "0" флага IF.




Содержание  Назад  Вперед