Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ° ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ: конспСкт Π»Π΅ΠΊΡ†ΠΈΠΉΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 27

Автор А. Π¦Π²Π΅Ρ‚ΠΊΠΎΠ²Π°

1. xadd Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, источник – ΠΎΠ±ΠΌΠ΅Π½ мСстами ΠΈ слоТСниС.

Команда позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄Π²Π° дСйствия:

1) ΠΎΠ±ΠΌΠ΅Π½ΡΡ‚ΡŒ значСния Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ источник;

2) ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π½Π° мСсто ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ сумму: Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ + источник.

2. neg ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ – ΠΎΡ‚Ρ€ΠΈΡ†Π°Π½ΠΈΠ΅ с Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Π΄ΠΎ Π΄Π²ΡƒΡ….

Команда выполняСт ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ значСния ΠΎΠΏΠ΅Ρ€Π°Π½Π΄. ЀизичСски ΠΊΠΎΠΌΠ°Π½Π΄Π° выполняСт ΠΎΠ΄Π½ΠΎ дСйствиС:

ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ = 0 – ΠΎΠΏΠ΅Ρ€Π°Π½Π΄, Ρ‚. Π΅. Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ ΠΈΠ· нуля.

ΠšΠΎΠΌΠ°Π½Π΄Ρƒ neg ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ:

1) Π΄Π»Ρ смСны Π·Π½Π°ΠΊΠ°;

2) Π΄Π»Ρ выполнСния вычитания ΠΈΠ· константы.

АрифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎ-дСсятичными числами

Π’ Π΄Π°Π½Π½ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ рассмотрим особСнности ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… основных арифмСтичСских дСйствий для ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΈ Π½Π΅ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π΄Π²ΠΎΠΈΡ‡Π½ΠΎ-дСсятичных чисСл.

Π‘ΠΏΡ€Π°Π²Π΅Π΄Π»ΠΈΠ²ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ вопрос: Π° Π·Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½Ρ‹ BCD-числа? ΠžΡ‚Π²Π΅Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ: BCD-числа Π½ΡƒΠΆΠ½Ρ‹ Π² Π΄Π΅Π»ΠΎΠ²Ρ‹Ρ… прилоТСниях, Ρ‚. Π΅. Ρ‚Π°ΠΌ, Π³Π΄Π΅ числа Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ большими ΠΈ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌΠΈ. Как ΠΌΡ‹ ΡƒΠΆΠ΅ ΡƒΠ±Π΅Π΄ΠΈΠ»ΠΈΡΡŒ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… чисСл, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Ρ‚Π°ΠΊΠΈΠΌΠΈ числами довольно ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½Ρ‹ для языка ассСмблСра. К нСдостаткам использования Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… чисСл ΠΌΠΎΠΆΠ½ΠΎ отнСсти ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅:

1) Π·Π½Π°Ρ‡Π΅Π½ΠΈΡ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ слова ΠΈ Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ слова ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½. Если ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² области финансов, Ρ‚ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ суммы Π² рублях Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ΠΎΠΉ 65 536 (для слова) ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ 4 294 967 296 (для Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ слова) Π±ΡƒΠ΄Π΅Ρ‚ сущСствСнно ΡΡƒΠΆΠ°Ρ‚ΡŒ сфСру Π΅Π΅ примСнСния;

2) Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ошибок округлСния. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚Π΅ сСбС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΡƒΡŽ Π³Π΄Π΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π² Π±Π°Π½ΠΊΠ΅, которая Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ остатка ΠΏΡ€ΠΈ дСйствиях с Ρ†Π΅Π»Ρ‹ΠΌΠΈ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΌΠΈ числами ΠΈ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΈ этом ΠΌΠΈΠ»Π»ΠΈΠ°Ρ€Π΄Π°ΠΌΠΈ? НС Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π°Π²Ρ‚ΠΎΡ€ΠΎΠΌ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ чисСл с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Π½Π΅ спасСт – Ρ‚Π°ΠΌ сущСствуСт Ρ‚Π° ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° округлСния;

3) ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ большого объСма Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π² символьном Π²ΠΈΠ΄Π΅ (ASCII-ΠΊΠΎΠ΄Π΅). Π”Π΅Π»ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ просто Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ вычислСния; ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Ρ†Π΅Π»Π΅ΠΉ ΠΈΡ… использования являСтся опСративная Π²Ρ‹Π΄Π°Ρ‡Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ. Для этого, СстСствСнно, информация Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ прСдставлСна Π² символьном Π²ΠΈΠ΄Π΅. ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ чисСл ΠΈΠ· Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² ASCII-ΠΊΠΎΠ΄ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Ρ‚Ρ€Π°Ρ‚. Число с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Π΅Ρ‰Π΅ Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π΅ пСрСвСсти Π² ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Π²ΠΈΠ΄. А Π²ΠΎΡ‚ Ссли ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠ΅ прСдставлСниС Π½Π΅ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΠΎΠΉ дСсятичной Ρ†ΠΈΡ„Ρ€Ρ‹ ΠΈ Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π΅ΠΉ символ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ASCII, Ρ‚ΠΎ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Π½Π° Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ 30h. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Π²ΠΈΠ΄ ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ получаСтся Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ ΠΈ быстрСС.

НавСрноС Π²Ρ‹ ΡƒΠΆΠ΅ ΡƒΠ±Π΅Π΄ΠΈΠ»ΠΈΡΡŒ Π² ваТности овладСния хотя Π±Ρ‹ основами дСйствий с дСсятичными числами. Π”Π°Π»Π΅Π΅ рассмотрим особСнности выполнСния основных арифмСтичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с дСсятичными числами. ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ сразу Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ слоТСния, вычитания, умноТСния ΠΈ дСлСния BCD-чисСл Π½Π΅Ρ‚. Π‘Π΄Π΅Π»Π°Π½ΠΎ это ΠΏΠΎ Π²ΠΏΠΎΠ»Π½Π΅ понятным ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ: Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΡ… чисСл ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сколь ΡƒΠ³ΠΎΠ΄Π½ΠΎ большой. Π‘ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎ-дСсятичныС числа, ΠΊΠ°ΠΊ Π² ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅, Ρ‚Π°ΠΊ ΠΈ Π² Π½Π΅ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΠΎΠΌ, Π° Π²ΠΎΡ‚ Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΈ ΡƒΠΌΠ½ΠΎΠΆΠ°Ρ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½Ρ‹Π΅ BCD-числа. ΠŸΠΎΡ‡Π΅ΠΌΡƒ это Ρ‚Π°ΠΊ, Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· дальнСйшСго обсуТдСния.

АрифмСтичСскиС дСйствия Π½Π°Π΄ Π½Π΅ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ BCD-числами

Π‘Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½Ρ‹Ρ… BCD-чисСл

Рассмотрим Π΄Π²Π° случая слоТСния.


ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ слоТСния Π½Π΅ большС 9

6 = 0000 0110

+

3 = 0000 0011

=

9 = 0000 1001

ΠŸΠ΅Ρ€Π΅Π½ΠΎΡΠ° ΠΈΠ· младшСй Ρ‚Π΅Ρ‚Ρ€Π°Π΄Ρ‹ Π² ΡΡ‚Π°Ρ€ΡˆΡƒΡŽ Π½Π΅Ρ‚. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ.


ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ слоТСния большС 9:

06 = 0000 0110

+

07 = 0000 0111

=

13 = 0000 1101

ΠœΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΡƒΠΆΠ΅ Π½Π΅ BCD-число. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ. ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² Π½Π΅ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΠΎΠΌ BCD-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ: 0000 0001 0000 0011 Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ прСдставлСнии (ΠΈΠ»ΠΈ 13 Π² дСсятичном).

ΠŸΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π² Π΄Π°Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΏΡ€ΠΈ слоТСнии BCD-чисСл (ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… арифмСтичСских дСйствий) ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ Π΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ систСмы ΠΊΠΎΠΌΠ°Π½Π΄ микропроцСссора Ρ€Π΅ΡˆΠΈΠ»ΠΈ Π½Π΅ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с BCD-числами, Π° ввСсти нСсколько ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄.

НазначСниС этих ΠΊΠΎΠΌΠ°Π½Π΄ – Π² ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²ΠΊΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… арифмСтичСских ΠΊΠΎΠΌΠ°Π½Π΄ для случаСв, ΠΊΠΎΠ³Π΄Π° ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ Π² Π½ΠΈΡ… ΡΠ²Π»ΡΡŽΡ‚ΡΡ BCD-числами.

Π’ случаС вычитания Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 10 Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½ΡƒΠΆΠ½ΠΎ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ†ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ слоТСния Π΄Π²ΡƒΡ… ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½Ρ‹Ρ… Π½Π΅ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½Ρ‹Ρ… BCD-чисСл Π² систСмС ΠΊΠΎΠΌΠ°Π½Π΄ микропроцСссора сущСствуСт ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° – Π°Π°Π° (ASCII Adjust for Addition) β€“ коррСкция Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° слоТСния для прСдставлСния Π² символьном Π²ΠΈΠ΄Π΅.

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ². Она Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ нСявно Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с рСгистром al ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ младшСй Ρ‚Π΅Ρ‚Ρ€Π°Π΄Ρ‹:

