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


          

Для ясности можно закодировать элементы


STOKTBL DB 12,'Computers',14,'Paper....',17,'Diskettes'
Для ясности можно закодировать элементы таблицы вертикально:
STOKTBL DB 12, 'Computers' DB 14, 'Paper....' DB 17, 'Diskettes'
Рассмотрим теперь различные способы использования таблиц в программах.
ПРЯМОЙ ТАБЛИЧНЫЙ ДОСТУП ------------------------------------------------------------
Предположим, что пользователь ввел номер месяца - 03 и программа должна преобразовать этот номер в алфавитное значение March. Программа для выполнения такого преобразова ния включает определение таблицы алфавитных названий месяцев, имеющих одинаковую длину. Так как самое длинное название - September, то таблица имеет следующий вид:
MONTBL DB 'January..' DB 'February.' DB 'March....'
Каждый элемент таблицы имеет длину 9 байт. Адрес элемента 'January' - MONTBL+0, 'February' - MONTBL+9, 'March' - MONTBL+18. Для локализации месяца 03, программа должна выполнить следующее:
1. Преобразовать введенный номер месяца из ASCII 33 в двоичное 03. 2. Вычесть единицу из номера месяца: 03 - 1 = 02 3. Умножить результат на длину элемента (9): 02 х 9 = 18 4. Прибавить произведение (18) к адресу MONTBL; в результате получится адрес требуемого названия месяца: MONTBL+18.
------------------------------------------------------------ ------------------------------------------------------------ Рис. 14.1. Прямая табличная адресация.
На рис.14.1 приведен пример прямого доступа к таблице названий месяцев. Для краткости в программе используются вместо девятисимвольных названий - трехсимвольные. Введенный номер месяца определен в поле MONIN. Предположим, что некоторая подпрограмма формирует запрос на ввод номера месяца в ASCII-формате в поле MONIN. Описанная техника работы с таблицей называется прямым табличным доступом. Поскольку данный алглритм непосредствен но вычисляет адpес необходимого элемента в таблице, то в программе не требуется выполнять операции поиска.
Ассемблер для IBM PC. Глава 14 26
Хотя прямая табличная адресация очень эффективна, она возможна только при последовательной организации. То есть можно использовать такие таблицы, если элементы располагаются в регулярной последовательности: 1, 2, 3,... или 106, 107, 108,... или даже 5, 10, 15. Однако, не всегда таблицы построены таким образом. В следующем разделе рассматриваются таблицы, имеющие нерегулярную организацию.

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