Консультация № 138082
27.05.2008, 14:41
50.00 руб.
0 3 2
Напиши макро, которое вызывают с помощью:
LIST 100, SPACE


SPACE DW ?
DW OFFSET SPACE + 4
DW ?
DW OFFSET SPACE + 8




DW ?
DW OFFSET SPACE + 396
DW ?
DW -1

Подсказка: можно воспользоваться дополнительным макро, которое будет читаться из макро LIST
Оцените, для чего может использоваться это макро.

Обсуждение

давно
Старший Модератор
31795
6196
27.05.2008, 14:50
общий
А что этот макрос дожжен делать?
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
7438
7205
30.05.2008, 13:32
общий
это ответ
Здравствуйте, Sbuber!
Макро под TASM и пример использования в приложении
Макро используется для формирования связанного списка записей
следующего вида:
<font color=blue>rec struc
value dw ?
next dw ?
rec ends</font>
где value - значение поля значения записи,
next - адрес следующей записи в списке.
Число записей и имя списка задаются параметрами макро.
Для чего можно использовать?...Да везде, где нужно построить подобный список...


Приложение:
.model tiny LIST MACRO @COUNT,@NAME local @@off @@off = offset @NAME ;будем писать этот адрес в поле следующей записи @NAME LABEL WORD ;адрес списка IFE @COUNT ;если @COUNT=0, то будет только метка... ELSE ;иначе строим dw ? ;поле данных первой записи rept @COUNT-1 ;середина (на 1 меньше, чем число записей) @@off = @@off + 4 ;готовим значение адреса следующей записи dw @@off ;строим поле адреса следующей записи dw ? ;поле данных следующей записи ENDM ;циклим @COUNT-1 раз dw -1 ;завершаем список признаком конца ENDIF ;завершаем анализ значения счетчика ENDM .data LIST 100,SPACE ;построим список .code .startup lea ax,SPACE ;чтобы проще было находить в отрадчике .exit 0 end
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Старший Модератор
31795
6196
30.05.2008, 14:16
общий
это ответ
Здравствуйте, Sbuber!

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

О файле листинга:
В строке 16 со смещением 100Н в основной программе запускается макрос.
В строке 17 со смещением 100Н начинает работать макрос первого уровня(1 в начале строки) метка Space получает адрес относительно начала сегмента.
В строках 18-19 работает макрос второго уровня, он заполняет память нужными значениями.
Удачи!

Приложение:
MODEL tinyList macro count,oLabeloLabel Label wordxLabel = 1 rept count dw ? dw oLabel+xLabel*4xLabel = xLabel +1 endm dw ? dw -1endm.186CODESEGorg 100hstart: List 100,Space end start
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа