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



Download 12,06 Mb.
Pdf ko'rish
bet137/357
Sana22.02.2022
Hajmi12,06 Mb.
#115195
TuriДиплом
1   ...   133   134   135   136   137   138   139   140   ...   357
Bog'liq
assembler uchebnik dlya vuzov 2-e izd YuRXUW1

Оператор выбора switch
Оператор switch (переключатель) в программе на ассемблере можно реализовать
несколькими способами. В данной главе мы рассмотрим два наиболее общих и рас-
пространенных способа — с использованием команд сравнения и с использовани-
ем таблицы. Тем не менее на практике можно встретить и другие способы реализа-
ции оператора switch, наиболее полно отражающие условия конкретной решаемой
задачи (см., например [8] и некоторые примеры в данной книге).


238 Глава
Программирование типовых управляющих структур
В нотации языков С и C++ синтаксис оператора switch выглядит так:
switch
{
case константное
операнд_1
case константное
оп.еранд_2
default:
>
Простейший способ реализации оператора switch в программе на ассемблере
заключается в организации последовательных сравнений с условными перехода-
ми. К примеру, необходимо обработать три возможные альтернативы в програм-
ме, которые идентифицируются целочисленными значениями
;...
al,l ;проверка первой альтернативы (константное

;равно, идем на обработку
cmp
;проверка второй альтернативы (константное
je
;равно, идем на обработку
cmp al,3 ;проверка третьей альтернативы (константное
je handle_condition2
идем на обработку
;если
| 2 | 3 , то производим обработку по умолчанию
команд для обработки по умолчанию
end_switch ;уходим на конец switch
команд для обработки
jmp end_switch ;уходим на конец s w i t c h
команд для обработки
jmp end_switch ;уходим на конец switch
команд для обработки
программы
Второй, более элегантный способ реализации конструкции, соответствующей
оператору switch, — табличный. Сразу отмечу, что данный материал логичнее рас-
сматривать после изучения главы 13, посвященной сложным структурам данных.
Поэтому, если у вас возникнут трудности с пониманием представленного здесь
материала, пропустите его и вернитесь к нему позже.
Для реализации рассматриваемого способа в памяти моделируется некоторое
подобие таблицы. Каждая строка таблицы состоит из двух ячеек. Строки таблицы
располагаются в памяти последовательно — друг за другом. В первой ячейке таб-
лицы располагается значение
во второй ячейке — адрес
если выполняется условие
= конс-
Целью адреса перехода может быть процедура или метка, со-
ответствующая фрагменту кода, обрабатывающему выполнение условия, задан-
ного в заголовке оператора выбора. Реализация табличным способом приведенного
ранее примера будет выглядеть так:
db 1
dw
db 2
dw
db
3
dw handle


Оператор выбора switch 239
;
mov
mov
mov
альтернатив
al,[bx] ;проверка очередной альтернативы
jne next_
следующему элементу
ptr
;на обработку совпадения
add bx,3
следующей строки таблицы -> bx
next_:
если
то производим обработку по умолчанию
команд для обработки по умолчанию
jmp
;уходим, куда нужно
последовательность команд для обработки
jmp
куда нужно
последовательность команд для обработки
jmp
куда нужно
последовательность команд для обработки
jmp ... ;уходим, куда нужно
... ;продолжение программы
Для лучшего структурирования программы последовательность команд
обработки условия
можно оформить в виде процедур:
table_switch db 1
процедуры
db 2
dw
процедуры
db 3
dw
;адрес процедуры
proc
команд для обработки
endp
proc
команд для обработки
endp
proc
команд для обработки
endp
.
mov
mov
table_switch
mov
;счетчик циклов=количество альтернатив
cmp al,[bx]
очередной альтернативы
jne next_
следующему элементу
word ptr [bx+1] ;на обработку совпадения
jmp end_switch
add
следующей строки таблицы -> bx
next_:
;если
то производим обработку по умолчанию


240
Программирование типовых управляющих структур
команд для обработки по умолчанию
программы

Download 12,06 Mb.

Do'stlaringiz bilan baham:
1   ...   133   134   135   136   137   138   139   140   ...   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