adfun.ru
| |
BIGLIB |
| большущая библиотека (9812 книг), можно не только прочитать но и скачать бесплатно |
|
| |
ФАНТАСТИКА |
| фентези,
фантастика, фантастические повести |
|
| |
ФИЛОСОФИЯ |
книги, которые заставляют
задуматься над окружающим тебя миром.
|
|
| |
МЕДИЦИНА |
медицинские книги,
методички,
народные лечебники |
|
| |
КУЛИНАРИЯ |
рецепты
тортов, консервирование,
все о спиртных
напитках. |
|
| |
СТИХИ |
| стихи популярных
и не очень авторов |
|
| |
ТВОРЧЕСТВО |
| народное творчество,
стихи, песни и т.д. |
|
| |
ЮМОР |
| анекдоты, приколы,
смешные истории |
|
| |
ЭРОТИКА |
| эротические рассказы,
книги о технике секса,
кама-сутра и др. |
|
|
| |
 |
mov bx,offset @TABLEADDR_LIST
call [(@table_list ptr es:bx).SHOW]
Это аналогично последовательности инструкций, которые Турбо
Ассемблер использует для выполнения косвенного вызова через ТВМ.
Кое-что еще о вызове методов
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Часто может встречаться ситуация, когда необходимо вызвать
метод порождающего объекта из процедуры метода порожденного объ-
Турбо Ассемблер 3.0/tasm/#1-2 = 88 =
екта. Для этого также можно использовать оператор CALL...METHOD.
Аналогично инструкции CALL...METHOD вы можете использовать
расширение инструкции JMP с ключевым словом METHOD. Эта инструк-
ция обеспечивает оптимальную рекурсию. См. Главу 13, где об инс-
трукциях CALL...METHOD и JMP...METHOD рассказывается подробнее.
Создание экземпляра объекта
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Чтобы создать экземпляр объекта, вы можете вызвать метод
конструктора объекта (который выделяет память для экземпляра объ-
екта), или распределить экземпляр объекта в предопределенном сег-
менте данных.
Вы можете создать экземпляр объекта точно также, как вы соз-
даете экземпляр структуры. Рассмотрите, например, следующие эк-
земпляры объектов:
foolist list () ; экземпляр списка
fooqueue label queue
queue () ; экземпляр очереди
queue (list_head=mynode,list_tail=mynode)
; экземпляр очереди
Когда вы создаете экземпляр объекта, вы можете переопреде-
лить любые используемые по умолчанию в объекте данные, значения
которых определены в описании объекта, переопределив эти значения
в скобках. Однако переопределить методы при создании экземпляра
объекта нельзя.
Программирование с объектами
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Хорошо хранить процедуры метода отдельно от описаний метода
(в отдельном файле) и отдельно от кода, использующего данный объ-
ект. Мы рекомендуем помещать процедуры метода в файл с именем,
совпадающим с именем объекта, и расширением .ASM. Например, про-
цедуры метода для объекта связанного списка можно поместить в
файл LIST.ASM. Файл процедур метода должен включать (с помощью
INCLUDE) описания метода из файла .ASO.
В конце данной главы показан пример процедур метода объекта
списка. Чтобы показать общую структуру файла, приведем фрагмент
файла LIST.ASM (его можно найти в примерах на дистрибутивном дис-
ке):
;----------------------------------------------------
;-- Определение объекта связанного списка -----------
;----------------------------------------------------
MODEL SMALL
LOCALS
Турбо Ассемблер 3.0/tasm/#1-2 = 89 =
;** Определить объект связанного списка **
INCLUSE node.aso
;** Создать экземпляр таблицы виртуальных методов **
;** связанного списка **
DATASEG
TBLINST
;** Методы связанного списка **
CODESEG
;;<<все процедуры методов>>
В общем случае следует использовать следующую форму объектно
-ориентированного программирования в Турбо Ассемблере
ЪДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і Файл і Содержимое і
ГДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і<объект>.ASO і INCLUDE <порождающий_объект>.ASO (если он есть),і
і і GLOBAL описание объекта и директива GLOBAL дляі
і і каждой процедуры методов. і
і і і
і<объект>.ASM і INCLUDE <объект>.ASO содержит директиву TBLINSTі
і і и описание процедур методов, содержит метод initі
і і c TBLINIT. і
АДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
Заметим, что вы можете использовать директивы TBLINST и
TBLINIT, даже если в объекте нет виртуальных методов. В этом слу-
чае никаких действий не выполняется. Таким образом, мы рекоменду-
ем вам использовать директивы TBLINST и TBLINIT независимо от на-
личия в объекте виртуальных методов. Поместите директиву TBLINST
в соответствующий сегмент данных, а TBLINIT - в метод инициализа-
ции объекта (который должен быть статическим). Вы должны вызывать
этот метод перед использованием всех других методов объекта.
Пример из области программирования
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
На диске с примерами содержится исчерпывающий пример объект-
но-ориентированного программирования, в котором используются опи-
санные ранее объекты list и queue, а также объект stack. Описан-
ный объект node является базовым объектом для всех данных
пользователя, записанных в связанном списке, очереди или стеке.
Список соответствующих файлов примера приведен в следующей табли-
це:
Файлы примера объектно-ориентированного программирования
Турбо Ассемблер 3.0/tasm/#1-2 = 90 =
Таблица 4.3
ЪДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і Файл і Содержимое і
ГДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і NODE.ASO і Описывает объект node и методы. і
і NODE.ASM і Содержит методы объекта node и экземпляр таб-і
і і лицы виртуальных методов. і
і і і
і LIST.ASO і Описывает объект list и его методы. і
і LIST.ASM і Содержит методы объекта list и экземпляр таб-і
і і лицы виртуальных методов. і
і і і
і QUEUE.ASO і Описывает объект queue и его методы. і
і QUEUE.ASM і Содержит методы объекта queue и экземплярі
і і таблицы виртуальных методов. і
і і і
і STACK.ASO і Описывает объект stack и его методы. і
і STACK.ASM і Содержит методы объекта stack и экземплярі
і і таблицы виртуальных методов. і
і і і
і OOP.ASM і Содержит пример использования этих объектов. і
АДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
Турбо Ассемблер 3.0/tasm/#1-2 = 91 =
Глава 5. Использование выражений и значений идентификаторов
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Выражение и идентификаторы - это основные компоненты прог-
раммы на языка Ассемблера. Выражения используются для вычисления
значений и адресов в памяти. Идентификаторы представляют различ-
ные виды значений. В данной главе описываются различные типы этих
компонентов языка и рассказывается о том, как их использовать.
Константы
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Константы представляют собой числа или строки, которые Турбо
Ассемблер интерпретирует, как фиксированное числовое значение.
Вы можете использовать различные типы числовых форматов, включая
десятичные, шестнадцатиричные, двоичные и восьмеричные.
Числовые константы
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Числовые константы в Турбо Ассемблере всегда начинаются с
цифры (0-9) и содержат произвольное число алфавитно-цифровых
символов. Фактическое значение константы зависит от основания,
которое вы выбираете для ее интерпретации. В Турбо Ассемблере
можно использовать двоичное, восьмеричное, десятичное или шест-
надцатиричное основание, что показано в приведенной ниже таблице:
Основания Таблица 5.1
ЪДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і Основание і Допустимые цифры і
ГДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
ідвоичное і 0 1 і
івосьмеричное і 0 1 2 3 4 5 6 7 і
ідесятичное і 0 1 2 3 4 5 6 7 8 9 і
ішестнадцатиричное і 0 1 2 3 4 5 6 7 8 9 A B C D E F і
АДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
Заметим, что в шестнадцатиричных константах вы можете ис-
пользовать буквы как в верхнем, так и в нижнем регистре.
Турбо Ассемблер определяет основание числовой константы,
проверяя сначала последний ее символ. Символы, используемые для
задания основания при интерпретации константы, приведены в следу-
ющей таблице:
|
adfun.ru
|
|
|
|