Ассемблер и программирование для IBM PC


          

ГЛАВА 21. Компановка программ - часть 13


Ассемблер для IBM PC. Глава 21 13

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

CALL подпрограмма (параметр-1,параметр-2,...)

------------------------------------------------------------ ------------------------------------------------------------ Рис.21.8. Этапы связи BASIC и ассемблера.

Ассемблерная подпрограмма может получить доступ к этим параметрам, используя регистр BP в виде [BP], как это делалось ранее на рис.21.3. В этом случае необходимо определить операнд в команде RET, соответствующий длине адресов параметров в стеке. Например, если оператор CALL передает три параметра то возврат должен быть закодирован в виде RET 6.

КОМПАНОВКА ПРОГРАММ НА ЯЗЫКЕ PASCAL И АССЕМБЛЕРЕ ------------------------------------------------------------

В данном разделе показано, как можно установить связь между программами на языке PASCAL фирм IBM и MicroSoft с программами на ассемблере. На рис.21.9 приведен пример связи простой PASCAL-программы с ассемблерной подпрограммой. PASCAL-программа скомпилирована для получения OBJ-модуля, а ассемблерная программа оттранслирована также для получения OBJ-модуля. Программа LINK затем компанует вместе эти два OBJ-модуля в один выполнимый EXE-модуль. В PASCAL-программе определены две переменные: temp_row и temp_col, которые содержат введенные с клавиатуры значения строки и колонки соответственно. Программа передает адреса переменных temp_row и temp_col в виде парамтеров в ассемблерную подпрограмму для установки курсора по этим координатам. PASCAL-программа определяет также имя ассемблерной подпрограммы в операторе procedure как move_cursor и определяет два параметра, как extern (внешние). Оператор в PASCAL-программе, который вызывает ассемблерную программу по имени и передает парметры, имеет следующий вид: move_cursor (temp_row, temp_col);




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