cmp mantiqiy_shart
jxx u_holda ;xxning o’rniga kerakli taqqoslash qisqartmalari yoziladi
;;aks holda tarmog’ining dastur kodi
jmp cmp_oxiri
u_holda:
;; u holda tarmog’ining dastur kodi
cmp_oxiri:
2-misol. EAX registrni 20 dan katta yoki teng ekanligini tekshiramiz. EAXdagi qiymatga ishorali son sifatida qaraymiz. C++ tilidagi dagi ko’rinishi:
if (EAX>=20) EBX=100; else EBX=200;
Assemblerda esa:
cmp eax,20
jge u_holda
mov ebx,200
jmp davom
u_holda:
mov ebx, 100
davom:
2. Assembler tilida takrorlanuvchi jarayonlar uchun dasturlash
Dasturlashning asosiy tushunchalaridan yana biri takrorlanish tushunchasidir. Bu tushuncha ingliz tilida loop, cycle va iteration deb, rus tilida esa цикл deb ataladi. Agar ma’lum bir buyruqlar ketma-ketligining bajarilishi ko’p marta takrorlanishi kerak bo’lsa, undan foydalaniladi. Takrorlanish qandaydir bir shart bajarilmaguncha yoki talab qilingan marta qadar takrorlanmaguncha qaytalanaveradi.
C++ kabi yuqori darajali tillarda while...,do...while yoki for ... kabi boshqaruvni ifodalari berilgan. Assemblerda esa buning uchun oddiy tarmoqlanish buyruqlaridan foydalaniladi.
Masalan, ekranga 10 marta “Salom” so’zini chop etmoqchi bo’lsangiz, 10 marta chop_et makrosini yozmasdan, uning o’rniga bir marta yozib buni takrorlanish halqasi ichiga olinadi. Takrorlanish necha marta amalga oshirilganligini sanab turish uchun qo’shimcha o’zgaruvchidan foydalanishga to’g’ri keladi. Bu ecx registri bo’la qolsin. C++ dagi ko’rinishi:
ecx = 0;
while (ecx != 10)
{
cout<<“Salom”;
ecx++;
}
Assemblerdagi ko’rinishi:
mov ecx,0
halqa_boshi:
cmp ecx,10
je halqa_oxir
Do'stlaringiz bilan baham: |