Курс лекций. - Микропроцессоры


Реализация процедур и функций на языке ASM51 - часть 2


Пример программы, передающей в подпрограмму двухбайтовое число, написанной на языке программирования ASM-51 приведён на рисунке 3.

Рисунок 3. Пример подпрограммы - процедуры с передачей двухбайтного числа через регистры R7 и R6.

Если в подпрограмму нужно передать четырёхбайтовое значение (это требуется для переменной, соответствующей типу long или float), то используются регистры R4...R7 (регистр R4 - старший байт):

Регистры R0 и R1 обычно используются в качестве указателей обрабатываемых переменных таких как строки или массивы. Если требуется, чтобы подпрограмма обработала значительный объём данных, как например:

то эти данные можно передать через параметр - указатель. В качестве указателя при обращении к внешней памяти данных или к памяти программ обычно используется регистр-указатель данных DPTR. Пример передачи в качестве параметра строки, написанный на языке программирования ASM-51 приведён на рисунке 4:

Рисунок 4. Пример подпрограммы - процедуры с передачей адреса строки через регистр DPTR.

При обращении к массивам или структурам, расположенным во внутренней памяти данных в качестве указателя адреса используется регистр R0 или R1. Пример передачи в подпрограмму массива в качестве параметра, написанный на языке программирования ASM-51 приведён на рисунке 5:

Рисунок 5. Пример подпрограммы - процедуры с передачей адреса массива через регистр R0.

Реализация подпрограмм-функций на языке ASM51.

Часто требуется передавать результат вычислений из подпрограммы в основную программу. Для этого можно воспользоваться подпрограммой - функцией. Подпрограмма - функция возвращает вычисленное значение. Пример использования подпрограммы - функции на языке программирования высокого уровня:

Как видно из приведённого примера, использование подпрограмм-функций значительно увеличивает наглядность программ и приближает запись на языке программирования к записи математического выражения. На языке программирования ASM51 этот же вызов подпрограммы-функции выглядит следующим образом:




- Начало -  - Назад -  - Вперед -