O'n oltilik kod. Xulosa: O'nli sonni ikkilik va o'n oltilik sanoq tizimlariga o'tkazish dasturi O'nli sonni ikkilik assemblerga o'tkazish dasturi

1. Asosiy sanoq sistemalari. Assembler ma'lumotlari deklaratsiyasi

Ishning maqsadi: talabalarni sanoq sistemalari - ikkilik, sakkizlik, o'n oltilik tizimlar bilan tanishtirish; kompyuter xotirasida ma'lumotlarni tasvirlash, xotirani ajratish direktivalari.

Nazariy qism

Kompyuterda saqlanishi mumkin bo'lgan eng kichik ma'lumotlar birligi bit (ing. bit - bi nary digi t ), ya'ni. 0 yoki 1. Bit - bu axborot atomi, uni bo'lish mumkin emas. Bitlar bayt hosil qilish uchun 8 ga guruhlangan. Kompyuter manipulyatsiya qiladigan ma'lumot ikkilik raqamlar qatoridir. 8 bitdan 256 ta kombinatsiya hosil qilish mumkin. Bu kombinatsiyalar katta va kichik harflarni, raqamlarni, maxsus belgilarni kodlash uchun ishlatiladi.

Kompyuterda ma'lumotni o'lchash uchun quyidagi miqdorlar qo'llaniladi:

1 kilobayt = 1 KB = 2 10 bayt = 1024 bayt;

1 Megabayt = 1 MB = 2 20 bayt = 1024 Kbayt;

1 Gigabayt = 1 GB = 2 30 Bayt = 1024 MB.

Sanoq tizimlari

Sanoq tizimi - bu raqamlarni ifodalash uchun qoidalar va raqamlar to'plami. Har qanday pozitsion sanoq tizimi uchun tasvirlash uchun raqamlar soni sanoq tizimining asosiga teng, masalan, ikkilik tizim uchun asos 2 raqamidir, shuning uchun raqamlarni ifodalash uchun ikkita 0 va 1 raqamlari kerak bo'ladi. , o'n oltilik sanoq tizimi uchun bu 0, 1, 2, ..., 9 , A, B, C, D, E, F, bu erda harflar 10, 11, 12, 13, 14 qiymatlariga mos keladi. , va 15, mos ravishda.

Sanoq sistemalarini farqlash uchun sonning oxiriga harf qo‘yiladi: ikkilik son uchun B, sakkizlik son uchun Q, o‘nlik son uchun D, ​​o‘n oltilik son uchun H. D o'nlik sonlar uchun ixtiyoriy.

Shaklda b-ar sanoq sistemasida son yozilsa

Nr (b) = C n C n-1 C n-2… C 2 C 1 C 0, D 1 D 2 D 3…,

u holda o'nlik sanoq sistemasida uning qiymati sanoq tizimining asosiga sondagi raqamning pozitsiya raqamiga teng darajaga ko'paytirilgan raqamlar yig'indisi sifatida ifodalanishi mumkin (raqamlash 0 dan boshlanadi, o'ngdan chapga). ):

Nr (10) = C n * bn + C n-1 * b n-1 +… + C 2 * b 2 + C 1 * b 1 + C 0 * b 0 + D 1 * b -1 + D 2 * b –2 + D 3 * b –3 + ...

Masalan:

Ikkita ikkilik sonlar 11b, 1100011b berilsin. Keling, bu raqamlarni o'nlik sanoq tizimiga o'tkazamiz:

11b = 1 * 2 1 + 1 * 2 0 = 3;

11100011b = 1 * 2 7 + 1 * 2 6 + 1 * 2 5 + 0 * 2 4 + 0 * 2 3 + 0 * 2 2 + 1 * 2 1 + 1 * 2 0 = 227.

Sakkizlik sonni oʻnlik sanoq sistemasiga oʻtkazish misollarini koʻrib chiqamiz:

11q = 1 * 8 1 + 1 * 8 0 = 9;

210q = 2 * 8 2 + 1 * 8 1 + 0 * 8 0 = 136.

O'n oltilik sonlarni o'nlik songa o'tkazishga misol:

11h = 1 * 16 1 + 1 * 16 0 = 17;

CA0h = C * 16 2 + A * 16 1 + 0 * 16 0 = 3232

Butun sonlarni bo'lish raqamlarni o'nlikdan ikkilik yoki o'n oltilik tizimga aylantirish uchun ishlatiladi. Bo'linmas qoldiq olinmaguncha raqam sanoq tizimining asosiga bo'linadi. Bo'lishdan olingan bo'linma yana bo'linadi va qism ham bo'linmas holga kelganda jarayon tugaydi. Bo'lish paytida olingan qoldiqlar teskari tartibda yoziladi. Diagrammada 25 raqamining ikkilik sanoq tizimiga tarjimasi ko'rsatilgan, buning natijasida biz 11001b raqamini olamiz, shuningdek, 418 raqamini o'n oltilik sanoq tizimiga o'tkazamiz, buning natijasida biz raqamni olamiz. 1A2h, o'n soni A ekanligini hisobga olsak.

Raqamlarni o'n oltilik tizimdan ikkilik tizimga va aksincha o'zgartirish uchun quyidagi faktdan foydalaniladi: jadvalda ko'rsatilganidek, har bir o'n oltilik raqam to'rt bitli ikkilik songa mos keladi va aksincha. Shuning uchun, o'n oltilik tizimdan ikkilik tizimga o'tkazishda har bir o'n oltilik raqam uchun uning ikkilik kodini yozish kerak va teskari tarjima paytida ikkilik son o'ngdan chapga to'rtta raqamli va o'n oltilik raqamli guruhlarga bo'linadi. o'yin ular uchun yozilgan.

O'n oltilik va ikkilik sonlarning yozishmalar jadvali.

Masalan, 1FDh sonini ikkilik tasvirga aylantiramiz:

1FDh = 0001-1111-1101b = 111111101b

1110100101b ikkilik sonini o'n oltilik ko'rinishga o'tkazamiz: 0011-1010-0101b = 3A5.

Kompyuter xotirasida butun sonlar tasviri

Ikkilik sanoq sistemasi kompyuterda axborotni ifodalash uchun ishlatiladi. Butun sonlarni saqlash uchun qat'iy belgilangan bitlar soni qo'llaniladi: 8, 16, 32, 64. n ta ikkilik pozitsiyalarda -2 n-1 dan 2 n-1 -1 gacha bo'lgan diapazonda imzolangan butun sonni yozishingiz mumkin. Pozitsiyalar o'ngdan chapga 0 dan n-1 gacha raqamlangan. Misol uchun, sakkizta ikkilik pozitsiyadagi 67 raqami 01000011b sifatida ifodalanadi. Belgilanmagan raqamlar 0 dan 2 gacha n -1 oralig'ida ifodalanishi mumkin.

Butun son to'g'ridan-to'g'ri yoki qo'shimcha kod sifatida saqlanishi mumkin. Imzolangan bit deb ataladigan bit raqam belgisini ifodalash uchun ishlatiladi. U n-1 pozitsiyasida va raqamning eng muhim bitidir. Bu bit musbat sonlar uchun nolga, manfiy sonlar uchun esa bittaga teng.

To'g'ridan-to'g'ri kod musbat yoki belgisiz raqamlarni saqlash uchun ishlatiladi.

Qo'shimcha kod manfiy raqamlarni saqlash uchun ishlatiladi. Ikkining to'ldiruvchi kodidagi sonning ko'rinishini olish uchun birinchi navbatda son modulining to'g'ridan-to'g'ri kodi, so'ngra uning teskari kodi topiladi. Teskari kod raqamning ikkilik ko'rinishidagi har bir bitni teskari aylantirish orqali olinadi: 0 1 ga va 1 dan 0 ga aylanadi. Oxirgi bosqichda teskari kodga 1 qo'shiladi.

Masalan, -65 raqamini ifodalash uchun bizda:

01000001b to'g'ridan-to'g'ri raqam kodi +65

10111110b teskari kod

-65 raqamining 10111111b qo'shimcha kodi

Qo'shimcha kod butun sonlarni ayirish amalini ikkita to'ldiruvchi kodda ifodalangan son bilan qo'shish amaliga almashtirish uchun ishlatiladi. Bunda protsessor butun sonlarni ayirish amalini bajarishi shart emas.

Ma'lumotlar turlari

BAYT... Ushbu ma'lumotlar turi 1 bayt (8 bit). Ushbu turdan foydalanib, siz -128 dan +127 gacha bo'lgan diapazondagi imzolangan butun sonni yoki 0 dan 255 gacha bo'lgan diapazonda belgisiz, butun son sifatida ham kodlangan istalgan ASCII belgisini shifrlashingiz mumkin. Ta'rif direktivasi - JB(Baytni aniqlang).

SO'Z... Ushbu ma'lumotlar turi 2 bayt (16 bit). Ushbu turdagi o'zgaruvchilar -32768 dan + 32767 gacha yoki 0 dan 65535 gacha bo'lgan butun sonni, ikkita ASCII belgisini yoki yaqin turdagi nisbiy xotira manzilini o'z ichiga olishi mumkin. Bunday holda, xotira quyidagicha yoziladi: raqamning pastki qismi pastki manzilda, eskisi esa yuqoriroqda joylashgan. Bu boshqa turdagi ma'lumotlar uchun ham amal qiladi. Misol uchun, agar 1234h o'n oltilik butun soni 1000 soatda joylashgan bo'lsa, u holda 34 soatning eng kichik muhim qismi 1000 soatda va 12 soat 1001 soatda joylashgan bo'ladi. Ta'rif direktivasi - Dw(So'zni aniqlang).

DWORD- 4 bayt (2 so'z) imzolangan yoki belgilanmagan 32 bitli butun sonni, suzuvchi nuqta raqamini, 32 bitli xotira manzilini yoki 4 ASCII belgisini o'z ichiga olishi mumkin. Manzilni saqlashda segment manzili ikkita eng muhim baytda, ofset esa xotiraning eng muhim ikki baytida joylashgan. Ta'rif direktivasi - DD(Qo'sh so'zni aniqlang).

QWORD- 8 bayt. Belgilangan yoki belgilanmagan butun son yoki ikki aniqlikdagi suzuvchi nuqtali raqam bo'lishi mumkin. Ta'rif direktivasi - DQ(To'rtlikni aniqlang).

TEN-BYTES- 10 bayt. Ma'lumotlarni asosiy xotirada yoki protsessorda saqlash uchun ishlatiladi. Ikkilik kasr, kengaytirilgan butun son yoki kengaytirilgan suzuvchi nuqta bo'lishi mumkin. Ta'rif direktivasi - DT(O'n baytni aniqlang).

Ma'lumotlarni aniqlashning umumiy sintaksisi:

< nomi> < bir turi> < ro'yxatiqiymatlar>

< nomi> < bir turi> < raqam> dup (ifoda),

qayerda nomi- identifikator, bir turi- yuqorida muhokama qilingan xotirani taqsimlash direktivalaridan biri, qadriyatlar ro'yxati- belgilar yoki raqamli konstantalarni o'z ichiga olishi mumkin bo'lgan ro'yxat. Shuningdek, u xarakterni o'z ichiga olishi mumkin ? , agar qiymat aniqlanmagan bo'lsa yoki manzil o'zgaruvchining nomi yoki yorlig'i bo'lsa, tirnoq yoki apostroflar ichiga olingan ASCII belgilar qatori. Direktiv dup berilgan ifoda bilan ko'rsatilgan qiymatlarni takrorlashni belgilaydi <число> bir marta. Ifoda doimiy, konstantalar, birlashtirilgan arifmetik belgilar, qiymatlar ro'yxati yoki belgi bo'lishi mumkin ? agar qiymat aniqlanmagan bo'lsa.

Masalan,

var_a db 2 dup (0, 3 dup (1)); var_a db 0,1,1,1,0,1,1,1 var_b db 1, 2, 3,?,? adr_a dw var_a adr_b3 dd var_b + 3

Quyidagi o'zgaruvchilarning har biri uchun ajratilgan xotira hajmini aniqlaymiz:

m1 db 4, 5, 1, 6; 4 * 1 = 4 bayt m2 db "xzyqw"; 5 * 1 = 5 bayt m3 dw 12 dup (?); 12 * 2 = 24 bayt m4 dd 345h, 234h; 2 * 4 = 8 bayt

m1 db 4, 5, 1, 6; 4 * 1 = 4 bayt m2 db "xzyqw"; 5 * 1 = 5 bayt m3 dw 12 dup (?); 12 * 2 = 24 bayt m4 dd 345h, 234h; 2 * 4 = 8 bayt

Ushbu direktivalar tomonidan ajratilgan baytlarning umumiy soni 41 baytni tashkil qiladi. m1 o'zgaruvchisi 00h, m2 - 04h, m3 - 09h va m4 - 021h nisbiy manzilda joylashgan.

Shaxsiy vazifalar:

1. O‘nlik sonlarni ikkilik, o‘n oltilik va sakkizlik sanoq sistemasiga o‘tkazish:

1)42;31;113 5 )46;35;119 9 ) 49;30;103 13 )29;37;97
2 )45;81;89 6)66;25;110 10 )19;53;101 14 )21;87;98
3 )12;38;118 7 )17;63; 96 11)34;50;107 1 5) 28;45;130
4 )11;43;67 8 )13;69;88 1 2 )14;70;99 16)15;72;100

2. O‘n oltilik sonlarni ikkilik songa o‘tkazing:

1) A45; 12; 56B 5) 7C; 72EB; 31DB 9) 34A;6AB;9AD 13) 2B9;6F1;81B
2) 1EF3;5AB;46F 6) 3EB; 4D8; A61 10) 5AB;79F;AB8 14) 7CD; 2A1; B53
3) A56; 5E9; CDE 7) 6A3;9D0;8BE 11) 9A;4DE;EF7 15) 10B; 87F; CD9
4) 3B8; DE1; BAE 8) miloddan avvalgi; 7F9; 78A 12) AB; ​​8E4; C17 16) 38E;9C7;B89

3. Ikkilik sonlarni sakkizlik va o‘n oltilik sanoq sistemalariga o‘tkazing:

1) 00101011; 00100110;
01110011
5 ) 11110010; 01101010;
11111100;
9 ) 10000101; 11100010;
11001011
13 ) 00011101; 11111001;
00111101
2 ) 01100001; 01101110;
11110011
6) 00110110; 00111011;
10001100
10 ) 00011101; 01010110;
10110010
14 ) 00011100; 01001100;
01101110
3) 11100100; 01011100; 11000001 7 ) 11010010; 01001100; 11000111 11) 11100010; 10100001; 10001110 1 5 ) 10101001; 11010101; 111001100
4 ) 00001111; 10100101; 10010001 8 ) 11100000 11111000; 01000011 1 2 ) 10100101; 01101100; 11100001 16) 11100111; 01100101; 10110010;

4. Qo'shimcha kodga quyidagi raqamlarni kiriting:

1)-42;-31;-96 5)-46;-35;-94 9) -49;-30;-103 13)-29;-37;-97
2)-52;-41;-93 6)-66;-25;-85 10)-19;-53 ; -101 14)-21;-87;-98
3)-12;-38;-93 7)-17;-63;-99 11)-34;-50;-94 15)-28;-45;-95
4)-11;-43;-67 8)-13;-69;-88 12)-14;-70;-99 16)-15;-72;-89

5. O‘zgaruvchilarga quyidagi ta’riflar berilgan:

1) a db 45,16,76, -6
bdb "abcd"
cdw 15 dup (0), 3.3
d dd 345 soat
2) a dd 2.24
b db “aaa”, - 8.23h, 11101b
c db 6 dup (0), 45, 6
d dw -7,4Dh, 8 dup (0)
3) a db “Salut”, 10.13
b db -16, -20,13h, 2 dup (0)
c dw 62.34, -15
d dd 456C9h, 4567
4) a dd 92,45 soat, 90, -54, -67
b db 10 dup ('$'), 10.13
c db "amdto", 10,13, '$'
d dw 5 dup (?), 7, -80h
5) a db “lucrarea_1”, 10.13
b db 2 dup (0)
c dw 38, -15,78,41,12
d dd 678EFh, 3489.456
6) a db 12.24, "sss"
b db “ab”, - 8,23 soat
c dd 6 dup (0), 45
d dw -7,5 dup (0)
7) db 35.53
b db 10 dup (''), 10.13, "$"
c dw 5 dup (0)
d dd 555 soat
8) a db 34,6,3, -8, -2
b db "Salom", '$'
c dw 6 dup (0), '$', 10.13
d dw -68,46 soat, 7 dup (0)
9) db 45.16
b db 5 dup (?), 10,13, “$”
c dw 55 dup (0)
d dd 34567h
10) db 76.87.92.45h
b db 20 dup ('$'), 10.13
c db "qwert"
d dw 10 dup (0)
11) dd 78.34.67
b db "Rezultat", '$'
c db 16 dup (0), '$', 10.13
12) a db 73,74,75,77,78, -67
b db 15 dup (‘?’), 10.13
cdd 777s
13) db 24.76, -56
b db "abc", 11101b
c dd 45,4 dup (?)
d dw 4 dup (0), 8.3
14) a db “testul_nr_2”, 13,10
b db -18, -22,18 soat, 2 dup (0)
c dw 81, -16.44.18
d dd 568ABh
15) dd 87,45 soat, -9
b db 10 dup (?)
c db “test_1 $”
d dw 4 dup (0), 2.7
16) db “Matematika”, 10.13
b db 10,20 soat, 2 dup (0)
c dw 60,30, -10, -20, -50
d dd 56789Bh

a) ushbu direktivalar tomonidan qancha bayt ajratilganligini aniqlash;
b) o'zgaruvchilarning har biri joylashgan manzillarni aniqlash.

O‘n oltilik sanoq sistemasi(shuningdek - o'n oltilik kod) - bu butun asosli pozitsion sanoq sistemasi 16. Ba'zan adabiyotda hex atamasi ham qo'llaniladi ("hexadecimal" so'zining qisqartmasi deb talaffuz qilinadi). Ushbu sanoq tizimining raqamlari uchun 0-9 arab raqamlari, shuningdek lotin alifbosining A-F birinchi belgilaridan foydalanish odatiy holdir. Harflar quyidagi kasr qiymatlariga mos keladi:

  • * A -10;
  • * B —11;
  • * C -12;
  • * D -13;
  • * E - 14;
  • * F - 15.

Shunday qilib, o'nta arab raqamlari oltita lotin harflari bilan birgalikda tizimning o'n olti raqamini tashkil qiladi.

Aytgancha, bizning saytimizda siz onlayn kod kalkulyatori yordamida har qanday matnni o'nlik, o'n oltilik, ikkilik kodga tarjima qilishingiz mumkin.

Ilova. O'n oltilik kod past darajadagi dasturlashda hamda turli xil kompyuter ma'lumotnoma hujjatlarida keng qo'llaniladi. Tizimning mashhurligi zamonaviy kompyuterlarning me'moriy yechimlari bilan oqlanadi: ularda bayt (sakkiz bitdan iborat) axborotning minimal birligi sifatida o'rnatiladi - va baytning qiymati ikkita o'n oltilik raqam yordamida qulay tarzda yoziladi. Bayt qiymati # 00 dan #FF (0 dan 255 gacha) oralig'ida bo'lishi mumkin - boshqacha qilib aytganda, foydalanish o'n oltilik kod, siz baytning istalgan holatini yozishingiz mumkin, shu bilan birga yozuvda ishlatilmaydigan "qo'shimcha" raqamlar yo'q.

Kodlashda Unicode belgilar raqamini yozish uchun to'rtta o'n oltilik raqam ishlatiladi. RGB rang belgisi (Qizil, Yashil, Moviy - qizil, yashil, ko'k) ham ko'pincha o'n oltilik koddan foydalanadi (masalan, # FF0000 - yorqin qizil rang).

O'n oltilik kodni yozish usuli.

Matematik yozish usuli... Matematik yozuvda tizimning asosi sonning o'ng tomonidagi pastki chiziqda o'nli kasr shaklida yoziladi. 3032 raqamining o'nlik belgisi 3032 10 sifatida yozilishi mumkin, o'n oltilik tizimda bu raqam BD8 16 rekordiga ega bo'ladi.

Dasturlash tillari sintaksisida... Turli xil dasturlash tillarining sintaksisi raqamlarni turlicha yozish formatini o'rnatadi o'n oltilik kod:

* Assembly tilining ayrim turlarining sintaksisida lotincha "h" harfi qo'llaniladi, u raqamning o'ng tomonida joylashgan, masalan: 20Dh. Agar raqam lotin harfi bilan boshlansa, uning oldiga nol qo'yiladi, masalan: 0A0Bh. Bu konstantalardan foydalanib, qiymatlarni farqlash uchun amalga oshiriladi o'n oltilik kod;

* Assemblerning boshqa navlari, shuningdek Paskal (va uning Delphi kabi lazzatlari) va ba'zi asosiy dialektlarda "$" prefiksi ishlatiladi: $ A15;

* HTML belgilash tilida, shuningdek, kaskadli CSS fayllarida "#" prefiksi: # 00DC00 RGB formatidagi rangni o'n oltilik belgilar bilan ko'rsatish uchun ishlatiladi.

O'n oltilik kodni boshqa tizimga qanday tarjima qilishim mumkin?

O'n oltilikdan o'nlikka o'tkazish. O'n oltilik kasrdan o'nlikka o'tkazish operatsiyasini bajarish uchun siz asl sonni asosning kuchi bo'yicha o'n oltilik sonning raqamlaridagi raqamlarning ko'paytmalari yig'indisi sifatida ko'rsatishingiz kerak.

Ikkilik SS

o'n oltilik SS

Misol uchun, siz A14 o'n oltilik raqamini tarjima qilmoqchisiz: u uchta raqamdan iborat. Qoidadan foydalanib, biz uni 16 asosli darajalar yig'indisi sifatida yozamiz:

A14 16 = 10,16 2 + 1,16 1 + 4,16 0 = 10,256 + 1,16 + 4,1 = 2560 + 16 + 4 = 2580 10

Raqamlarni ikkilikdan o'n oltilik tizimga va aksincha o'zgartirish.

Tarjima uchun daftarlar jadvalidan foydalaniladi. Raqamni ikkilik sistemadan o'nlik sistemaga o'tkazish uchun uni o'ngdan chapga alohida tetradalarga bo'lish kerak, keyin jadvaldan foydalanib, har bir tetradani mos keladigan o'n oltilik raqam bilan almashtirish kerak. Bundan tashqari, agar raqamlar soni to'rtga karrali bo'lmasa, unda ikkilik raqamlarning umumiy soni to'rtga karrali bo'lishi uchun raqamning o'ng tomoniga mos keladigan nol sonini qo'shish kerak.

Tarjima uchun daftarlar jadvali.

O'n oltilikdan ikkilik tizimga aylantirish uchun siz teskari amalni bajarishingiz kerak: har bir raqamni jadvaldagi tetrada bilan almashtiring.

Ikkilik SS

Sakkizlik SS

Misol o'n oltilik tizimdan ikkilik tizimga o'tkazish: A5E 16 = 1010 0101 1110 = 101001011110 2

Misol ikkilikdan o'n oltilik tizimga o'tkazish: 111100111 2 = 0001 1110 0111 = 1E7 16

Ushbu misolda asl ikkilik sondagi raqamlar soni to'rtta (9) emas edi, shuning uchun ahamiyatsiz nollar qo'shildi - raqamlarning umumiy soni 12 ga aylandi.

Avtomatik tarjima... O'n oltilik sanoq tizimidan uchta mashhur tizimdan biriga (ikkilik, sakkizlik va o'nlik) tezkor tarjima, shuningdek, teskari tarjima Windows bilan ta'minlangan standart kalkulyator yordamida amalga oshirilishi mumkin. Kalkulyatorni oching, menyudan View -> Programmer-ni tanlang. Ushbu rejimda siz hozirda ishlatiladigan sanoq tizimini o'rnatishingiz mumkin (chapdagi menyuga qarang: Hex, Dec, Oct, Bin). Bunday holda, joriy raqam tizimini o'zgartirish avtomatik ravishda tarjima qilinadi.

1.Kirish

2. Assembler tili haqida umumiy ma’lumot

3. Dasturiy ta'minot qismi

· Dastur tavsifi

· Montaj dasturlarini ishlab chiqish bosqichlari ___

O'nli sonlarni ikkilik va o'n oltilik sanoq tizimlariga o'tkazish dasturi

4. Adabiyotlar


Kirish

Kompyuter texnikasining ishlashini ta'minlovchi vositalar 2 qismga bo'linadi: apparat va dasturiy ta'minot.

Uskuna qismiga quyidagi qurilmalar kiradi:

· Markaziy protsessor;

· Operativ xotira;

· tashqi qurilmalar;

Yuqoridagi barcha qurilmalar integral mikrosxemalar (IC) asosida qurilgan.

Integral mikrosxemalar - ma'lum konvertatsiya funktsiyalarini bajaradigan, elektr bilan bir-biriga bog'langan elementlar va komponentlarning yuqori qadoqlash zichligiga ega bo'lgan va qabul qilish va ekspluatatsion sinov talablari bo'yicha bir butunlikni ifodalovchi mikroelektron mahsulot.

ICga misol sifatida raqamli qurilmalar sxemalarini keltirish mumkin: registrlar, yig'uvchilar, yarim yig'uvchilar, hisoblagichlar, kodlovchilar, dekoderlar va boshqalar.

Dasturiy ta'minot qismi quyidagilarni o'z ichiga oladi: turli xil muammolarni hal qilish uchun kompyuterdan foydalanishga imkon beruvchi barcha tegishli hujjatlarga ega dasturlar va qoidalar to'plami.

Dastur - bu ma'lum bir masalani hal qilish uchun harakatlar ketma-ketligini belgilaydigan dasturlash tilining mashina ko'rsatmalari yoki operatorlarining to'liq ketma-ketligi.

Bizning ishimizdagi vazifa: uch xonali o'nlik sonni ikkilik va o'n oltilik sanoq tizimlariga aylantirish. Bu vazifa assembler tili yordamida amalga oshiriladi. Ushbu past darajadagi tilda mashina ko'rsatmalari va manzillari uchun ramziy (mnemonik) belgilar qo'llaniladi. Bu tilning afzalligi: birinchidan, unda yozilgan dasturlar sezilarli darajada kam xotira talab qilishi; ikkinchidan, ushbu tilni bilish va natijada olingan mashina kodini bilish mashina arxitekturasi haqida tasavvur beradi, bu yuqori darajadagi dasturlash tilida ishlashda deyarli ta'minlanmaydi.


Assembler tili haqida umumiy ma'lumot

Simvolli assembler tili mashina tilini dasturlashning kamchiliklarini sezilarli darajada bartaraf etishga imkon beradi.

Uning asosiy ustunligi shundaki, assembler tilida barcha dastur elementlari ramziy shaklda ifodalanadi. Buyruqlarning ramziy nomlarini ularning ikkilik kodlariga aylantirish maxsus dastur - assemblerga yuklanadi, bu dasturchini ko'p vaqt talab qiladigan ishdan ozod qiladi va muqarrar xatolarni bartaraf etadi.

Assembler tilida dasturlash jarayonida kiritilgan ramziy nomlar, qoida tariqasida, dastur semantikasini, buyruqlar qisqartmasi esa ularning asosiy vazifasini aks ettiradi. Masalan: PARAM - parametr, TABLE - jadval, MASK - maska, ADD - qo'shish, SUB - ayirish va hokazo. n.Bunday nomlarni dasturchi oson eslab qoladi.

Assembler tilida dasturlash uchun siz mashina tilida dasturlashdan ko'ra murakkab vositalarga ega bo'lishingiz kerak: sizga mikro-kompyuterga asoslangan hisoblash tizimlari yoki periferik qurilmalar to'plami (alfavit-raqamli klaviatura, belgilar displeyi, floppi disk va boshqalar) bo'lgan shaxsiy kompyuter kerak. bosib chiqarish qurilmasi), shuningdek, mikroprotsessorlarning kerakli turlari uchun rezident yoki tizimlararo dasturlash. Assembly tili mashina tiliga qaraganda ancha murakkab dasturlarni samarali yozish va disk raskadrovka qilish imkonini beradi (1 - 4 KB gacha).

Assambleya tillari mashinaga yo'naltirilgan, ya'ni ular mashina tiliga va tegishli mikroprotsessorning tuzilishiga bog'liq, chunki ularda har bir mikroprotsessor buyrug'iga ma'lum bir ramziy nom berilgan.

Assambleya tillari dasturchilarning mashina tillari bilan solishtirganda unumdorligini sezilarli darajada oshirishni ta'minlaydi va shu bilan birga mikroprotsessorning barcha mavjud dasturiy ta'minot resurslaridan foydalanish qobiliyatini saqlab qoladi. Bu malakali dasturchilarga yuqori darajadagi tilda yozilgan dasturlarga qaraganda qisqaroq vaqt ichida bajariladigan va kamroq xotirani egallaydigan dasturlarni yozish imkonini beradi.

Shu munosabat bilan, kirish / chiqish qurilmalarini (drayverlarni) boshqarish uchun deyarli barcha dasturlar yuqori darajadagi tillarning juda katta nomenklaturasi mavjudligiga qaramay, assembler tilida yozilgan.

Assambleya tilidan foydalanib, dasturchi quyidagi parametrlarni o'rnatishi mumkin:

mikroprotsessorning mashina tilidagi har bir instruksiyaning mnemonik (ramziy nomi);

assembler dasturi satrlari uchun standart format;

turli xil adreslash usullari va buyruq variantlarini belgilash formati;

turli sanoq sistemalarida tamsayı tipidagi belgilar konstantalari va konstantalarni belgilash formati;

dasturni yig'ish (tarjima qilish) jarayonini boshqaruvchi psevdo-buyruqlar.

Assembler tilida dastur satr satr yoziladi, ya'ni har bir ko'rsatma uchun bitta qator ajratiladi.

Mikroprotsessorlarning eng keng tarqalgan turlari asosida qurilgan mikrokompyuterlar uchun assembler tilining bir nechta variantlari bo'lishi mumkin, ammo, odatda, faqat bitta amaliy tarqatish mavjud - bu standart assembler tili deb ataladi. Kelajakda biz standart assembly tillarini ko'rib chiqamiz.

Assembler tilida yozilgan dasturning har bir satri to'rtta maydonni o'z ichiga oladi:

OPERAND KODU Izohga yorliq bering

LABEL maydoni ixtiyoriy, u belgilangan buyruqning birinchi bayti joylashgan xotira katagining manzilini belgilaydi. Yorliqlar boshqaruvni uzatish buyruqlarini uzatish manzillari sifatida ishlatiladi va ularning mavjudligi sababli dasturchi mutlaq manzillar bilan ishlay olmaydi, lekin juda qulayroq bo'lgan ramziy manzillardan foydalanadi. Yorliq uzunligi birdan olti belgigacha bo'lishi mumkin, birinchisi harf bo'lishi kerak. Ko'pgina assemblerlar har qanday uzunlikdagi teglarga ruxsat beradi, lekin faqat birinchi oltita belgi tan olinadi. Yorliqda bo'sh joy yoki tinish belgilari bo'lmasligi kerak. Ba'zi assemblerlarda yorliqning oxirgi belgisidan keyin ikki nuqta qo'yilishi kerak.

Yorliq maydonida har bir yorliq faqat bir marta belgilanishi kerak, ammo unga havolalar kerak bo'lganda ko'p marta ishlatilishi mumkin. Aks holda, assembler bir nechta belgilangan yorliq haqida diagnostika xabarini chiqaradi.

KOD maydonida bajarilayotgan buyruq yoki psevdo-buyruqning ramziy nomi mavjud. Ko'pgina buyruqlar uchun mnemonika ingliz tilidagi jumlalarning qisqartmasi bo'lib, ularning asosiy funktsiyasini tavsiflaydi.

Masalan:

MOV (MOVE) - uzatish, oldinga

ADD (Qo'shish) - qo'shish

SUBSTRACT (SUBSTRACT) -ayirish

LDA (to'g'ridan-to'g'ri yuklash

AKKUMULATOR) - to'g'ridan-to'g'ri yuklab olish

INR (O'SHIMCHI batareya

REGISTER) - registrning o'sishi

REGISTER) registrni kamaytirish

Ko'rsatmalar mnemonikasi assembler kalit so'zlari bo'lib, agar ular haqiqiy mnemonikalar to'plamiga kiritilmagan bo'lsa, unda assembler noto'g'ri ko'rsatma xabarini chiqaradi.

OPERAND maydoni odatda buyruqlar kodi maydoniga qarab aniqlanadi. U vergul bilan ajratilgan bir yoki bir nechta operandlarni o'z ichiga olishi mumkin yoki u ichki ish registrlari bilan ishlaydigan ko'rsatmalar uchun operandlarni o'z ichiga olmaydi.

Operand - mnemonik belgilovchi, konstantalar va operatorlarni o'z ichiga olgan ifoda.

Eng oddiy operandlar bitta mnemonik yoki bitta doimiyni o'z ichiga oladi.

Mnemonik belgi sifatida ichki ishchi registrlarning identifikatorlari, teglar va dastur hisoblagichining joriy qiymati ishlatilishi mumkin.

Konstantalar turli sanoq sistemalarida ifodalanishi mumkin.

Dasturiy ta'minot qismi

Tavsif dasturlari

