Ассемблер и программирование для IBM PC


          

с клавиатуры до 30 имен,


Программа, показанная на рис.14.6, обеспечивает ввод с клавиатуры до 30 имен, сортировку введенных имен в алфавит ном порядке и вывод на экран отсортированного списка имен.
------------------------------------------------------------ ------------------------------------------------------------ Рис.14.6. Сортировка таблицы имен.
ОПЕРАТОРЫ ТИПА, ДЛИНА И РАЗМЕРА ------------------------------------------------------------
Ассемблер содержит ряд специальных операторов, которые могут оказаться полезными при программировании. Например, при изменении длины таблицы придется модифицировать программу (для нового определения таблицы) и процедуры, проверяющие конец таблицы. В этом случае использование операторов TYPE (тип), LENGTH (длина) и SIZE (размер) позволяют уменьшить число модифицируемых команд. Рассмотрим определение следующей таблицы из десяти слов:
TABLEX DW 10 DUP(?) ;Таблица из 10 слов
Программа может использовать оператор TYPE для определения типа (DW в данном случае), оператор LENGTH для определения DUP-фактора (10) и оператор SIZE для определения числа байтов (10 х 2 = 20). Следующие команды иллюстрируют три таких применения:
MOV AX,TYPE TABLEX ;AX=0002 MOV BX,LENGTH TABLEX ;BX=000A (10) MOV CX,SIZE TABLEX ;CX=0014 (20)
Ассемблер для IBM PC. Глава 14 33
Значения LENGTH и SIZE можно использлвать для окончания табличного поиска или сортировки. Например, если регистр SI содержит продвинутый адрес таблицы при осуществлении поиска, то проверка на конец таблицы может быть следующий:
CMP SI,SIZE TABLEX
В главе 23 "Справочник по директивам ассемблера" дается детальное описание операторов TYPE, LENGTH и SIZE.
ОСНОВНЫЕ ПОЛОЖЕНИЯ НА ПАМЯТЬ ------------------------------------------------------------
ъ Для большинства применений, определяйте таблицы, имеющие родственные элементы одной длины и формата данных.
ъ Стройте таблицы на основе форматов данных. Например, элементы могут быть символьные или числовые длиной один, два и более байтов каждый. Может оказаться более практичным определение двух таблиц: одна, например, для трехсимвольных значений номеpов, а другая для двухбайтовых значений цен единиц товара. В процессе поиска адрес элементов таблицы номеров должен увеличи ваться на 3, а адрес элементов таблицы цен - на 2. Если сохранить число выполненных циклов при поиске на равно, то, умножив это число на 2 (SHL сдвиг влево на один бит), получим относительный адрес искомого значения цены. (Начальное значение счетчика циклов должно быть равно -1).

Содержание  Назад  Вперед