Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Смысл сохранения аккумулятора sтоs




ПРИМЕР НА ПРИМЕНЕНИЕ LODS

<1>Извлечение отличающегося символа строки в регистр AL (В.Юров)

<3> MODEL small

<4> STACK 256

<5>.DATA

<6>;строки для сравнения

<7> string1 db 'Поиск символа в этой строке.',0ah,0dh,'$'

<8> string2 db 'Поиск символа не в этой строке.',0ah,0dh,'$'

<9> mes_eq db 'Строки совпадают.',0ah,0dh,'$'

<10> fnddb 'Несовпавший элемент в регистре al',0ah,0dh,'$'

<11>.CODE

<13> assume ds:@data,es:@data;привязка ds и es к сегменту данных

<14> main:

<15> mov ax,@data;загрузка сегментных регистров

<16> mov ds,ax

<17> mov es,ax;настройка es на ds

<18> mov ah,09h

<19> lea dx,string1

<20> int 21h;вывод string1

<21> lea dx,string2

<22> int 21h;вывод string2

<23> cld;сброс флага df

<24> lea di,string1;загрузка в es:di смещения строки-приемника

<26> lea si,string2;загрузка в ds:si смещения строки-источника

<28> mov cx,29;для префикса repe — длина строки

<29>;поиск в строке (пока символы в строках равны)

<30>;выход — при первом несовпавшем

<31> REPE CMPS string1,string2

<32> jcxz eql;если строки равны

<33> jmp no_eq;если строки не равны

<34> eql:;выводим сообщение о совпадении строк

<35> mov ah,09h

<36> lea dx, mes_eq

<37> int 21h;вывод сообщения mes_eq

<38> jmp exit;на выход

<39> no_eq:;обработка несовпадения элементов

<40> mov ah,09h

<41> lea dx, fnd

<42> int 21h;вывод сообщения fnd

<43>;теперь, чтобы извлечь несовпавший элемент из строки

<44>;в регистр-аккумулятор,

<45>;уменьшаем значение регистра si и тем самым перемещаемся

<46>;к действительной позиции этого элемента в строке

<47> dec si;команда lods использует ds:si-адресацию

<48>;теперь ds:si указывает на позицию несовпавшего эл. в string2

<49> LODS string2;загрузим элемент"н“ из string2 в AL

<50>; ЗДЕСЬ ВСТАВИТЬ КОД ОБРАБОТКИ НАЙДЕННОГО СИМВОЛА

<51> exit:;выход

<52> mov ax,4c00h

<53> int 21h

<54> end main

 

СОХРАНЕНИЕ АККУМУЛЯТОРА В ЭЛЕМЕНТЕ ЦЕПОЧКИ

 




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


Дата добавления: 2014-01-07; Просмотров: 246; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.