Информационные технологии

Меню

Реклама
Похожие статьи:

Популярные записи

1

  • "Особенности использования функций на языке Ассемблер"

    Программа, которая вызывается

    1. Имя процедуры функции должна быть задана в директиве public :

    Public имя процедуры функции

    2. Если процедура функция использует данные, память под которых выделена в другой программе, то в этой программе используется директива extrn, определение 1, определение 2,..

    Общий вид определения для данных, которые передаются, :

    Имя - тип: количество, где

    Имя - имя данного, память под которое выделена в другом модуле;

    Тип - тип данного, используется для определения длины данного в байтах, для задання используются ключевые слова: byte, word, dword, ford, gword, tbyte или имя структуры для 1-, 2-, 4-, 8-, 10 - байтовых данных и данных определенных пользователем. Если в качестве совсем другого имени используется имя, определенное в директиве equ, его тип - аbs;

    количество - задает количество элементов данного типа, используется, если в качестве внешнего передается массив, позволяет применять в процедуре функции операции SIZE, LENGTN.

    Таким образом, имена использованных, но не определенных данных должны определяться директивой estrn, а имена определенных данных, которые могут использоваться другими модулями, определяются директивой public. Чтобы обеспечить возможность одинаково задавать данные в разных модулях, используется директива global. Общий вид директивы :

    global определение 1, определение 2,..

    Определения задаются так же, как для директивы extrn.

    Чтобы определить функцию global, транслятор "смотрит" или выделенная память для данного в этом модуле. Если выделенная, директива эквивалентна директиве local, в противном случае - estrn. Использование global дает возможность сделать общим определение для нескольких модулей. Общая часть может быть помещена в файл, который подключается к модулям с помощью директивы include.

    Общий вид директивы :

    incude имя файла.

    Для файла может быть задано его полное имя.

    Внешняя процедура функция может использоваться другими программами, о которых разработчик загодя может не знать, эта программа не должна "портить" содержание ресурсов общего пользования.

    С учетом вышеуказанных требований общий вид внешней процедуры функции следующий:

    MODEL имя

    .....................

    CODE

    имя проц. proc

    public имя

    ; Сохранение использованных регистров

    ......................

    ; реализация алгоритма

    ; возобновление использованных регистров

    ......................

    ret

    имя endp

    end

    В процедуре, в отличие от главной программы, в директиве end адрес тачки входа не задается.

    Общий вид викликаючої программы :

    MODEL имя

    .....................

    extrn имя - проц. proc

    .....................

    CODE

    begin

    ..................

    end begin

    Директивы public и extrn в этих программах можно заменить директивой global имя - проц: proc. Но все-таки рекомендуется использовать директивы public и extrn, так как они позволяют более глубоко выучить механизм связи модулей. Именно эти директивы наиболее часто используются в программах. После уверенного использования этих директив, их можно заменить директивой global.

    Для создания программы из нескольких модулей, выполняется раздельная трансляция для каждого модуля tasm имя - модуля 1, tasm имя - модуля 2,.. и компоновка всех модулей вместе tlink имя - модуля 1, имя модуля 2.. Для формирования настроенной информации используются те же ключи, что и для одномодульних программ.