Bu ishda biz assembler tilidan foydalangan holda sonni o’nlik sanoq sistemasidan ikkilik va o’n oltilik tizimga o’tkazish usullaridan birini ko’rib chiqamiz. Dasturni yaratishdan oldin buning uchun qanday qadamlar qo'yish kerakligini batafsil ko'rib chiqamiz, ya'ni boshqacha aytganda, muammomizni hal qilish algoritmini yozamiz. Kompyuter ma'lumotlarni qayta ishlash uchun ushbu ma'lumotlarni kiritishi kerak, ya'ni bizning muammomizni hal qilishda birinchi qadam raqamni kiritish bo'ladi. Ishning ikkinchi bosqichi kiritilgan raqam haqida xabarni ko'rsatish bo'ladi. Shundan so'ng biz o'nlik sonni ikkilik tizimga aylantiramiz va raqamimizni ekranda ikkilik ekvivalentda ko'rsatamiz. Keyingi qadam raqamni o'n oltilik ekvivalentga aylantirishdir va oxirgi qadam yangi o'nlik sonni kiritishni davom ettirishga imkon beruvchi tsikldir. Endi barcha fikrlarni birlashtiramiz:

1. Klaviaturadan raqam kiritish.

2. Kiritilgan raqam haqidagi xabarni ko'rsatish.

3. Sonni ikkilik ekvivalentga aylantirish.

4. Ikkilik sonni ko'rsatish.

5. Sonni o‘n oltilik sistemaga o‘tkazish.

6. O‘n oltilik sonni ko‘rsatish.

7. Tsikl (davomi?) Agar HA bo'lsa, 1-band, aks holda 8-band

8. Dasturdan chiqing.

Bu tabiiy til dasturi algoritmi.

montaj dasturlarini ishlab chiqish bosqichlari

1. Muammoning bayoni. Muammoning mazmunli tavsifini va algoritmni ishlab chiqishni o'z ichiga oladi.

2. Dasturlar matnini ishlab chiqish.

3. Kompyuterga matn kiritish. Mnemonik kodlardagi dastur matni istalgan matn muharriri yordamida kompyuterga kiritiladi. Bu * .ASM kengaytmali matn faylini ham yaratadi.

4. Kompilyatsiya yoki yig'ish. * .ASM kengaytmali matn fayli * .OBJ kengaytmali mashina kodidagi dasturni o'z ichiga olgan obyekt fayliga aylantirilmoqda. Shuningdek, ushbu bosqichda dastur ro'yxati yaratilishi mumkin. Dastur haqidagi asosiy ma'lumotlarni o'z ichiga olgan * .LST kengaytmali fayl, shuningdek * .CRF ​​kengaytmali o'zaro mos yozuvlar fayli. Ushbu bosqichda dastur matni xatolar uchun qaynatiladi. Yig'ish TASM.EXE translyator dasturi yordamida amalga oshiriladi (ASM.EXE - assemblerda, MASM.EXE - makro assemblerda). TASM [variantlar] * .ASM [,] - tarjimani bajarish buyrug'i. Agar buyruqda bitta vergul bo'lsa, Listing fayli yaratilgan bo'ladi. TASM ikkita variantga ega: / ZI va / N. Ular: TASM deb ataladi.

5. Joylashtirish. Ushbu bosqichda istalgan xotira maydoniga yuklanishi mumkin bo'lgan joyini o'zgartiradigan dastur yaratiladi. U * .EXE yoki * .COM kengaytmali faylda saqlanadi. Buning uchun TLINK.exe dan foydalaniladi (LINK.EXE makro assembler uchun). Variantlar / T va / X.

6. Bajarish va disk raskadrovka (DEBUG).

7. Dasturning mashina kodini ROMga kiritish (mavjud bo'lmasligi mumkin) Endi biz dasturimizning blok-sxemasini, ya'ni tartiblangan amallarni ko'ramiz.


; DECIMAL TO TARJIMA DASTURI; BINAR VA O'N OLTI TIZIMLAR; HISOBLAR

; Ma'lumotlar segmenti

; konvertatsiya qilish jadvali“Raqam - ASCII-kod

tabl_ascii db "0123456789abcdef"

;____________________________________________________________________

; konvertatsiya qilish jadvali“ASCII-kod - raqam

db 0,1,2,3,4,5,6,7,8,9

db 0ah, 0bh, 0ch, 0dh, 0eh, 0fh

;____________________________________________________________________

Xotirada o'zgaruvchilarni zaxiralash va ishga tushirish

x_ascii db 20 soat takrorlash (?)

t1 db 0dh, 0ah, "Raqamni kiriting va Enter tugmasini bosing"

db 0dh, 0ah, "$"

t2 db 0dh, 0ah, "Siz raqam kiritdingiz", 0dh, 0ah "$"

t3 db 0dh, 0ah, "Ikkilik formatda shunday ko'rinadi"

t4 db 0dh, 0ah, "Hex ichida"

db 0dh, 0ah, "$"

buf db 16 dup (?), "$"

t5 db 0dh, 0ah, "Jarayonni davom ettiramizmi? (Y / N)?"

;____________________________________________________________________

; Kodlar segmenti

; Asosiy protsedura

d: lea dx, t1

; kasr sonini kiritish tartibi

O'nlik sonni ko'rsatish tartibi

r1: mov dl,

; Raqamni (o'nlik) ikkilikka o'tkazish

v1: mul si

Ikkilik sonni ko'rsatish tartibi

; Raqamni (ikkilik) o'n oltilik tizimga o'tkazish tartibi

; va uni ekranda ko'rsating

Eslatmalar (tahrirlash) :

Quyida dasturda ishlatiladigan buyruqlar keltirilgan:

sub- ikkilik ayirish. Ikkinchi operandning mazmuni birinchi operanddan chiqariladi

Mnemonika: pastki< operand 1>,< operand 2>

qo'ng'iroq qiling- protsedura chaqiruvi. Boshqarishni manzili operand tomonidan ko'rsatilgan protseduraga o'tkazadi, protsedura tugagandan so'ng, bajarish buyruq chaqiruvidan keyingi buyruq bilan davom etadi.

Mnemonika: qo'ng'iroq qiling< protsedura nomi>

ret- protseduraga qaytish

shr- mantiqiy ravishda o'ngga siljitish

xor- eksklyuziv OR

Mnemonika: xor<операнд 1>,<операнд 2>

lea- EA yuklab olish

Mnemonika: lea reg,<операнд>

Durang- stekga kiritish

Mnemonika: Durang< operand>

pop- stekdan ekstrakti

Mnemonika: pop<операнд>

mov- oldinga

Mnemonika: mov< qabul qiluvchi>,<источник>

inc- 1 ga oshirish

Mnemonika: inc<операнд>

dek- 1 ga kamayishi

Mnemonika: dek< operand>

stosb- di registr tomonidan ko'rsatilgan al yoki ax registrining ulanishlarini oldinga yo'naltiradi

halqa- hisoblagich bilan siklni tashkil qilish buyrug'i, shuningdek, qisqa sakrashlar (127b), buyruq hech qanday bayroqlarni o'zgartirmasdan, hisoblagich cx qiymatini pasaytiradi, agar ulanish cx> 0 bo'lsa, u holda ko'rsatilgan belgiga o'tish amalga oshiriladi. , aks holda tsikl tugaydi.

Mnemonika: halqa< teg>

.KOD- kod segmentini ochadi

. DATA- ma'lumotlar segmentini ochadi

.STACK N–Segmentlar stekini (a) belgilaydi; segmentni yopish direktivalari bu holda ishlatilmaydi; N - (a) stek hajmini baytlarda ko'rsatadi

Eslatma : Bunday direktivalardan foydalanganda ds registri quyidagicha ishga tushiriladi: mov ax, @ ma'lumotlar

mov ds, ax

assume bu holatda ishlatilmaydi

Adabiyotlar ro'yxati

1. "Men IBM PC va dasturlash uchun assembler tiliman" Oliy maktab 1992 yil.

2. «IBM firmalarining shaxsiy kompyuteri va MS-DOS operatsion tizimi» Radio va aloqa 1991 y.

3. Ilyushechkin V.N., Kostin A.E, Xoxlov M.M. "Tizimli dasturiy ta'minot", M., "Oliy maktab", 1987 yil

4. Norton P., Souhe D. "IBM PC uchun yig'ish tili", M., "Kompyuter" nashriyoti, 1993 y.

Salom! Bunday qator bor:

Var BD 2,2,3,3,4,4; 223344 o'nlik 6 xonali son ochilmagan formatda yuqori aniqlik bilan (ASCII formati)

Bu 223344 sonini qanday qilib o‘n oltilik songa aylantirish mumkin? Men bitta va ikki xonali o'nlik sondan o'n olti xonali raqamga o'zgartiradigan shunday kodni topdim:

; Var. 17. Orqaga. 1. Ayrim o'nli massivni o'zgartirish uchun pastki dasturni yozing; ASCII baytlari. BCD baytlari qatoriga. Ikki massivni qayta ishlash uchun ushbu kichik dasturdan foydalaning; Parametrlarni o'tkazish uchun stekdan foydalaning. Dastur nomi; Konstantalar tavsifi;O'zgaruvchilar tavsifi Ma'lumotlar segmenti x1 db 2h db 1h db 3h db 1h db 4h db 1h; ASCII formatidagi raqamlar y1 db 3 dup (?); BCD formatidagi massiv x2 db 8h;98 db 9h db 5h;95 db 9h db 7h;87 db 8h db 2h;92 db 9h; kasr massivi ASCII baytlar Y2 db 4 dup (?); kasr massivi BCD baytlari Ma'lumotlarning tugashi Stack SEGMENT DW 16 dup (?) StkTOp LABEL so'zi Stack ends Code SEGMENT ASSUME CS: Code, DS: Data, ES: Data, SS: Stack; Bu yerda tartiblar tasvirlangan abc proc push bp mov bp, sp; stekning yuqori qismiga bog'lash mov cx,; stekdan parametrlarni o'qish (raqamlar soni) mov di,; Y1 o'zgaruvchining manzili mov si,; X1 M1 o'zgaruvchisining manzili: mov al, +1; birinchi raqamni ASCII formatida yuklang shl ax, 1; o'ngga 4 ta raqamga siljitish shl ax, 1 shl ax, 1 shl ax, 1 yoki al,; biz eslab qolgan raqamni tiklaymiz mov, al; raqamni BCD-format inc si da yozing; boshqa raqamga o'ting inc si inc di; BCD manzilini o'zgartirish - dec cx raqamlari; jnz M1 raqamlari sonini kamaytirish; agar ular tugamasa, M1 pop BP ret 6 abc endp ga o'ting; Asosiy dastur Boshlanishi: mov AX, Data mov DS, AX mov ES, AX mov Axe, Stack mov SS, AX mov SP, ofset StkTop; stekga parametrlarni topshiriq holatiga ko'ra yuklash mov ax, ofset x1; birinchi massivning manzilini yuklang push ax mov ax, ofset Y1; natija surish ax mov ax, 3 manzilini yuklang; raqamlar soni push ax chaqiruv abc; subprogramma chaqiruvi mov ax, ofset x2; ikkinchi massivning manzilini yuklang push ax mov ax, ofset Y2; natija surish ax mov ax, 4 manzilini yuklang; raqamlar soni push ax chaqiruv abc; pastki dastur qo'ng'irog'i kodi tugaydi