• ارقام سیستم اعداد هگزادسیمال. سیستم اعداد هگزادسیمال الفبا

    نماد هگزادسیمال ("Hex")روشی مناسب برای نمایش مقادیر باینری است. همانطور که اعشار دارای پایه ده و باینری دارای پایه دو است، هگزادسیمال دارای پایه شانزده است.

    سیستم اعداد پایه 16 از اعداد 0 تا 9 و حروف A تا F استفاده می کند. شکل مقادیر اعشاری، باینری و هگزادسیمال معادل را برای اعداد باینری 0000 تا 1111 نشان می دهد. بیان یک مقدار برای ما آسان تر است. یک رقم هگزادسیمال از چهار بیت.

    درک بایت ها

    با توجه به اینکه 8 بیت (بایت) یک گروه بندی باینری استاندارد است، اعداد باینری از 00000000 تا 11111111 را می توان در نماد هگزادسیمال به عنوان اعداد از 00 تا FF نشان داد. صفرهای پیشرو همیشه برای تکمیل نمایش 8 بیتی نمایش داده می شوند. به عنوان مثال، مقدار باینری 0000 1010 0A در هگزادسیمال خواهد بود.

    نمایش مقادیر هگزادسیمال

    توجه داشته باشید:همانطور که در شکل نشان داده شده است، مهم است که مقادیر هگزادسیمال را از مقادیر اعشاری برای کاراکترهای 0 تا 9 متمایز کنید.

    مقادیر هگزادسیمال معمولاً در متن با یک مقدار قبل از 0x (به عنوان مثال 0x73) یا با زیرنویس 16 نشان داده می شوند. به ندرت ممکن است با حرف H مانند 73H دنبال شود. با این حال، از آنجایی که متن زیرنویس در خط فرمان یا در محیط های برنامه نویسی شناسایی نمی شود، اعداد هگزادسیمال از نظر فنی با "0x" (صفر X) جلو می روند. بنابراین، نمونه های بالا به ترتیب 0x0A و 0x73 نشان داده می شوند.

    نماد هگزادسیمال برای نشان دادن آدرس های MAC اترنت و آدرس های IP نسخه 6 استفاده می شود.

    تبدیل های هگزادسیمال

    تبدیل اعداد بین مقادیر اعشاری و هگزادسیمال آسان است، اما تقسیم سریع یا ضرب در 16 همیشه راحت نیست. در صورت نیاز به چنین تبدیل‌هایی، معمولا آسان‌تر است که مقدار اعشاری یا هگزادسیمال را به باینری تبدیل کنید و سپس مقدار باینری را به اعشاری یا هگزادسیمال تبدیل کنید، هر کدام که می‌خواهید دریافت کنید.

    با تمرین، تشخیص الگوهای بیت باینری که با مقادیر اعشاری و هگزادسیمال مطابقت دارند امکان پذیر است. شکل این الگوها را برای برخی از مقادیر 8 بیتی نشان می دهد.

    سیستم اعداد هگزادسیمال الفبای متشکل از 16 رقم دارد:

    0، 1، 2، 3، 4، 5، 6، 7، 8، 9، A، b، c، d، e، f.

    هنگام نوشتن یک عدد در سیستم هگزا دسیمال، برای نوشتن اعداد نشان دهنده اعداد 10، 11، 12. 13، 14. 15، به ترتیب از حروف A، B، C، D، E، F استفاده می شود.

    تبدیل اعداد از هگزادسیمال به اعشاری

    شما می توانید هر عدد هگزادسیمال را با استفاده از فرمول از قبل شناخته شده به اعشار تبدیل کنید

    مثال ها.

      AE07 16 =10∙16 3 +14∙16 2 +0∙16 1 +7∙16 0 =44551 10 .

      100 16 =1∙16 2 +0∙16 1 +0∙16 0 =256 10 .

      58 16 =5∙16 1 +8∙16 0 =.88 10 .

      2A 16 \u003d 2 16 1 + 10 16 0 \u003d 42 10.

    تبدیل یک عدد از سیستم اعشاری به هگزادسیمال به همان روش باینری انجام می شود.

    تبدیل اعداد از هگزادسیمال به باینری و بالعکس

    شما می توانید هر عدد هگزادسیمال را به صورت زیر به باینری تبدیل کنید. هر رقم هگزادسیمال یک عدد به صورت یک عدد باینری چهار رقمی نوشته می شود - تتراد. پس از آن، صفرهای سمت چپ را می توان دور انداخت.

    2) 2A= 0010 1010 2 = 101010 2.

    3) 58 16 = 0101 1000 2 = 1011000 2 .

    برعکس، شما می توانید هر عدد باینری را به همین ترتیب به هگزادسیمال تبدیل کنید. هر چهار رقم باینری که از راست به چپ شمارش می شود، به صورت یک رقم هگزادسیمال نوشته می شود. این ارقام نیز از راست به چپ مرتب شده اند.

    مثال ها.

    2. 101010 2 = 10 1010 2 = 2A.

    3. 1011000 2 = 101 1000 2 = 58 16 .

    سیستم اعداد هشتگانه

    سیستم اعداد هشتگانه دارای الفبای متشکل از 8 رقم است:

    0, 1, 2, 3, 4, 5, 6, 7.

    تبدیل یک عدد از اعشاری به هشتی و بالعکس با قیاس با تبدیل به / از باینری انجام می شود.

    تبدیل اعداد از هشتی به باینری و بالعکس

    هر رقم از نماد هشتی یک عدد به صورت یک عدد دودویی سه رقمی نوشته می شود - سه گانه.

    مثال ها.

    2563 8 = 010 101 110 011 2 =10101110011 2 .

    1001101 2 = 001 001 101 2 = 115 8 .

    مطالب روشی درس آزمایشگاه شماره 1

    موضوع درس آزمایشگاه: سیستم های اعداد. اندازه گیری اطلاعات

    تعداد ساعت: 2.

    مثال هایی با راه حل ها

      ترجمه ازپ سیستم -اری به 10-اری.فرض کنید لازم است یک عدد را در یک سیستم اعداد به اعشار تبدیل کنید. برای این کار باید آن را در فرم نمایش دهیم

    11100110 2 = 1∙2 7 + 1∙2 6 + 1∙2 5 + 0∙2 4 + 0∙2 3 + 1∙2 2 + 1∙2 1 + 0∙2 0 = 128 + 64 + 32 + 4 + 2 = 230 10 .

    2401 5 = 2∙5 3 + 4∙5 2 + 0∙5 1 + 1∙5 0 = 250 + 100 + 0 + 1 = 351.

      تبدیل از سیستم اعشاری بهپ -مدار مجتمع.

    2.1 98 10 → X 2 .

    عدد را بر 2 تقسیم می کنیم. سپس نصاب ناقص را بر 2 تقسیم می کنیم. آنقدر ادامه می دهیم تا ضریب ناقص کمتر از 2 شود، یعنی. برابر با 1.

      98: 2 = 49. باقیمانده - 0 .

      49: 2 = 24. باقیمانده - 1 .

      24: 2 = 12. باقیمانده - 0 .

      12: 2 = 6. باقیمانده - 0 .

      6: 2 = 3. باقیمانده - 0 .

      3: 2 = 1 . باقی مانده - 1 .

    از آنجایی که آخرین ضریب ناقص 1 است، فرآیند به پایان رسیده است. تمام باقیمانده ها را از پایین به بالا می نویسیم و از آخرین ضریب ناقص شروع می کنیم و عدد 1100010 را می گیریم. بنابراین 98 10 \u003d 1100010 2.

    2.2 2391 10 → X 16 .

    عدد را بر 16 تقسیم کنید سپس نصف جزئی را بر 16 تقسیم کنید تا ضریب جزئی از 16 کمتر شود ادامه دهید.

      2391: 16 = 149. باقیمانده - 7 .

      149: 16 = 9 . باقی مانده - 5 .

    از آنجایی که آخرین ضریب ناقص (9) کمتر از 16 است، فرآیند به پایان رسیده است. با شروع از آخرین ضریب ناقص، تمام باقیمانده ها را از پایین به بالا می نویسیم و عدد 957 را می گیریم. بنابراین 2391 10 \u003d 957 16.

    2.3 12165 10 → X 2 .

    اگر تقسیم را به یک سیستم باینری ترجمه کنید، یک فرآیند دست و پا گیر رضایت بخش خواهید داشت. ابتدا می توانید عدد را به سیستم هشتی تبدیل کنید و سپس ارقام هشتی را از راست به چپ با سه گانه جایگزین کنید.

    12165 10 = 27605 8 = 010 111 110 000 101 = 10111110000101.

      تعیین پایه سیستم اعدادپ .

    پسری در مورد خود چنین نوشت: "من 24 انگشت دارم، 5 انگشت در هر دست و 12 انگشت روی پاهایم." چگونه می تواند این باشد؟

    راه حل. پایه سیستم اعداد را تعیین کنید پ. از آنجایی که می دانیم فقط 10 10 انگشت وجود دارد، پس 12 پ =1∙پ+2 = 10 10 . از اینجا معادله را بدست می آوریم پ + 2 = 10  پ= 8. پس منظور پسر اعداد در سیستم هشتی بود. در واقع، در مجموع 24 8 = 2∙8+4 = 20 10 انگشت، و 12 8 = 1∙8+2 = 10 10 روی پاها وجود دارد.

    نتیجه قبلاً دریافت شده است!

    سیستم های اعداد

    سیستم اعداد موقعیتی و غیر موقعیتی وجود دارد. سیستم اعداد عربی که ما در زندگی روزمره از آن استفاده می کنیم، موقعیتی است، در حالی که سیستم رومی نیست. در سیستم های اعداد موقعیتی، موقعیت یک عدد به طور منحصر به فرد بزرگی عدد را تعیین می کند. این را با استفاده از مثال عدد 6372 در سیستم اعداد اعشاری در نظر بگیرید. با شروع از صفر این عدد را از راست به چپ شماره گذاری می کنیم:

    سپس عدد 6372 را می توان به صورت زیر نشان داد:

    6372=6000+300+70+2 =6 10 3 +3 10 2 +7 10 1 +2 10 0 .

    عدد 10 سیستم اعداد را تعریف می کند (در این مورد 10 است). مقادیر موقعیت عدد داده شده به عنوان درجه در نظر گرفته می شود.

    عدد اعشاری واقعی 1287.923 را در نظر بگیرید. آن را با شروع از موقعیت صفر عدد از نقطه اعشار به سمت چپ و به راست شماره گذاری می کنیم:

    سپس عدد 1287.923 را می توان به صورت زیر نشان داد:

    1287.923 =1000+200+80 +7+0.9+0.02+0.003 = 1 10 3 +2 10 2 +8 10 1 +7 10 0 +9 10 -1 +2 10 -2 +3 10 -3 .

    به طور کلی، فرمول را می توان به صورت زیر نشان داد:

    C n س n + C n-1 س n-1 +...+C 1 س 1 + C 0 s 0 + D -1 s -1 + D -2 s -2 + ... + D -k s -k

    که در آن C n یک عدد صحیح در موقعیت است n، D -k - عدد کسری در موقعیت (-k)، س- سیستم شماره

    چند کلمه در مورد سیستم اعداد. مجموعه ای از ارقام (0،1، 2،3،4،5،6،7)، در سیستم باینری - از مجموعه ارقام (0.1)، در سیستم اعداد هگزا دسیمال - از مجموعه ارقام (0، 1،2،3،4،5،6، 7،8،9،A،B،C،D،E،F)، که در آن A،B،C،D،E،F با اعداد 10،11 مطابقت دارد، 12،13،14،15 در جدول 1 اعداد در سیستم های اعداد مختلف نشان داده شده اند.

    میز 1
    نشانه گذاری
    10 2 8 16
    0 0 0 0
    1 1 1 1
    2 10 2 2
    3 11 3 3
    4 100 4 4
    5 101 5 5
    6 110 6 6
    7 111 7 7
    8 1000 10 8
    9 1001 11 9
    10 1010 12 آ
    11 1011 13 ب
    12 1100 14 سی
    13 1101 15 D
    14 1110 16 E
    15 1111 17 اف

    تبدیل اعداد از یک سیستم اعداد به سیستم دیگر

    برای ترجمه اعداد از یک سیستم عددی به سیستم دیگر، ساده ترین راه این است که ابتدا عدد را به سیستم اعداد اعشاری تبدیل کنید و سپس از سیستم اعداد اعشاری، آن را به سیستم اعداد مورد نیاز ترجمه کنید.

    تبدیل اعداد از هر سیستم عددی به سیستم عددی اعشاری

    با استفاده از فرمول (1)، می توانید اعداد را از هر سیستم عددی به سیستم اعشاری تبدیل کنید.

    مثال 1. عدد 1011101.001 را از سیستم اعداد باینری (SS) به SS اعشاری تبدیل کنید. راه حل:

    1 2 6 + 0 2 5 + 1 2 4 + 1 2 3 + 1 2 2 + 0 2 1 + 1 2 0 + 0 2 -1 + 0 2 -2 + 1 2 -3 =64+16+8+4+1+1/8=93.125

    مثال2. عدد 1011101.001 را از سیستم اعداد هشتگانه (SS) به SS اعشاری تبدیل کنید. راه حل:

    مثال 3 . تبدیل عدد AB572.CDF از هگزادسیمال به CC اعشاری. راه حل:

    اینجا آ 10 جایگزین شد، ب- ساعت 11 سی- در ساعت 12، اف- ساعت 15

    تبدیل اعداد از سیستم اعداد اعشاری به سیستم عددی دیگر

    برای تبدیل اعداد از یک سیستم اعداد اعشاری به سیستم اعداد دیگر، باید قسمت صحیح عدد و قسمت کسری عدد را جداگانه ترجمه کنید.

    قسمت صحیح عدد از SS اعشاری به سیستم اعداد دیگری ترجمه می شود - با تقسیم متوالی قسمت صحیح عدد بر پایه سیستم اعداد (برای SS باینری - بر 2، برای SS 8 رقمی - بر 8، برای 16 رقم - توسط 16 و غیره) برای به دست آوردن کل باقیمانده، کمتر از پایه SS.

    مثال 4 . بیایید عدد 159 را از SS اعشاری به SS باینری ترجمه کنیم:

    159 2
    158 79 2
    1 78 39 2
    1 38 19 2
    1 18 9 2
    1 8 4 2
    1 4 2 2
    0 2 1
    0

    همانطور که در شکل دیده میشود. 1، عدد 159، وقتی بر 2 تقسیم می شود، ضریب 79 و باقیمانده 1 می شود. علاوه بر این، عدد 79، وقتی بر 2 تقسیم می شود، ضریب 39 و باقیمانده 1 می شود و غیره. در نتیجه، با ساختن یک عدد از باقیمانده تقسیم (از راست به چپ)، یک عدد در SS باینری بدست می آوریم: 10011111 . بنابراین، می توانیم بنویسیم:

    159 10 =10011111 2 .

    مثال 5 . بیایید عدد 615 را از SS اعشاری به SS هشتی تبدیل کنیم.

    615 8
    608 76 8
    7 72 9 8
    4 8 1
    1

    هنگام تبدیل یک عدد از SS اعشاری به SS هشتی، باید عدد را به ترتیب بر 8 تقسیم کنید تا زمانی که یک باقیمانده عدد صحیح کمتر از 8 بدست آورید. در نتیجه، یک عدد از باقیمانده تقسیم (از راست به چپ) می سازیم. یک عدد در SS octal بدست آورید: 1147 (شکل 2 را ببینید). بنابراین، می توانیم بنویسیم:

    615 10 =1147 8 .

    مثال 6 . بیایید عدد 19673 را از سیستم اعداد اعشاری به SS هگزادسیمال ترجمه کنیم.

    19673 16
    19664 1229 16
    9 1216 76 16
    13 64 4
    12

    همانطور که از شکل 3 مشاهده می شود، با تقسیم متوالی عدد 19673 بر 16، باقی مانده های 4، 12، 13، 9 را به دست می آوریم. عدد هگزادسیمال ما 4CD9 است.

    برای تبدیل کسرهای اعشاری صحیح (یک عدد واقعی با یک عدد صحیح صفر) به یک سیستم اعداد با پایه s، این عدد باید به طور متوالی در s ضرب شود تا قسمت کسری به صفر خالص برسد، یا تعداد ارقام لازم را بدست آوریم. اگر حاصل ضرب عددی با جزء صحیح غیر از صفر باشد، این قسمت صحیح در نظر گرفته نمی شود (آنها به ترتیب در نتیجه گنجانده می شوند).

    بیایید با مثال به موارد بالا نگاه کنیم.

    مثال 7 . بیایید عدد 0.214 را از سیستم اعشاری به SS باینری ترجمه کنیم.

    0.214
    ایکس 2
    0 0.428
    ایکس 2
    0 0.856
    ایکس 2
    1 0.712
    ایکس 2
    1 0.424
    ایکس 2
    0 0.848
    ایکس 2
    1 0.696
    ایکس 2
    1 0.392

    همانطور که از شکل 4 مشاهده می شود، عدد 0.214 به صورت متوالی در 2 ضرب می شود. و عدد با یک عدد صحیح صفر نوشته می شود. اگر با ضرب عددی با جزء صحیح صفر به دست آید، در سمت چپ آن صفر نوشته می شود. فرآیند ضرب تا زمانی ادامه می یابد که در قسمت کسری یک صفر خالص به دست آید یا تعداد ارقام لازم به دست آید. با نوشتن اعداد پررنگ (شکل 4) از بالا به پایین، عدد مورد نیاز را در سیستم باینری بدست می آوریم: 0. 0011011 .

    بنابراین، می توانیم بنویسیم:

    0.214 10 =0.0011011 2 .

    مثال 8 . بیایید عدد 0.125 را از سیستم اعداد اعشاری به SS باینری ترجمه کنیم.

    0.125
    ایکس 2
    0 0.25
    ایکس 2
    0 0.5
    ایکس 2
    1 0.0

    برای تبدیل عدد 0.125 از SS اعشاری به باینری این عدد متوالی در 2 ضرب می شود در مرحله سوم 0 به دست آمد بنابراین نتیجه زیر به دست آمد:

    0.125 10 =0.001 2 .

    مثال 9 . بیایید عدد 0.214 را از سیستم اعداد اعشاری به SS هگزادسیمال ترجمه کنیم.

    0.214
    ایکس 16
    3 0.424
    ایکس 16
    6 0.784
    ایکس 16
    12 0.544
    ایکس 16
    8 0.704
    ایکس 16
    11 0.264
    ایکس 16
    4 0.224

    به دنبال مثال های 4 و 5، اعداد 3، 6، 12، 8، 11، 4 را به دست می آوریم. اما در SS هگزادسیمال، اعداد C و B با اعداد 12 و 11 مطابقت دارند. بنابراین، داریم:

    0.214 10 = 0.36C8B4 16.

    مثال 10 . بیایید عدد 0.512 را از سیستم اعداد اعشاری به SS هشتی ترجمه کنیم.

    0.512
    ایکس 8
    4 0.096
    ایکس 8
    0 0.768
    ایکس 8
    6 0.144
    ایکس 8
    1 0.152
    ایکس 8
    1 0.216
    ایکس 8
    1 0.728

    بدست آورد:

    0.512 10 =0.406111 8 .

    مثال 11 . بیایید عدد 159.125 را از سیستم اعداد اعشاری به SS باینری ترجمه کنیم. برای این کار، قسمت صحیح عدد (مثال 4) و قسمت کسری عدد (مثال 8) را جداگانه ترجمه می کنیم. با ترکیب این نتایج بدست می آوریم:

    159.125 10 =10011111.001 2 .

    مثال 12 . بیایید عدد 19673.214 را از سیستم اعداد اعشاری به SS هگزادسیمال ترجمه کنیم. برای این کار، قسمت صحیح عدد (مثال 6) و قسمت کسری عدد (مثال 9) را جداگانه ترجمه می کنیم. با ترکیب بیشتر این نتایج به دست می آوریم.

    سیستم اعداد هگزادسیمال اولین برنامه ما

    برای نوشتن برنامه در اسمبلر، باید سیستم اعداد هگزادسیمال را بدانید. هیچ چیز پیچیده ای در آن وجود ندارد. ما از سیستم اعشاری در زندگی خود استفاده می کنیم. من مطمئن هستم که همه شما آن را می دانید، بنابراین من سعی می کنم سیستم هگزادسیمال را با قیاس با اعشار توضیح دهم.

    بنابراین، در سیستم اعشاری، اگر به سمت راست هر عددی صفر را اضافه کنیم، این عدد 10 برابر می شود. به عنوان مثال: 1 x 10 = 10; 10 x 10 = 100; 100 × 10 = 1000 و غیره در این سیستم از اعداد 0 تا 9 استفاده می کنیم. ده رقم مختلف (در واقع، به همین دلیل به آن اعشاری می گویند).

    در سیستم هگزادسیمال، ما به ترتیب از شانزده "رقم" استفاده می کنیم. من به طور خاص کلمه "اعداد" را در گیومه نوشتم، زیرا از اعداد بیشتر استفاده می کند. و واقعا چگونه است؟ من توضیح می دهم: از 0 تا 9 را به همان ترتیبی که در اعشار می شماریم، اما پس از آن اینگونه می شود: A, B, C, D, E, F. عدد F هر چقدر هم که سخت باشد. شمارش، در سیستم اعشاری برابر با 15 خواهد بود (جدول 1 را ببینید).

    عدد اعشاری

    عدد هگزادسیمال

    جدول 1. سیستم های اعشاری و هگزادسیمال.

    بنابراین، اگر به هر عددی در سیستم هگزادسیمال به سمت راست صفر اضافه کنیم، آنگاه این عدد افزایش می یابد.16 یک بار.

    مثال 1: 1 x 16 = 10; 10 x 16 = 100; 100 x 16 = 1000 و غیره

    آیا در مثال 1 توانستید هگزادسیمال را از اعشاری تشخیص دهید؟ و از این ردیف: 10، 12، 45، 64، 12، 8، 19؟ می تواند هگزادسیمال یا اعشاری باشد. برای جلوگیری از سردرگمی، و کامپیوتر می تواند به طور واضح یک عدد را از دیگری تشخیص دهد، در اسمبلر مرسوم است که کاراکتر h یا H را بعد از عدد هگزادسیمال قرار می دهد ( H مخفف انگلیسی است. هگزادسیمال (هگزادسیمال). به طور خلاصه، گاهی اوقات به آن ساده می گویند هگز ) . و بعد از اعشار چیزی نگذارید. زیرا اعداد از 0 تا 9 در هر دو سیستم معنی یکسانی دارند، سپس اعدادی که به صورت 5 و 5h نوشته می شوند یکسان هستند.

    که مثال 1 (به بالا مراجعه کنید) درست تر است که به صورت زیر بنویسید: 1 x 16 = 10h; 10 ساعت × 16 = 100 ساعت؛ 100 ساعت × 16 = 1000 ساعت. یا مانند این: 1h x 10h = 10h; 10 ساعت × 10 ساعت = 100 ساعت؛ 100 ساعت × 10 ساعت = 1000 ساعت.

    چرا سیستم هگزادسیمال مورد نیاز است، در شماره های بعدی بررسی خواهیم کرد. در حال حاضر، برای نمونه برنامه ما که در ادامه به آن پرداخته خواهد شد، باید از وجود اعداد هگزادسیمال بدانیم.

    پس بیایید آن را خلاصه کنیم. سیستم اعداد هگزادسیمال شامل 10 رقم (از 0 تا 9) و 6 حرف از الفبای لاتین (A, B, C, D, E, F) است. اگر به سمت راست هر عددی در سیستم هگزادسیمال صفر اضافه کنیم، این عدد افزایش می یابد16 یک بار. درک این موضوع بسیار مهم است.، از آنجایی که ما دائماً از آن هنگام نوشتن برنامه استفاده خواهیم کرد.

    حالا کمی در مورد نحوه ساختن نمونه ها در اسمبلر. ارائه آنها در قالب HTML چندان راحت نیست، بنابراین ابتدا خود کد برنامه با خطوط شماره گذاری شده وجود خواهد داشت و بلافاصله بعد از آن توضیحات و یادداشت هایی ارائه می شود.

    مانند آن:

    خطوط کد برنامه
    (1) mov ah,9

    توضیحات:

    در ردیف (1) کاری انجام می دهیم و در ردیف (15) کاری را انجام می دهیم.

    درخواست بزرگ: برنامه ها را از صفحه به کلیپ بورد کپی نکنید و سپس آنها را در دفترچه یادداشت (یا هر جای دیگری) قرار ندهید! آنها را به صورت دستی در یک ویرایشگر متن تایپ کنید. اگر چاپگر وجود دارد، برنامه را انتخاب کنید، قطعه انتخاب شده را چاپ کنید و سپس از کاغذ به ویرایشگر منتقل کنید. همه نمونه ها باید توسط خودتان تایپ شوند!این امر به خاطر سپردن اپراتورها سرعت می بخشد.

    و بیشتر. حروف کوچک و بزرگ در اسمبلر متمایز نمی شوند. ورودی هایی مانند:

    اسمبلر به طور مساوی درک می شود. البته می توانید اسمبلر را مجبور کنید که بین کاراکترهای کوچک و UPPER تمایز قائل شود، اما فعلا این کار را انجام نمی دهیم. برای خوانایی برنامه، بهتر است عبارات را با حروف کوچک تایپ کنید و نام زیر روال ها و برچسب ها را با حروف بزرگ شروع کنید. اما اینگونه برای کسی راحت خواهد بود.

    پس بیایید به اولین برنامه خود برویم:

    (1) بخش CSEG

    (2) org 100h

    (4) شروع:

    (6) mov ah,9

    (7) mov dx، پیام افست

    (8) بین 21 ساعت

    (10) بین 20 ساعت

    (11)

    (12) پیام db "سلام، دنیا!$"

    (13) CSEG به پایان می رسد

    (14) پایان شروع

    برای توضیح همه عملگرهای این مثال به چندین قسمت نیاز داریم. بنابراین در این مرحله به سادگی از توضیح برخی دستورات صرف نظر می کنیم. فقط فکر کن اینطوری باید باشه در آینده ای نزدیک، این اپراتورها را به تفصیل بررسی خواهیم کرد. بنابراین، خطوط با اعداد (1)، (2) و (13) به سادگی نادیده گرفته می شوند.

    خطوط (3)، (5)، (9) و (11) خالی می مانند. این برای وضوح انجام می شود. اسمبلر به سادگی آنها را حذف می کند.

    حالا بیایید به سراغ بقیه اپراتورها برویم. از خط (4) کد برنامه شروع می شود. این یک برچسب است که به اسمبلر می گوید کد را شروع کند. خط (14) حاوی عبارات پایان Begin (انگلیسی را شروع کنید شروع؛ پایان پایان). این پایان برنامه است. به طور کلی، به جای کلمهشروع چیز دیگری می توانست استفاده شود مثلا،شروع:. در این صورت باید برنامه را کامل کنیمپایان شروع (14).

    در خطوط (6) (8) پیام Hello, world!. در اینجا باید به طور خلاصه در مورد رجیسترهای پردازنده صحبت کنیم (در شماره بعدی این موضوع را با جزئیات بیشتری بررسی خواهیم کرد).

    ثبات پردازنده یک حافظه اختصاصی برای ذخیره یک عدد است.

    مثلا:

    اگر بخواهیم دو عدد را جمع کنیم، در ریاضیات به این صورت می نویسیم:

    الف، ب و ج آنها نوعی ثبات هستند (اگر در مورد رایانه صحبت کنیم) که برخی از داده ها را می توان در آنها ذخیره کرد. A=5 را می توان به صورت زیر خواند: به A عدد 5 را اختصاص دهید .

    برای اختصاص یک مقدار به یک ثبات، یک عملگر mov در اسمبلر (از انگلیسی move load) وجود دارد. سطر (6) را باید اینگونه خواند: در حال بارگذاری در ثبت نام قعدد 9 (به عبارت دیگر، ما اختصاص می دهیم قشماره 9).در زیر ما بررسی خواهیم کرد که چرا این امر ضروری است.

    در خط (7) در رجیستر بارگذاری می کنیم DX آدرس پیامی که باید خروجی شود (در این مثال رشته خواهد بودسلام دنیا!$).

    وقفه ها در نسخه های بعدی به تفصیل پوشش داده خواهند شد. در اینجا چند کلمه می گویم.

    قطع کنید MS-DOS نوعی زیربرنامه است (بخشی از MS DOS)، که به طور دائم در حافظه است و می تواند در هر زمان از هر برنامه ای فراخوانی شود.

    موارد فوق را با یک مثال در نظر بگیرید (برجسته کردن یادداشت ها با چاپ کوچک):

    برنامه برای جمع دو عدد

    برنامه های خانگی

    A=5 در متغیر A مقدار 5 را وارد می کنیم

    B=8 به متغیر B مقدار 8

    اضافه کردن تماس زیر روال

    اکنون C 13 است

    A=10 یکسان، فقط اعداد متفاوت

    B=25

    اضافه کردن تماس زیر روال

    اکنون C 35 است

    پایان برنامه

    اضافه کردن زیربرنامه

    C=A+B

    ReturnFrom Subroutine به جایی که از آنجا زنگ زدیم برمی گردیم

    پایان زیربرنامه

    در این مثال ما دو بار زیر برنامه را فراخوانی کردیم اضافه، که دو عدد ارسال شده به آن را در متغیرها اضافه کردالف و ب . نتیجه در متغیر C قرار می گیرد. هنگامی که یک برنامه فرعی فراخوانی می شود، کامپیوتر به خاطر می آورد که از کجا فراخوانی شده است، و پس از پایان برنامه فرعی، کامپیوتر به مکانی که از آن فراخوانی شده است باز می گردد. که شما می توانید زیر روال ها را تعداد نامحدودی از هر جایی فراخوانی کنید.

    هنگام اجرای خط (8) یک برنامه اسمبلر، یک زیر روال (در این مورد وقفه نامیده می شود) را فرا می خوانیم که خط را روی صفحه چاپ می کند. برای این کار در واقع مقادیر لازم را در رجیسترها قرار می دهیم. تمام کارهای لازم (خروجی خط، حرکت مکان نما) توسط زیربرنامه انجام می شود. این خط را می توان اینگونه خواند: وقفه بیست و یکم را صدا می زنیم ( int از انگلیسی قطع کردن قطع کردن). لطفا توجه داشته باشید که بعد از عدد 21 یک حرف وجود داردساعت . همانطور که قبلاً می دانیم این یک عدد هگزادسیمال (33 در اعشار) است. البته هیچ چیز مانع از تعویض خط نمی شود int 21h تا int 33. برنامه به درستی کار خواهد کرد. فقط در اسمبلر مرسوم است که عدد وقفه را به صورت هگزادسیمال نشان دهند.

    در خط (10) ما، حدس زدید، وقفه 20 را صدا می کنیمساعت . برای فراخوانی این وقفه، نیازی به تعیین هیچ مقداری در رجیسترها ندارید. این تنها یک کار را انجام می دهد: خروج از برنامه (خروج از DOS). در نتیجه وقفه 20 ساعت، برنامه به جایی که راه اندازی شده (بارگذاری، فراخوانی) باز می گردد. به عنوان مثال، در Norton Commander یا DOS Navigator.

    خط (12) حاوی پیامی است که باید خروجی شود. اولین لغت (پیام پیام) نام پیام. این می تواند هر چیزی باشد (مثلاآشفتگی یا رشته و غیره). در باره به خط (7) که در آن در رجیستر بارگذاری می کنیم توجه کنید DX آدرس پیام ما

    ما می توانیم خط دیگری ایجاد کنیم که آن را فراخوانی می کنیمآشفتگی 2. سپس از خط (9) دستورات زیر را وارد کنید:

    (10) mov dx, offset Mess2

    (13) پیام db "سلام، دنیا!$"

    (14) Mess2 db "این من هستم! $"

    و دوباره برنامه ما را جمع آوری کنیم. امیدوارم حدس بزنید قرار است چه اتفاقی بیفتد

    به آخرین کاراکتر در خطوط توجه کنید Message and Mess2 - $. به انتهای خط اشاره می کند. اگر آن را حذف کنیم، 21ساعت وقفه به خروجی ادامه می دهد تا زمانی که یک کاراکتر در جایی از حافظه مواجه شود $. روی صفحه نمایش خواهیم دیدزباله .

    اگر یک دیباگر دارید، می توانید ببینید که برنامه ما چگونه کار می کند.

    هدف از این موضوع فهمیدن نبود به تفصیل با هر اپراتور. این غیر ممکن است، زیرا شما هنوز دانش کافی ندارید من معتقدم که بعد از 3-4 نسخه، اصل و ساختار برنامه را در اسمبلر درک خواهید کرد. شاید فکر می کردید که زبان اسمبلی بسیار پیچیده است، اما باور کنید، در یک نگاه.

    سیستم اعداد هگزادسیمال(همچنین کد هگزادسیمال) یک سیستم اعداد موقعیتی با پایه اعداد صحیح 16 است. گاهی اوقات اصطلاح هگز نیز در ادبیات استفاده می شود (تلفظ "هگز"، مخفف انگلیسی هگزادسیمال). اعداد این سیستم اعداد معمولاً از اعداد عربی 0-9 و همچنین اولین کاراکترهای الفبای لاتین A-F استفاده می شود. حروف با مقادیر اعشاری زیر مطابقت دارند:

    • * A -10؛
    • *B-11;
    • *ج-12;
    • *د-13;
    • * E - 14;
    • * F - 15.

    بنابراین ده عدد عربی به همراه شش حرف لاتین، شانزده رقم سیستم را تشکیل می دهند.

    به هر حال، در وب سایت ما می توانید با استفاده از ماشین حساب آنلاین کد، هر متنی را به کد اعشاری، هگزادسیمال، باینری تبدیل کنید.

    کاربرد. کد هگزبه طور گسترده در برنامه نویسی سطح پایین و همچنین در اسناد مرجع کامپیوتری مختلف استفاده می شود. محبوبیت این سیستم با راه حل های معماری رایانه های مدرن توجیه می شود: آنها دارای یک بایت (شامل هشت بیت) به عنوان حداقل واحد اطلاعات هستند - و نوشتن ارزش یک بایت با استفاده از دو رقم هگزا دسیمال راحت است. یک مقدار بایت می تواند از #00 تا #FF (0 تا 255 در نماد اعشاری) متغیر باشد - به عبارت دیگر، با استفاده از کد هگز، می توانید هر حالتی از بایت را بنویسید، در حالی که هیچ رقم "اضافی" در ضبط استفاده نشده است.

    کدگذاری شده است یونیکدچهار رقم هگزا دسیمال برای نمایش عدد کاراکتر استفاده می شود. نماد رنگی RGB (قرمز، سبز، آبی) نیز اغلب از یک کد هگزادسیمال استفاده می کند (به عنوان مثال، #FF0000 یک نماد قرمز روشن است).

    روشی برای نوشتن کد هگزادسیمال

    روش ریاضی نوشتن. در نماد ریاضی، پایه سیستم به صورت اعشاری در یک زیرنویس در سمت راست عدد نوشته می شود. نماد اعشاری برای عدد 3032 را می توان 3032 10 نوشت، در هگزادسیمال این عدد به صورت BD8 16 نوشته می شود.

    در نحو زبان های برنامه نویسی. سینتکس زبان های برنامه نویسی مختلف فرمت نوشتن یک عدد را با استفاده از آن تعیین می کند کد هگز:

    * در نحو برخی از انواع زبان اسمبلی، از حرف لاتین "h" استفاده می شود که در سمت راست عدد قرار می گیرد، به عنوان مثال: 20Dh. اگر عدد با یک حرف لاتین شروع می شود، قبل از آن یک صفر قرار می گیرد، به عنوان مثال: 0A0Bh. این به منظور تمایز مقادیر از ثابت با استفاده انجام می شود کد هگز;

    * انواع دیگر اسمبلر، و همچنین پاسکال (و انواع آن مانند دلفی) و برخی از گویش های پایه، از پیشوند "$" استفاده می کنند: $A15.

    * در زبان نشانه گذاری HTML و همچنین در فایل های CSS آبشاری، برای تعیین رنگ در فرمت RGB با نماد هگزادسیمال، از پیشوند "#" استفاده می شود: #00DC00.

    چگونه یک کد هگزادسیمال را به سیستم دیگری ترجمه کنیم؟

    از هگزادسیمال به اعشاری تبدیل کنید.برای انجام عملیات تبدیل از یک سیستم هگزا دسیمال به یک اعشاری، باید عدد اصلی را به عنوان مجموع حاصلضرب ارقام در ارقام عدد هگزادسیمال با درجه مبنا نشان داد.

    باینری SS

    ss هگزادسیمال

    به عنوان مثال، شما باید عدد هگزادسیمال A14 را ترجمه کنید: دارای سه رقم است. با استفاده از قانون، آن را به صورت مجموع توان ها با پایه 16 می نویسیم:

    A14 16 = 10.16 2 + 1.16 1 + 4.16 0 = 10.256 + 1.16 + 4.1 = 2560 + 16 + 4 = 2580 10

    تبدیل اعداد از باینری به هگزادسیمال و بالعکس.

    برای ترجمه از جدول دفترچه ها استفاده می شود. برای تبدیل یک عدد از دودویی به اعشاری، باید آن را از راست به چپ به تترادهای جداگانه تقسیم کرد و سپس با استفاده از جدول، هر تتراد را با رقم هگزادسیمال مربوطه جایگزین کرد. در این صورت، اگر تعداد ارقام مضرب چهار نباشد، باید تعداد صفرهای مربوطه را در سمت راست عدد جمع کرد تا تعداد کل ارقام باینری مضرب چهار شود.

    جدول دفترهای ترجمه.

    برای تبدیل از هگزادسیمال به باینری، باید عملیات معکوس را انجام دهید: هر رقم را با یک تتراد از جدول جایگزین کنید.

    باینری SS

    Octal SS

    مثال تبدیل از هگزادسیمال به باینری: A5E 16 = 1010 0101 1110 = 101001011110 2

    مثال تبدیل از باینری به هگزادسیمال: 111100111 2 = 0001 1110 0111 = 1E7 16

    در این مثال، تعداد ارقام در عدد باینری اصلی چهار (9) نبود، بنابراین صفرهای انتهایی اضافه شدند تا تعداد کل ارقام به 12 برسد.

    ترجمه خودکار. تبدیل سریع از هگزا دسیمال به یکی از سه سیستم محبوب (باینری، اکتال و اعشاری)، و همچنین ترجمه معکوس را می توان با استفاده از یک ماشین حساب استاندارد ارائه شده با ویندوز انجام داد. ماشین حساب را باز کنید، View -> Programmer را از منو انتخاب کنید. در این حالت، می توانید سیستم اعداد مورد استفاده را تنظیم کنید (به منوی سمت چپ مراجعه کنید: Hex، Dec، Oct، Bin). در این مورد، تغییر سیستم شماره فعلی به طور خودکار ترجمه می شود.