Микропроцессорная техника: практический курс : учебное пособие для студентов Физико-технологического института, обучающихся по направлениям подготовки "Ядерная физика и технологии", "Биомедицинская инженерия"
Интерфейс между C51 и ассемблером
Download 0.63 Mb. Pdf ko'rish
|
978-5-321-02171-21 2012 (1)
4.4. Интерфейс между C51 и ассемблером
Технология передачи параметров в библиотеках Keil µVision опти- мизирована для работы с компилятором C51. В этой связи взаимодей- ствие библиотечных функций и программ, написанных на ассемблере, осуществляется по тем же правилам, что и интерфейс между C51 и ассемблером. 97 4. Стандартные библиотеки Keil µVision Макроассемблер A51, входящий в состав Keil µVision, при генера- ции кода формирует объектные модули в формате OMF-51. Соблюде- ние нескольких простых правил обеспечивает взаимную доступность модулей, подготовленных на C51 и A51. Переменные, декларирован- ные как public в ассемблерной программе, доступны из модулей, подготовленных на C51 как external, и наоборот. Функция, написанная на C51, по умолчанию передает до трех пара- метров через регистры микроконтроллера. Если количество парамет- ров больше трех, то остальные параметры передаются через фиксиро- ванную область памяти. Директива NOREGPARMS позволяет запретить передачу параметров через регистры. В этом случае все параметры будут переданы только через фиксированную область памяти. Ком- пилятор C51 при генерации кода маркирует функции, передающие параметры через регистры, значком подчеркивания ‘_’ перед именем функции. Функции, передающие параметры только через фиксиро- ванную область памяти, не маркируются таким значком. При рабо- те с арифметическими библиотеками C51 обычно используются один или два параметра. Технология передачи параметров через регистры микроконтроллера представлена в табл. 4.1. Таблица 4.1. Передача параметров функций через регистры Номер char, int, long, generic ptr аргумента 1-byte ptr 2-byte ptr float 1 R7 R6_R7 R4–R7 R3–R1 2 R5 R4_R5 R0–R3 R3–R1 3 R3 R2_R3 – R3–R1 Примечание. Старший байт записан всегда слева. Для generic ptr: R3 – тип памя- ти, R2_R1 – указатель. R0–R3 – только для библиотечных функций, перечисленных в табл. 4.3 . При передаче параметров через фиксированную область памяти библиотечные функции C51 используют специальные сегменты с име- нами: ?function_name?BYTE ?function_name?BIT Вместо «function_name» в имена сегментов подставляют имя соответствующей функции. Первый из сегментов используют для пе- редачи байтовых переменных, а второй – для передачи битовых пе- ременных. Для всех параметров резервируют место в этих сегментах, даже если эти параметры передаются через регистры. Параметры раз- мещаются в порядке их декларирования в функции. 98 4.5. Арифметические функции библиотеки Если функция возвращает значение, то оно всегда передается через регистры (табл. 4.2). Таблица 4.2. Возврат значения функции через регистры Тип значения Регистры Описание Бит C Возврат бита через флаг переноса char или 1-byte ptr R7 Возврат байта через R7 int или 2-byte ptr R6_R7 R6 – старший байт long или float R4–R7 R4 – старший байт generic ptr R3–R1 R3 – тип памяти, R2 – старший байт Download 0.63 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling