|
10-маъруза: Ассемблер дастурий таъминотида ишлаш
|
səhifə | 5/7 | tarix | 29.11.2023 | ölçüsü | 77,5 Kb. | | #140587 |
| 13 маъруза ....
.DATA
msg DB 'Hammasi O.K.'
LEN = $ - msg;LEN 8 ga teng
.CODE
....
cld
lea si,msg;v SI manba adresi
mov ax,0b800h; Видeo хotira segment hajmi
mov es,ax;qo’shimcha segmentga o’tkazish
lea di,es:(0a0h * 3); yuqoridan 4-satr
mov cx,LEN;LEN – chiqish simvollar soni
rp: movsb; ekranning joriy pozitsiyasiga simvolni yuborish
inc di;atribut pozitsiyasidan sakrab o’tish
loop rp; tugaguncha davom ettirish (CX)
....;stroka 'Vsyo O.K.' displey yuqorisidan
;4- satrga chiqariladi.
3. REP: buyruqni qaytarish prefiksi. Masalan, oldingi dasturning tugashi quyidagicha yozilishi mumkin:
mov cx,LEN;qaramasdan, massivi 'Hammasi O.K.' bo’ladi.
rep movsb; B800 ni хotira maydoniga ko’chiriladi:(A0 * 3), ga
;display ekraniga quyidagi yozuv chiqadi:Hammasi OK. Nimaga?
4. CMPSB; (ST) adresni beruvchining qator baytini, (DT) adresli qabul qiluvchining qator baytini solishtirishni bajaradi: ya’ni ((ST))-((DI)) ayirishni bajaradi. CMP DST, SRC buyrug’i bilan yangilishmaslik kerak, qaysiki qabul qiluvchidan beruvchini ayrish bajariladi. CMPSB buyrug’i (CX)ni 1 ga noaniq kamaytiradi va (SI) va (DI) ni 1 ga ko’paytiradi, agar (DF)=0 bo’lsa.
5. REPZ yoki REPE: qaytarish prefiksi. Agar (CX)=0 yoki (ZF)=0 bo’lsa, buyruqni bajarish tamomlanadi.
DATA
src DB 'To be, or not to be'
dst DB 'To be ,or not to be'
len = $ - dst;len 19 ga teng
.CODE
....
cld; (DF) = 0
push ds;manzillarni joylashtirish
pop es; ds va es segmentlari
mov cx,len; dst qator uzunligini cx ga yuborish
lea di,dst;manzilini yuklash (tprkibtga joylashish) qatorlarni dst dan DI ga
lea si,src
repe cmpsb; baytlab solishtirish
Dostları ilə paylaş: |
|
|