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



Download 12,06 Mb.
Pdf ko'rish
bet170/357
Sana22.02.2022
Hajmi12,06 Mb.
#115195
TuriДиплом
1   ...   166   167   168   169   170   171   172   173   ...   357
Bog'liq
assembler uchebnik dlya vuzov 2-e izd YuRXUW1

Листинг 14.2. Второй пример создания и использования макрокоманд
init_ds macro
настройки ds на сегмент данных
mov
mov
xor
macro str
вывода строки на экран.
входе - выводимая строка.
выходе - сообщение на экране.
push ax
mov
mov
str
int 21h
pop ax
endm
exit macro
;макрос конца программы
mov
int
endm
macro message
local
;макрос подсчета количества
в строке.
строки - не более 99 символов.
message - адрес строки символов, ограниченной
в
- количество символов в строке message
вывод сообщения
ml
db "Строка &message содержит


304 Глава 14. Макросредства языка ассемблера
Листинг
db 2
(0) ;число символов в строке
в коде ASCII
db
строки
;для вывода функцией
db "Строка &message не содержит символа конца
ml:
используемые в макросе регистры
push es
push
push ax
push di
push ds
pop es ;настройка es на ds
;символ для поиска -
;сброс флага df
lea
;загрузка в es:di смещения
;строки message
di - адрес начала строки
mov
префикса repne - максимальная
;длина строки
в строке (пока нужный символ
символ в строке не равны)
- при первом совпавшем
repne scasb
je find
символ найден - переход на обработку
сообщения о том, что символ не найден
push ds
cs вместо ds для функции 09h (int21h)
push cs
pop
ds
out_str
pop
ds
num_exit
из макроса
find: ;совпали
количество символов в строке:
pop ax
адрес начала строки
sub
xchg di ,ax ; (di) < > (ax)
sub al,3
на служебные
- 10, 13,
две упакованные BCD-цифры
подсчета
ax 3030h
результата в код ASCII
mov
cs
mov cs
на экран
push ds
cs вместо ds для функции 09h (int21h)
push cs
pop
ds
out_str elem
pop
ds
push di
push ax
push
push es
endm
data segment para public "data"
msg_l db
для
db
для второго
data ends
stk segment stack


Макродирективы 305
db 256
stk ends
code segment para
"code"
assume
main
out_str msg_l
main endp
code ends
end main
В теле макроопределения можно размещать комментарии, и делать это особым
образом. Если применить для обозначения комментария не один, как обычно, а два
последовательных символа точки с запятой
то при генерации макрорасшире-
ния этот комментарий будет исключен. Если по какой-то причине необходимо
присутствие комментария в макрорасширении, то его нужно задавать обычным
образом, то есть с помощью одного символа точки с запятой, например:
mes macro messsage
комментарий будет включен в текст листинга
комментарий не будет включен в текст листинга

Download 12,06 Mb.

Do'stlaringiz bilan baham:
1   ...   166   167   168   169   170   171   172   173   ...   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