Toshtemirov muxammadi


Download 0,79 Mb.
Sana02.12.2020
Hajmi0,79 Mb.
#157066
Bog'liq
Mustaqil Topshiriq 6


O’ZBEKISTON RESPUBLIKASI AXBOROT TEXNOLOGYALARI VA KOMMUNIKATSIYALARINI RIVOLANTIRISH VAZIRLIGI

MUHAMMAD AL-XORAZMIY NOMIDAGI TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI SAMARQAND FILIALI

“KOMPYUTER INJINIRINGI” FAKULTETI “DASTURIY INJINIRINGI” YO’NALISHI 210-GURUH TALABASI TOSHTEMIROV MUXAMMADINING

DASTURLASH USLUBLARI VA PARADIGMALARI” FANIDAN

6 - MUSTAQIL ISHI


Fan o’qituvchisi: Karimov M.

1-masala. Quyida assembler tilida berilgan dastur kodini C++ tiliga o’giring(20%).

Assembler tilida

%include"nasm-io.inc"

section .bss

x resd 1


section .data

y dd 100


a dd 0

b dd 1


section .text

global _main

_main:

mov eax,[y]



cmp eax,0

jle aa


chop_et '%i',[b]

jmp tamom

aa: chop_et '%i',[a]

tamom:


ret
C++ tilida
#include

using namespace std;

int main()

{

int x=100;


cout<< (x>0)?x:0 ;

return 0;

}
2-masala. Quyida assembler tilida berilgan kodni ishlash natijaisni ko’rsating. Bu dastur qanday masalani hal etadi? (20%).

%include "nasm-io.inc"

section .bss

x resd 1


section .text

global _main

_main:

qabul_qil '%i',x



mov eax,[x]

cmp eax,0

jge s

neg eax


chop_et '%i',eax

jmp tamom

s: chop_et '%i',eax

tamom:


ret
Bu yerda: mov eax,[x]- x o’zgaruvchini eax registriga taminlanayapti, cmp eax,0 – eax regitridagi qiymatni 0 bilan solishtiryapmiz, jge s -agar x<0 sharti bajarilsa, s ga o’tadi. neg eax – eax registridagi qiymatni teskarisiga almashtiradi.Demak, shunday xulosa qilishimiz mumkinki, bu dastur taqqoslash natijasini teskari ishorasi bilan chop etadi.

3-masala. Quyida C++ tilida dastur qismi berilgan. Shu dastur qismiga mos assembler dastur kodini keltiring (20%).

C++ tilida

short int a=10;

int b=20,c;

c=a+b

Assambler tilida
short int a=10;

int b=20,c;

c=a+b

%include "nasm-io.inc"

section .bss

a resd 4

b db 2

c db 4

section .text

global _main

_main:

chop_et 'Ikkita son kiririting:'



qabul_qil '%i %i',a,b

mov eax,[a] ;; eax=a

mov ecx,[c] ;; ecx=c

mov ebx,[b] ;; ebx=b

add ecx,[b] ;; ecx=ecx+b

add ecx,[a] ;; ecx=ecx+a

chop_et 'Natija: %i+%i=%i %i',[a],[b],c,ecx

ret
4-masala. Ushbu chizmani izohlab bering (20%).



Bu jadvalda 32 bitli registr keltirilgan. Ko’rib turganimizdek, u 3 qismga bo’lingan: Yuqori, quyi va default holati bosh bo’lga eax, ebx, ecx hamda edx registrlar mavjut. Biz yuqoridagi registrlardan 2 baytli registr sifatida foydalanishimiz mumkin.



5-masala. Berilgan uchta butun son ichidan eng kattasini aniqlovchi dastur tuzilsin (20%).

#include

using namespace std;

int main()

{

int x, a, b;



cin>>a>>b>>x;

if(a>=b && a>=x) cout<

else

if(b>=a && b>=x) cout<

else

if(x>=a && x>=b) cout<

return 0;

}

Download 0,79 Mb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2025
ma'muriyatiga murojaat qiling