1) Π΅ΡΠ»ΠΈ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ мСньшС 9, Ρ‚ΠΎ Ρ„Π»Π°Π³ cf сбрасываСтся Π² О ΠΈ осущСствляСтся ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅;

2) Π΅ΡΠ»ΠΈ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ большС 9, Ρ‚ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия:

Π°) ΠΊ содСрТимому младшСй Ρ‚Π΅Ρ‚Ρ€Π°Π΄Ρ‹ al (Π½ΠΎ Π½Π΅ ΠΊ содСрТимому всСго рСгистра!) прибавляСтся 6, Ρ‚Π΅ΠΌ самым Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ дСсятичного Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° коррСктируСтся Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ сторону;

Π±) Ρ„Π»Π°Π³ cf устанавливаСтся Π² 1, Ρ‚Π΅ΠΌ самым фиксируСтся пСрСнос Π² ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ разряд, для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΡƒΡ‡Π΅ΡΡ‚ΡŒ Π² ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… дСйствиях.

Π’Π°ΠΊ, Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 10, прСдполагая, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ суммы 0000 1101 находится Π² al, послС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π°Π°Π° Π² рСгистрС Π±ΡƒΠ΄Π΅Ρ‚ 1101 + 0110 = 0011, Ρ‚. Π΅. Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅ 0000 0011 ΠΈΠ»ΠΈ дСсятичноС 3, Π° Ρ„Π»Π°Π³ cf установится Π² 1, Ρ‚. Π΅. пСрСнос запомнился Π² микропроцСссорС. Π”Π°Π»Π΅Π΅ программисту Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ слоТСния adc, которая ΡƒΡ‡Ρ‚Π΅Ρ‚ пСрСнос ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ разряда.


Π’Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ Π½Π΅ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½Ρ‹Ρ… BCD-чисСл

Битуация здСсь Π²ΠΏΠΎΠ»Π½Π΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Π° слоТСнию. Рассмотрим Ρ‚Π΅ ΠΆΠ΅ случаи.


ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ вычитания Π½Π΅ большС 9:

6 = 0000 0110

-

3 = 0000 0011

=

3 = 0000 0011

Как Π²ΠΈΠ΄ΠΈΠΌ, Π·Π°Π΅ΠΌΠ° ΠΈΠ· ΡΡ‚Π°Ρ€ΡˆΠ΅ΠΉ Ρ‚Π΅Ρ‚Ρ€Π°Π΄Ρ‹ Π½Π΅Ρ‚. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²Π΅Ρ€Π½Ρ‹ΠΉ ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²ΠΊΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚.


ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ вычитания большС 9:

6 = 0000 0110

-

7 = 0000 0111

=

-1 = 1111 1111


Π’Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ проводится ΠΏΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠΈ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π΅ являСтся BCD-числом.

ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² Π½Π΅ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΠΎΠΌ BCD-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ 9 (0000 1001 Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ систСмС счислСния). ΠŸΡ€ΠΈ этом прСдполагаСтся Π·Π°Π΅ΠΌ ΠΈΠ· ΡΡ‚Π°Ρ€ΡˆΠ΅Π³ΠΎ разряда, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ вычитания, Ρ‚. Π΅. Π² ΡΠ»ΡƒΡ‡Π°Π΅ с BCD числами фактичСски Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ 16 – 7. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²ΠΈΠ΄Π½ΠΎ: ΠΊΠ°ΠΊ ΠΈ Π² случаС слоТСния, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ вычитания Π½ΡƒΠΆΠ½ΠΎ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Для этого сущСствуСт ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° – aas (ASCII Adjust for Substraction) β€“ коррСкция Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° вычитания для прСдставлСния Π² символьном Π²ΠΈΠ΄Π΅.

Команда aas Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с рСгистром al, анализируя Π΅Π³ΠΎ ΠΌΠ»Π°Π΄ΡˆΡƒΡŽ Ρ‚Π΅Ρ‚Ρ€Π°Π΄Ρƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

1) Π΅ΡΠ»ΠΈ Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ мСньшС 9, Ρ‚ΠΎ Ρ„Π»Π°Π³ cf сбрасываСтся Π² 0 ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ пСрСдаСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅;

