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


          

ГЛАВА 14. Обработка таблиц - часть 4


MOV AX,STOKNIN LEA SI,STOKTAB C20: MOV BX,[SI] CMP AX,BX JA или JB ...

В программе такого типа другая таблица может определять стоимость единицы товара. Программа может локализовать элемент таблицы, вычислить продажную стоимость (количество товара умножить на стоимость единицы товара) и выдать на экран наименование и прадажную стоимость товара. В примере на рис. 14.2 таблица содержит двухбайтовые номера и десятибайтовые наименования. Детальное программиро вание будет oтличаться для различного числа и длины элементов. Например, для сравнения трехбайтовых полей можно использовать команду REPE CMPSB, хотя эта команда также включает использование pегистра CX.

Таблицы с ранжированием

Подохожный налог дает характерный пример таблицы с ранжированными значениями. Представим себе таблицу, содержащую размеры доходов oблагаемых налогами, процент налога и поправочный коэффициент:

Размер дохода Процент налога Поправочный к-нт

0-1000.00 10 0,00 1000,01-2500,00 15 050,00 2500,01-4250,00 18 125,00 4250,01-6000,00 20 260,00 6000,01 и более 23 390,00

Ассемблер для IBM PC. Глава 14 28

В налоговой таблице процент увеличивается в соответствии с увеличением налогооблагаемого дохода. Элементы таблицы доходов содержат максимальные величины для каждого шага:

TAXTBL DD 100000,250000,425000,600000,999999

для организации поиска в такой таблице, программа сравнивает доxод налогоплатильщика с табличным значением дохода:

если меньше или равно, то использовать соответствующий процент и поправку; если больше, то перейти к следующему элементу таблицы.

Величина налога рассчитывается по формуле:

Доход х Процент налога : 100 - поправочный к-нт

Табличный поиск с использованием сравнения строк

Если элемент таблицы превышает длину в два байта, то для операции сравнения можно использовать команду REPE CMPS. Предположим, что таблица инвентарных номеров (рис.14.2) переделана для трехбайтовых номеров. Если STOKNIN является первым полем в области данных, а STOKTAB - вторым, то они могут выглядеть cледующим образом:




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