Главная Обратная связь

Дисциплины:






LOCAL realbyte: BYTE:1



Счетчик1 определяет количество элементов с данным именем, Общий размер места ,выделяемого в стеке ,является произведением счетчика1 на счетчик2 и на размер одного элемента, определяемого типом элемента. Значение счетчика1 ,принимаемого по умолчанию -1.

Если в конце списка аргументов указан символ равенства и идентификатор ,то Turbo Assembler вычисляет общий размер блока аргументов в байтах и присваивает результат этому идентификатору. Это значение можно использовать в качестве аргумента команды RET , особенно если не используется соглашение о поддержке языков высокого уровня .В этом случае перед возвратом в вызывающую процедуру выполняется очистка стека от всех аргументов (‘это соответствует соглашениям языка PASCAL о вызовах процедур).

 

 

Описание

LOCAL LcalArray : byte : 100, LocalCount : word = AUTO_SIZE

 

определяет автоматически размещаемые переменные LocalArray и LocalCount. Значение метки LocalArray устанавливается эквивалентным [BP-100], а LocalCount - [BP-102], а в тексте процедуры можно обращаться по этим символьным именам. AUTO_SIZE - общее количество байтов, необходимое для размещения локальных переменных. Это значение необходимо вычесть из SP для выделения места в стеке под размещение указанных переменных.

Пример использования директивы LOCAL:

...

_TestSub PROC

LOCAL LocalArray:byte:100,LocalCount:word=AUTO_SIZE

push bp

mov bp,sp

sub sp,AUTO_SIZE

mov [LocalCount],10

...

mov cx,[LocalCount]

mov al,’A’

lea bx,[LocalArray]

FillLoop:

mov [bx],al

inc bx

loop FillLoop

mov sp,bp

pop bp

ret

_TestSub ENDP

...

 

 

Другим средством Turbo Assembler, предназначенным для улучшения интерфейса , является директива ARG. Директива ARG имеет следующий формат:

ARG аргумент [, аргумент] ... [= идентификатор]

[RETURNS аргумент [, аргумент ]]

Синтаксис параметра аргумент точно такое же как и для аргумента директивы LOCAL. В Turbo Assembler версии 3.2 или более поздней можно задать значение счетчика2, используя ключевое слово ?, которое указывает на переменное количество аргументов, предаваемых в процедуру. Например, если имеется следующее описание аргументов:

ARG tmp: WORD: ?

то аргумент tmp может состоять из любого количества слов.

Аргументы и локальные переменные адресуются в процедуре относительно регистра BP. Например:

...

func PROC NEAR

ARG a:WORD, b:DWORD:4, c:BYTE = d

LOCAL x:DWORD, y:WORD:2 = z

...

определяет a - [BP+4], b - как [BP+6], c - как [BP+14], d - как 20 (так как длина с по умолчанию равна 2) ; x - как [BP-2], y - как [BP-6] z - как 8.

Директива RETURN указывает на параметры, возвращаемые процедурой.

Директивы упрощенного описания сегментов

Директива MODEL

Директива MODEL позволяет задавать в программе одну из нескольких стандартных моделей сегментаций. Кроме того, ее можно использовать для указания языка в процедурах программы.

Синтаксист директивы MODEL:

.MODEL[модификатор]модель_памяти [имя_кодового_сегмента]

[,[модификатор_языка] язык][,модификатор]

Модель памяти может принимать одно из следующих значений:





sdamzavas.net - 2020 год. Все права принадлежат их авторам! В случае нарушение авторского права, обращайтесь по форме обратной связи...