Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / Турбо Ассемблер / Использование Турбо Ассемблера /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Общие принципы программирования - Программирование от RIN.RU
Общие принципы программирования



Выражения и операнды


Основное различие между выражениями режима Ideal и режима MASM состоит в функции, которую выполняют квадратные скобки. В режиме Ideal квадратные скобки всегда относятся к содержимому заключаемой в них величины. Квадратные скобки никогда не приводят в подразумеваемому сложению. Однако многие стандартные конструкции MASM в режиме Idealе не допускаются.


В режиме Ideal квадратные скобки должны использоваться для получения содержимого элемента. Например:


mov ax,wordptr


приводит к выводу предупреждающего сообщения, если вы пытаетесь загрузить указатель (wordptr) в регистр (AX). Корректной будет следующая форма:


mov ax,[wordptr]


Здесь ясно, что вы загружаете содержимое ячейки, адресуемой с помощью wordptr (в текущем сегменте данных DS) в регистр AX.


Если вы хотите сослаться на смещение идентификатора в сегменте, то вы должны явно использовать операцию OFFSET, например:


mov ax,OFFSET wordptr


Операции


Изменения, внесенные в операции выражений в режиме Ideal, позволяют повысить мощность и гибкость некоторых операций, оставив без изменения общее поведение выражений. Для того, чтобы содействовать некоторым комбинациям операций, изменен порядок старшинства некоторых операций.


Аккуратно задавайте точку (.) в элементах структуры, на которые вы ссылаетесь. Операция точки для элементов структур в режиме Ideal является более строгой. Выражение слева от точки должно представлять собой имя элемента структуры. Приведем примеры загрузки регистров значениями конкретных элементов структур:


; Опишем переменные с помощью структурных типов
S_Stuff SomeStuff <>
O_Stuff OtherStuff <>
mov ax,[S_Stuff.Amount] ; загрузить значение размером в слово
mov bl,[O_Stuff.Amount] ; загрузить значение размером в байт




Подавление корректировок


В режиме Ideal Турбо Ассемблер не генерирует сегментных корректировок для частных сегментов (private), которые выравниваются на границу страницы или параграфа. Так как компоновщик не требует подобных корректировок, при ассемблировании программ в режиме Ideal может быть получен объектный код меньшего объема, компоновку которых компоновщик выполняет более быстро, чем компоновку объектных файлов, сгенерированных в режиме MASM. Далее показывается, каким образом такие корректировки производятся в режиме MASM (но не в режиме IDEAL):


SEGMENT DATA PRIVATE PARA
VAR1 DB 0
VAR2 DW 0
ENDS
SEGMENT CODE
ASSUME ds:DATA
mov ax,VAR2 ; корректировок не требуется
ENDS


Примечание: Это различие не влияет на код, который вы пишете. Здесь об этом упоминается только для вашего сведения.


Операнд инструкции BOUND


В инструкции BOUND требуется указывать операнд типа WORD (слово), а не DWORD (двойное слово). Это позволяет вам определить в нижнюю и верхнюю границу в виде двух констант размером в слово, что устраняет необходимость преобразования операнда в DWORD явным образом (с помощью DWORD PTR). В режиме MASM вы должны записывать:


BOUNDS DW 1,4 ; нижняя и верхняя границы
BOUND DWORD PTR BOUNDS ; требуется в режиме MASM


Однако в режиме Ideal требуется только записать:


BOUNDS DW 1,4 ; нижняя и верхняя границы
BOUND [BOUNDS] ; допускается в режиме Ideal


<<<  НазадВперед  >>>
 1  2  3  4  5  6  7 


 8  Комментарии к статье  8 8  Обсудить в чате

8  В тему

Начало работы на Турбо Ассемблере

Использование директив и параметров

Объектно-ориентированное программирование

Использование выражений и значений идентификаторов

Директивы выбора процессора

Использование моделей памяти программы и сегментации

Определение типов данных

Задание и использование счетчика адреса

Описание процедур

Управление областью действия идентификаторов

Определение данных

Расширенные инструкции

Использование макрокоманд

Использование условных директив

Интерфейс с компоновщиком

Генерация листинга

Интерфейс Турбо Ассемблера и Borland C++

Интерфейс Турбо Ассемблера с Турбо Паскалем

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь