Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SP.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
166.62 Кб
Скачать

38)Описать особенности организации вложенных и рекурсивных подпрограмм.

Вложенные

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

Теоретически подпрограммы могут вкладываться на любую глубину. Рано или поздно последняя вызванная подпрограмма завершит свою работу и вернет управление вызвавшей ее подпрограмме. Необходимый для этого адрес возвра­та — это последний адрес, сохраненный в данной цепочке вызовов подпрограмм. Иными словами, адреса возврата сохраняются и используются в порядке LIFO (Last In First Out, что в переводе с английского значит «последним вошел — пер­вым вышел»). Очевидно, что адреса возврата, связанные с вызовами подпрограмм, должны помещаться в стек. Многие процессоры делают это автоматически, как часть работы команды Call. Для использования в качестве указателя стека (SP) вы­зовов подпрограмм выделяется отдельный регистр, именуемый стеком процессора. Команда Call помещает в стек процессора содержимое регистра PC, а команда Return выталкивает из этого стека адрес возврата и помещает его в PC

Рекурсивные

Рекурсивные подпрограммы.

Процедуры и функции, производящие вызов "самих себя" называют рекурсивными.

Рекурсия. Рекурсивный алгоритм.

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

MOV BX,AX

CALL FACT

MOV UVAR,AX

FACT PROC NEAR

DEC BX

CMP BX,0

JE M

MUL BX

CALL FACT

M:RET

FACT ENDP

39)Разъяснить схему работы команды прерывания int. Охарактеризовать ее назначение и использование.

Прерывание – инициируемый определенным образом процесс, временно переключающий микропроцессор на выполнение другой программы с последующим возобновлением выполнения прерванной программы

Назначение прерывания: ваша программа что-то считает. В этот момент нажимается клавиша. Программа должны быть прервана. И это будет сделано, управление будет передано процедуре обработки прерывания, а потом Ваша программа будет выполняться дальше.

Прерывания ассемблера

Перед вызовом прерывания некоторая информация должна быть помещена в регистры процессора. Зачастую одно прерывание содержит много функций. В частности, операционная система включила практически все свои возможности в прерывание 21H. Поэтому при вызове прерывания необходимо указывать номер функции. Все прерывания (как BIOS так и DOS) передают номер функции в AH (иногда в AL содержится номер подфункции).

Ниже перечислены функции DOS, которые могут оказаться полезными для операций ввода - вывода. Код функции устанавливается в регистре AH и затем выдается команда INT 21H.

AH=02: Вывод символа. Для вывода необходимо код символа поместить в регистр DL.

AH=07: Ввод с клавиатуры без эхоотображения. Данная функция аналогична функции 01, но введенный символ не отображается на экране.

AH=09: Вывод на экран строки символов. Адрес строки, заканчивающейся знаком $, должен быть в регистре DX.

AH=0A: Буферизированный ввод с клавиатуры строки символов. Адрес буфера должен быть в регистре DX. Первый байт буфера указывает рабочий размер буфера. Во втором байте буфера находится счетчик символов (фактическое число байтов, введенных с клавиатуры без учета кода Enter). Третий байт - начало входной строки, состоящей из символов ASCII. Конец входной строки - символ возврата каретки (Enter).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]