Сборник по задачам и примерам Assembler


Неупорядоченный поиск - часть 2


jmpexit

Второй вариант неупорядоченного поиска

Программу первого варианта линейного поиска можно немного усовершенствовать вводом дополнительного элемента — барьера.

ПРОГРАММА prg27_430

//prg27_430 - программа на псевдоязыке линейного поиска в массиве (вариант 2). //Вход: mas[n] - неупорядоченная последовательность двоичных значений длиной ri+1; k -искомое значение

//Выход: i - позиция в mas[n] (0<i<n-l), соответствующая найденному символу.

ПЕРЕМЕННЫЕ

INT_BYTE n: //длина mas[n]

INT_BYTE mas[n+l]: //массив для поиска размерностью п+1 (О..п)

INT BYTE k: //искомый элемент

INT_WORD i=0 //индекс

НАЧ_ПРОГ

i:=0: mas[n]:=k //установить барьер 52: ЕСЛИ (k==mas[i]) TO ПЕРЕЙТИ_НА _exit

1:-1+1: ПЕРЕЙТИ_НА s2 _exit: ЕСЛИ i>n TO ПЕРЕЙТИ_НА exit_error //вывести значение i по месту требования exit_error: //вывести сообщение об отсутствии элемента КОН_ПРОГ

:prg27_430 - программа на ассемблере линейного поиска в массиве (вариант 2).

.data

: задаем массив

mas db 50h. 08h. 52h. 06h. 90h. 17h. 89h. 27h. 65h. 42h. 15h. 51h. 61h .67h.76h.70h

n=$-mas

db Oh дополнительный элемент для барьера k db 15h

.code

xor si.si

mov al ,k

mov mas[n].al :i:=0: mas[n]:=k //установить барьер s2: cmpal.mas[si] ;ЕСЛИ k==mas[i] TO ПЕРЕЙТИ_НА _exit

je ok

inc si

jmps2 ;i:-1+l: ПЕРЕЙТИ_НА s2 ok: emp si,n :ЕСЛИ i>n TO ПЕРЕЙТИ_НА exit_error

je exit_error :вставить реакцию на удачный результат поиска

jmp exit exit_error: ;реакция на неудачный результат поиска




- Начало -  - Назад -  - Вперед -