русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Команда lods

lods адрес_источника (LOaD String) — загрузить элемент из цепочки в аккумулятор al/ax/eax.

Команда имеет один операнд, обозначающий строку в основном сегменте данных. Работа команды заключается в том, чтобы извлечь элемент из цепочки по адресу, соответствующему содержимому пары регистров ds:esi/si, и поместить его в регистр eax/ax/al. При этом содержимое esi/si подвергается инкременту или декременту (в зависимости от состояния флага df) на значение, равное размеру элемента.

Эту команду удобно использовать после команды scas, локализующей местоположение искомого элемента в цепочке.

Префикс повторения в этой команде может и не понадобиться — все зависит от логики программы.

В качестве примера рассмотрим листинг 4. Программа сравнивает командой cmps две цепочки байт в памяти string1 и string2 и помещает первый несовпавший байт из string2 в регистр al. Для загрузки этого байта в регистр-аккумулятор al используется команда lods. Префикса повторения в команде lods нет, так как он попросту не нужен.

Листинг 4. Использование lods для загрузки байта в регистр al<1> ;prg_11_4.asm<2> MASM<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<12> ;привязка ds и es к сегменту данных<13> assume ds:@data,es:@data<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 смещения<25> ;строки string1<26> lea si,string2 ;загрузка в ds:si смещения<27> ;строки string2<28> mov cx,29 ;для префикса repe — длина строки<29> ;поиск в строке (пока нужный символ и символ в строке не равны)<30> ;выход — при первом несовпавшем<31> repe cmps string1,string2<32> jcxz eql ;если равны — переход на eql<33> jmp no_eq ;если не равны — переход на 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 ;загрузим элемент из строки в AL<50> ;нетрудно догадаться, что в нашем примере это символ — "н"<51> exit: ;выход<52> mov ax,4c00h<53> int 21h<54> end main

Просмотров: 869


Вернуться в оглавление



Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.