Дипломированных специалистов «Информатика и вычислительная техника»


Сканирование строки байтов, слов, двойных слов



Download 12,06 Mb.
Pdf ko'rish
bet150/357
Sana22.02.2022
Hajmi12,06 Mb.
#115195
TuriДиплом
1   ...   146   147   148   149   150   151   152   153   ...   357
Bog'liq
assembler uchebnik dlya vuzov 2-e izd YuRXUW1

Сканирование строки байтов, слов, двойных слов
Система команд процессора, так же как в случае операций-примитивов пересылки
и сравнения, предоставляет команды сканирования, явно указывающие размер
элемента цепочки — SCASB, SCASW или SCASD. Помните, что даже если вы этого не
делаете, то ассемблер все равно преобразует команду SCAS в одну из этих трех ма-
шинных команд.


Загрузка элемента цепочки в аккумулятор
Загрузка элемента цепочки в аккумулятор
Операция-примитив загрузки элемента цепочки в аккумулятор позволяет извлечь
элемент цепочки и поместить его в регистр-аккумулятор AL, АХ или ЕАХ. Эту опера-
цию удобно использовать вместе с поиском (сканированием) с тем, чтобы, найдя
нужный элемент, извлечь его (например, для изменения). Возможный размер из-
влекаемого элемента определяется применяемой командой. Программист может
использовать четыре команды загрузки элемента цепочки в аккумулятор, работа-
ющие с элементами разного размера:
т LODS адрес_источника — загрузить элемент из цепочки (LOaD String) в регистр-
аккумулятор AL/AX/EAX;
LODSB — загрузить байт из цепочки (LOaD String Byte) в регистр AL;
* LODSW — загрузить слово из цепочки (LOaD String
в регистр АХ;
LODSD — загрузить двойное слово (LOaD String Double Word) из цепочки в ре-
гистр ЕАХ.
Рассмотрим работу этих команд на примере команды
Команда LODS
Синтаксис команды LODS:
адрес_источника
Команда имеет один операнд, обозначающий строку в основном сегменте дан-
ных. Работа команды заключается в том, чтобы извлечь элемент из цепочки по
адресу, соответствующему содержимому пары регистров
ESI/SI, и поместить
в регистр
При этом содержимое ESI/SI подвергается инкременту или
декременту (в зависимости от состояния флага DF) на величину, равную размеру
элемента. Эту команду удобно использовать после команды SCAS, локализующей
местоположение искомого элемента в цепочке. Префикс повторения в этой команде
может и не понадобиться — все зависит от логики программы.
В качестве примера рассмотрим листинг
в котором командой CMPS срав-
ниваются две цепочки байтов в памяти
и
и первый не совпавший
байт из
помещается в регистр AL. Для загрузки этого байта в регистр-акку-
мулятор AL используется команда LODS. Префикса повторения в команде LODS нет,
так как он попросту не нужен.
Листинг
Использование команды LODS для загрузки байта в регистр AL
MODEL small
STACK 256
;строки для сравнения
stringl db "Поиск символа в этой
string2 db "Поиск символа не в этой
db "Строки
fnd db "Несовпавший элемент в регистре
;привязка ds и es к сегменту данных
assume
продолжение


262 Глава
Цепочечные команды
Листинг
 (продолжение)
та i
загрузка сегментных
mov
lea
int 21h
lea
i t
h
a i , s
 % 1
lea si .
:
eql
вывод
сброс
з а г р у з к а в
смещения строки
з а г р у з к а в
строки
для префикса
-- длина строки
поиск в строке
нужный символ и символ
в строке не равны)
при
не
если равны - переход на eql
если не равны - переход на no_eq
выводим сообщение о совпадении строк
mov
lea
int
no
mov ah ,
i n t 21h
сообщения
чтобы извлечь несовпавший
из строки

значение регистра si и тем самым перемещаемся
позиции элемента в строке
dec si
использует
;теперь ds:si указывает на позицию в
вывод сообщения
на выход
обработка несовпадения элементов
загрузим элемент из строки в AL
что в нашем примере
символ -
выход
string2
догадаться
mov
int
Загрузка в

Download 12,06 Mb.

Do'stlaringiz bilan baham:
1   ...   146   147   148   149   150   151   152   153   ...   357




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish