КАТЕГОРИИ: Архитектура-(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) |
ПРИМЕР применения команды repne scas
JCXZ меткаЦепочкуПросканировалиПолностью REPX SCAS адрес_приемника Анализ причины выхода из цикла ПРЕФИКСЫ ПОВТОРЕНИЯ ДЛЯ SCAS Если эта метка была определена директивой DD, то содержимое аккумулятора EAX сравнивается с двойным словом цепочки. Если эта метка была определена директивой DW, то содержимое аккумулятора AX сравнивается со словом цепочки. РАЗМЕР ЭЛЕМЕНТОВ определяется по атрибуту приемника. SCAs адрес_приемника У этой команды машинного кода нет. Она существует только для удобства программиста. ФОРМАТЫ КОМАНД СКАНИРОВАНИЯ SCAS адрес_приемника РЕАЛЬНО ТРАНСЛЯТОР СОЗДАЕТ ТАКИЕ КОМАНДЫ: SCASB SCASW SCASD
Вычитает из «ключа» (байта, слова или двойного слова, которые находятся в аккумуляторе), элемент цепочки, адресуемой операндом адрес_приемника. Если эта метка была определена директивой DB, При транслятор преобразует ее в одну из трех машинных команд: CMPSB, CMPSW или CMPSD.
REPE или REPZ — если необходимо организовать ПРОПУСК одинаковых «ключей» в цепочке. Сканирование делается до тех пор, пока не будет выполнено одно из двух условий: • Или достигнут конец цепочки (содержимое CX равно нулю); • Или в цепочке встретился элемент, НЕ СОВПАДАЮЩИЙ с «ключом» из аккумулятора (флаг ZF стал равен нулю). REPNE или REPNZ — если нужно организовать ПОИСК в цепочке элемента, равного «ключу». Сканирование проводится до тех пор, пока не будет выполнено одно из двух условий:
• Или достигнут конец цепочки (содержимое CX равно нулю); • Или в цепочке встретился элемент, СОВПАДАЮЩИЙ с «ключом» из аккумулятора (флаг ZF стал равен единице).
; тут ситуация, когда цикл сканирования ; При этом в СХ останется НЕНУЛЕВОЕ значение. меткаЦепочкуПросканировалиПолностью: ; а тут ситуация, когда причиной выхода <1> Поиск в строке первой русской ‘а’. Автор: В. ЮРОВ <2> MASM <3> MODEL small <4> STACK 256 <5>.DATA <6>;тексты сообщений <7> fnd db 0ah,0dh,'Символ найден! ','$' <8> nochar db 0ah,0dh,'Символ не найден.','$' <9>;строка для поиска <10> string db 'Поиск символа в этой строке.',0ah,0dh,'$' <11>.CODE <12> ASSUME ds:@data,es:@data <13> main: <14> mov ax,@data <15> mov ds,ax <16> mov es,ax;настройка ES на DS <17> mov ah,09h <18> lea dx,string <19> int 21h;вывод сообщения string <20> mov al,'а';символ для поиска — `а`(кириллица) <21> cld;сброс флага df <22> lea di,string;загрузка в es:di смещения строки <23> mov cx,29;для префикса repne — длина строки <24>;поиск в строке (пока искомый символ ; и символ в строке не совпадут) <25>;выход при первом совпадении <26> REPNE SCAS string <27> je found;если равны — переход на обработку, <28> failed:;иначе выполняем некоторые действия <29>;вывод сообщения о том, что символ не найден <30> mov ah,09h <31> lea dx,nochar <32> int 21h;вывод сообщения nochar <33> jmp exit;на выход <34> found:;совпали <35> mov ah,09h <36> lea dx,fnd <37> int 21h;вывод сообщения fnd <38>;теперь, чтобы узнать место, где совпал элемент в строке, <39>;необходимо уменьшить значение в регистре di ; и вставить нужный обработчик <40> dec di <41>;... <вставьте код-обработчик здесь >... <42> exit:;выход <43> mov ax,4c00h <44> int 21h <45> end main
ЗАГРУЗКА ЭЛЕМЕНТА ЦЕПОЧКИ В АККУМУЛЯТОР
Дата добавления: 2014-01-07; Просмотров: 481; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |