Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Табличный поиск




2.1. Записать в текстовом редакторе NORTON следующую программу в СОМ-формате:

.286

TITLE TABSRC1 (COM) Табличный поиск

CODESG SEGMENT PARA 'Code'

ASSUME CS:CODESG,DS:CODESG,SS:CODESG,ES:CODESG

ORG 100H;Начало в конце PSP

BEGIN: JMP SHORT MAIN;Обход через данные

;-------------------------------------------------------

STOKNIN DW '23';Элементы данных

STOKTAB DB '05','Excavators'

DB '08','Lifters '

DB '09','Presses '

DB '12','Valves '

DB '23','Processors'

DB '27','Pumps '

DESCRN DB 10 DUP(?)

;--------------------------------------------------------

MAIN PROC NEAR

MOV AX,STOKNIN;Загр. N элемента

XCHG AL,AH

MOV CX,06;Число элементов

LEA SI,STOKTAB;Начальный адрес

A20: CMP AX,[SI];Сравнить элементы

JE A30;Если равны - выйти

ADD SI,12;нет - следующий

LOOP A20

CALL R10ERR;Элем. в табл. не найден

RET

A30: MOV CX,05;Длина описания элем.

LEA DI,DESCRN;Адрес описания элем.

INC SI

INC SI

REP MOVSW;Выделить описание из таблицы

RET

MAIN ENDP

R10ERR PROC

RET; <Вывод сообщения об ошибке>

R10ERR ENDP

CODESG ENDS

END BEGIN

Программа определяет таблицу и выполняет табличный поиск. Таблица содержит шесть пар номеров и наименований. Цикл поиска начинается со сравнения введенного номера в поле STOKNIN с первым номером в таблице. Если номера различные, то адрес в таблице увеличивается для сравнения со следующим номером. Если номера равны, то программа (А30) выделяет наименование из таблицы и записывает

его в поле DESCRN.

Поиск выполняет максимум шесть сравнений, и если требуемый номер в таблице отсутствует, то происходит переход на программу обработки ошибки R10ERR (сама процедура не приводится).

В начале программы имеется команда, которая пересылает содержимое поля STOKNIN в регистр АХ. Хотя STOKNIN определено в сегменте кодов как 3332, команда MOV загрузит в регистр АХ это значение в прямой последовательности байтов 3233. Так как элементы таблицы в сегменте кодов имеют обратную последовательность байтов, то после команды MOV имеется команда XCHG, которая меняет местами байты в регистре АХ, возвращая им обратную последовательность, т.е. 3332. Команда CMP сравнивает сначала правые байты, а затем левые. Следовательно, проверка на равенство будет корректной, но проверки на больше или меньше дадут неправильные результаты.

2.2. Выполнить ассемблирование и компоновку программы. Листинг программы записать в отчет.

2.3. Вызвать отладчик DEBUG на выполнение программы. Выполнить трассировку программы до команды REP MOVSW. Просмотреть сегмент кодов. После каждого шага выполнения команды REP MOVSW просматривать сегмент кодов. Выводы о работе программы записать в отчет.

2.4. С помощью текстового редактора изменить начало программы tabsrc.asm до команды ADD SI,12:





Поделиться с друзьями:


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 389 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Бутерброд по-студенчески - кусок черного хлеба, а на него кусок белого. © Неизвестно
==> читать все изречения...

2464 - | 2389 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.