Жинақталмаған BCD-сандарды бөлу
Екі жинақталмаған BCD-сандарды бөлу процесі басқаларға қарағанда бірнеше ерекшеліктері бар. Мұнда қалыпқа келтіруді орындау керек, бірақ олар негізгі бөлу операнциясына дейін орындалуы керек. Алдын-ала AX регистріне бөлінгіштің екі жинақталмаған BCD-сандарын алуымыз керек. Ары қарай AAD командасын орындаймыз:
AAD (ASCII Adjust for Division) — командасы бөлу нәтижесін символдық түрде беру үшін қалпына келтіреді. Бұл команданың операндтары болмайды және жинақталмаған екімәнді BCD-санды AХ регистрімен екілік санға ауыстырады. Бұл екілік сан бөлу операциясы кезінде бөлінді ролін атқарады. Ауыстырудан басқа, AAD командасы алынған екілік санды AL регистріне орналастырады. Бөлінгіш, әрине екілік сан болады ол 0...99 диапазонынан алынады.
AAD командасының ауысуды орындау алгоритмі келесі түрде болады:
- берілген BCD-санының үлкен санын AX-та 10 –ға көбейту (AH құрамын);
- AH + AL қосуын орындау, нәтижесін (екілік сан) AL регистріне орналастыру;
- AH регистрінің құрамын нөлдеу.
AAD ; бөлуден бұрын орындалатын қалыпқа келтіруDIV CAAD командасын 0...99 диапазонында берілген жинақталмаған BCD-санды екілік санға ауыстыру үшін қолдануға болады.
Жинақталған BCD-сандармен орындалатын арифметикалық операциялар
Жинақталған BCD-сандарды қосу
Жинақталмаған BCD-сандарды тек қосуға және азайтуға болады.
DAA (Decimal Adjust for Addition) — қосу нәтижесін ондық түрде беру үшін қалпына келтіру командасы. DAA командасы AL регистрінің құрамын екі жинақталған ондық сан түріне ауыстырады. Қосу нәтижесінде пайда болған бір санын (егер қосу нәтижесі 99 санынан көп болса) CF белгісінде сақтайды, соның арқасында үлкен разрядқа болған тасымал ескеріледі.
b db 17h ; жинақталған 17h саныc db 45h ; жинақталған 45 саны mov al, b add al, c daa jnc $+4 ; команда арқылы ауысу, егер нәтиже <= 99 үлкен болса mov sum+1,ah ; қосу кезіндегі тасымалды ескеру (нәтиже > 99) mov sum, al ; нәтиженің жинақталған кіші саныЖинақталған BCD-сандарды азайту
Қосуға ұқсас, микропроцессор жинақталған BCD-сандарды екілік сан ретінде қарайды, және сәйкесінше, BCD-сандарды азайтуды екілік сан түрінде жасайды.
Программалау кезінде жинақталмаған BCD- сандарды азайту кезінде санның таңбасын өзі қадағалау керек. Бұл CF белгісінің көмегімен орындалады, ол үлкен разрядтан келетін несиені қадағалайды. Ал BCD-сандарды азайтудың өзі кәдімгі SUB немесе SBB азайту командаларымен орындалады. DAS командасымен қалыпқа келтіру жүргізіледі:
DAS (Decimal Adjust for Substraction) — азайту нәтижесін ондық түрде беру үшін қалпына келтіру командасы. DAS командасы AL регистрінің құрамын екі жинақталған ондық сан түріне ауыстырады
Дата добавления: 2015-10-26; просмотров: 1282;