Zbekiston respublikasi toshkent shahar al-xorazmiy nomidagi toshkent axborot


Download 70.77 Kb.
Pdf ko'rish
bet3/3
Sana19.06.2023
Hajmi70.77 Kb.
#1610872
1   2   3
Bog'liq
1-topshiriq

section
.
text
global
_start
;
must be declared
for using
gcc
_start
:
;
tell linker entry point
;
create the file
mov eax
,
8
mov ebx
,
file_name
mov ecx
,
0777
;
read
,
write
and
execute
by
all
int
0x80
;
call kernel
mov
[
fd_out
],
eax
;
write
into
the file
mov edx
,
len
;
number
of
bytes
mov ecx
,
msg
;
message to write
mov ebx
, [
fd_out
] ;
file descriptor
mov eax
,
4
;
system call number
(
sys_write
)
int
0x80
;
call kernel


;
close the file
mov eax
,
6
mov ebx
, [
fd_out
]
;
write the message indicating
end of
file write
mov eax
,
4
mov ebx
,
1
mov ecx
,
msg_done
mov edx
,
len_done
int
0x80
;
open the file
for
reading
mov eax
,
5
mov ebx
,
file_name
mov ecx
,
0
;
for
read only access
mov edx
,
0777
;
read
,
write
and
execute
by
all
int
0x80
mov
[
fd_in
],
eax
;
read
from
file
mov eax
,
3
mov ebx
, [
fd_in
]
mov ecx
,
info
mov edx
,
26
int
0x80
;
close the file
mov eax
,
6
mov ebx
, [
fd_in
]
int
0x80
;
print
the info
mov eax
,
4
mov ebx
,
1
mov ecx
,
info
mov edx
,
26
int
0x80


mov eax
,
1
;
system call number
(
sys_exit
)
int
0x80
;
call kernel
section
.
data
file_name db
'myfile.txt'
msg db
'Welcome to Tutorials Point'
len equ $
-
msg
msg_done db
'Written to file'
,
0xa
len_done equ $
-
msg_done
section
.
bss
fd_out resb
1
fd_in resb
1
info resb
26
Mana bu esa yuqoridagi kodning natijasi hisoblanadi:
sys_brk() tizim chaqirishi xotirani keyinchalik ko'chirishni talab
qilmasdan ajratish uchun yadro tomonidan taqdim etiladi. Ushbu
qo'ng'iroq xotiradagi dastur tasvirining orqasida xotirani ajratadi. Ushbu
tizim funksiyasi ma'lumotlar bo'limida mavjud bo'lgan eng yuqori
manzilni o'rnatish imkonini beradi. Ushbu tizim chaqiruvi o'rnatilishi
kerak bo'lgan eng yuqori xotira manzili bo'lgan bitta parametrni oladi.
Bu qiymat EBX registrida saqlanadi. Har qanday xato bo'lsa, sys_brk()
-1ni qaytaradi yoki salbiy xato kodini o'zi qaytaradi. Quyidagi misol
dinamik xotira taqsimotini ko'rsatadi.


Natija:
Ko'pgina assembler tili ko'rsatmalari operandlarni qayta ishlashni talab
qiladi. Operand manzili qayta ishlanadigan ma'lumotlar saqlanadigan
joyni ko'rsatadi. Ba'zi ko'rsatmalar operandni talab qilmaydi, ba'zi
boshqa ko'rsatmalar esa bitta, ikkita yoki uchta operandni talab qilishi
mumkin.


Ko'rsatma ikkita operandni talab qilganda, birinchi operand odatda
registr yoki xotira joyidagi ma'lumotlarni o'z ichiga olgan maqsad,
ikkinchi operand esa manba hisoblanadi. Manba yetkazib beriladigan
ma'lumotlarni (darhol manzilni) yoki ma'lumotlarning manzilini
(registrda yoki xotirada) o'z ichiga oladi. Odatda, operatsiyadan keyin
manba ma'lumotlari o'zgarmaydi.
Assambler kodidan namunalarni ko’rish mumkin:


Natija:
Natija:


Natija:


Xulosa
Assembly tili - bu odatda bir nechta tizimlarda ko'chma bo'lgan
yuqori darajadagi dasturlash tillaridan farqli o'laroq, ma'lum bir
kompyuter arxitekturasiga xos bo'lgan kompyuter yoki boshqa
dasturlashtiriladigan qurilma uchun past darajadagi dasturlash tili.
Assembler tili NASM, MASM va boshqalar kabi assembler deb
ataladigan yordamchi dastur tomonidan bajariladigan mashina
kodiga aylantiriladi. Men ushbu mustaqil ishni yozish davomida
assambler dasturlash tilining asosiy qoidalari, bu til kompyuter
qurilmalari bilan qanday aloqa qilishini tushundim. Va ba’zi bir
odatiy dasturlarni yozib amalda tekshirib ko’rdim.


Foydalanilgan adabiyotlar
1.
https://www.tutorialspoint.com/assembly_programming
/index.htm
2.
https://www.allaboutcircuits.com/technical-articles/how
-to-write-assembly-basic-assembly-instructions-ARM-in
struction-set/
3.
https://www.cs.virginia.edu/~evans/cs216/guides/x86.ht
ml
4.
http://eceweb.ucsd.edu/~gert/ece30/CN2.pdf


Nazorat savollari
1. Assembler tili nima?
2. Assembler qanday ishlashini tushuntirib bera olasizmi?
3. Assembler tiliga nisbatan dastur hisoblagichi qanday ishlaydi?
4. Assembler tilidan foydalanadigan real dasturlarga misollar keltira
olasizmi?
5. C yoki Java kabi yuqori darajali tilda kod yozish ancha oson bo‘lsa,
nima uchun kimdir assembler tilini o‘rganishni va undan foydalanishni
xohlaydi?
6. 8051, PIC, AVR va ARM protsessorlarining farqi nimada? Qaysi
birini birinchi bo'lib o'rganishim kerak?
7. Assembler tilidan Python kabi yuqori darajadagi tillardan
foydalanishning afzalligi bormi?
8. Assembler tilini o‘rganishni boshlashning eng yaxshi yo‘li nima?
9. Assembler tilini dasturlashni yaxshi bilish uchun maslahatlaringiz
bormi?
10. Assambleya tilini dasturlashni endigina boshlayotgan odamlar
qanday xatolarga yo‘l qo‘yishadi?
11. Bu sohada yangi bo'lganlar uchun tavsiya qilishingiz mumkin
bo'lgan manbalar bormi?
12. Assembler tilida kod yozishda nimani yodda tutishimiz kerak?
13. Mnemonika nima va ular assemblerlar tili bilan ishlashda qayerda
qo‘llaniladi?
14. Assembler tilida dasturlar yozishda qanday yaxshi kodlash usullariga
amal qilish kerak?
15. Assembler tilidagi dasturni disk raskadrovka qilishda qanday muhim
bosqichlar mavjud?
16. Assembler tili bilan qanday makroslar kontekstda ekanligini
tushuntirib bera olasizmi?
17. Yorliqlar nima va ular assembler tilida qanday ishlatiladi?


18. Literallar nima?
19. Assembler tili kontekstida qanday registrlar ekanligini tushuntirib
bera olasizmi?
20. Assembler tilida adreslash rejimlarining qanday turlari mavjud?

Download 70.77 Kb.

Do'stlaringiz bilan baham:
1   2   3




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