2) Π΅ΡΠ»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅Ρ‚Ρ€Π°Π΄Ρ‹ Π² al большС 9, Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° aas выполняСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия:

Π°) ΠΈΠ· содСрТимого младшСй Ρ‚Π΅Ρ‚Ρ€Π°Π΄Ρ‹ рСгистра al (Π·Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅ – Π½Π΅ ΠΈΠ· содСрТимого всСго рСгистра) Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ 6;

Π±) ΠΎΠ±Π½ΡƒΠ»ΡΠ΅Ρ‚ ΡΡ‚Π°Ρ€ΡˆΡƒΡŽ Ρ‚Π΅Ρ‚Ρ€Π°Π΄Ρƒ рСгистра al;

Π²) ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ‚ Ρ„Π»Π°Π³ cf Π² 1, Ρ‚Π΅ΠΌ самым фиксируя Π²ΠΎΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹ΠΉ Π·Π°Π΅ΠΌ ΠΈΠ· ΡΡ‚Π°Ρ€ΡˆΠ΅Π³ΠΎ разряда.

ΠŸΠΎΠ½ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° aas примСняСтся вмСстС с основными ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ вычитания sub ΠΈ sbb. ΠŸΡ€ΠΈ этом ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ sub Π΅ΡΡ‚ΡŒ смысл ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, ΠΏΡ€ΠΈ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠΈ самых ΠΌΠ»Π°Π΄ΡˆΠΈΡ… Ρ†ΠΈΡ„Ρ€ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ², Π΄Π°Π»Π΅Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° sbb, которая Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΉ Π·Π°Π΅ΠΌ ΠΈΠ· ΡΡ‚Π°Ρ€ΡˆΠ΅Π³ΠΎ разряда.


Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½Ρ‹Ρ… BCD-чисСл

На ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ слоТСния ΠΈ вычитания Π½Π΅ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½Ρ‹Ρ… чисСл стало понятно, Ρ‡Ρ‚ΠΎ стандартных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² для выполнСния этих дСйствий Π½Π°Π΄ BCD-числами Π½Π΅Ρ‚ ΠΈ программист Π΄ΠΎΠ»ΠΆΠ΅Π½ сам, исходя ΠΈΠ· Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ своСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ эти ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

РСализация Π΄Π²ΡƒΡ… ΠΎΡΡ‚Π°Π²ΡˆΠΈΡ…ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ – умноТСния ΠΈ дСлСния – Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ слоТна. Π’ систСмС ΠΊΠΎΠΌΠ°Π½Π΄ микропроцСссора ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ срСдства для производства умноТСния ΠΈ дСлСния одноразрядных Π½Π΅ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½Ρ‹Ρ… BCD-чисСл.

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΌΠ½ΠΎΠΆΠ°Ρ‚ΡŒ числа ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ размСрности, Π½ΡƒΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ процСсс умноТСния ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, взяв Π·Π° основу Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ умноТСния, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Β«Π² столбик».

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ Π΄Π²Π° одноразрядных BCD-числа, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ:

1) ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· сомноТитСлСй Π² рСгистр AL (ΠΊΠ°ΠΊ Ρ‚ΠΎΠ³ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π° mul);

2) ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ Π² рСгистр ΠΈΠ»ΠΈ ΠΏΠ°ΠΌΡΡ‚ΡŒ, отвСдя Π±Π°ΠΉΡ‚;

3) ΠΏΠ΅Ρ€Π΅ΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ сомноТитСли ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ mul (Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΊΠ°ΠΊ ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΎ, Π±ΡƒΠ΄Π΅Ρ‚ Π² Π°Ρ…);

4) Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, получится Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅, поэтому Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

Для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ†ΠΈΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° послС умноТСния примСняСтся ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° – aam (ASCII Adjust for Multiplication) β€“ коррСкция Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° умноТСния для прСдставлСния Π² символьном Π²ΠΈΠ΄Π΅.

Она Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с рСгистром АΠ₯ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

1) Π΄Π΅Π»ΠΈΡ‚ al Π½Π° 10;

2) Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ дСлСния записываСтся Ρ‚Π°ΠΊ: частноС Π² al, остаток Π² ah. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ послС выполнСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ aam Π² рСгистрах AL ΠΈ ah находятся ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎ-дСсятичныС Ρ†ΠΈΡ„Ρ€Ρ‹ произвСдСния Π΄Π²ΡƒΡ… Ρ†ΠΈΡ„Ρ€.