Сандардың түрлендіруі



1 Кіріспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
2 Сандардың түрлендіруі ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
2.1 Сандарды консольдан енгізу ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
2.1.1 0 . 99 диапазонындағы бүтін ондық сандарды енгізу ... ... ... ... ... ... ... ...
2.1.2 0 . 4 294 967 295 диапазонындағы бүтін ондық сандарды енгізу ... ... ... ..
2.1.3 0 . 999 999 999 999 999 999 диапазонындағы бүтін ондық сандарды енгізу ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .
2.1.4 0 . ∞ диапазонындағы бүтін ондық сандарды енгізу ... ... ... ... ... ... ... ... ...
2.2 Заттық сандарды енгізу ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .
2.3 Сандарды консольға шығару ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
2.3.1 Он алтылық сандарды шығару ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
2.3.2 0 . 99 диапазонындағы бүтін ондық сандарды шығару ... ... ... ... ... ... ... .. 2.3.3 0 . ∞ диапазонындағы бүтін ондық сандарды шығару ... ... ... ... ... ... ... .
2.3.4 0 . 999 999 999 999 999 999 диапазонындағы бүтін ондық сандарды шығару ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .
2.4 Заттық сандарды шығару ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
Қолданылған әдебиеттер тізімі ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
А Қосымшасы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...

Мазмұны:

1
Кіріспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
2 Сандардың
түрлендіруі ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... .
2.1 Сандарды консольдан
енгізу ... ... ... ... ... ... ... . ... .. ... ... ... ... ... ... ... ... ...
... ... ... ... .
2.1.1 0 – 99 диапазонындағы бүтін ондық сандарды
енгізу ... ... ... ... ... ... ... . ...
2.1.2 0 - 4 294 967 295 диапазонындағы бүтін ондық сандарды
енгізу ... ... ... ..
2.1.3 0 – 999 999 999 999 999 999 диапазонындағы бүтін ондық сандарды
енгізу ... ... ... ... ... ... ... . ... .. ... ... ... ... ... ... ... ... ...
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
2.1.4 0 - ∞ диапазонындағы бүтін ондық сандарды
енгізу ... ... ... ... ... ... ... . ... ..
2.2 Заттық сандарды
енгізу ... ... ... ... ... ... ... . ... .. ... ... ... ... ... ... ... ... ...
... ... ... ... ... ...
2.3 Сандарды консольға
шығару ... ... ... ... ... ... ... . ... .. ... ... ... ... ... ... ... ... ...
... ... ... .
2.3.1 Он алтылық сандарды
шығару ... ... ... ... ... ... ... . ... .. ... ... ... ... ... ... ... ... ...
.
2.3.2 0 – 99 диапазонындағы бүтін ондық сандарды
шығару ... ... ... ... ... ... ... . . 2.3.3 0 - ∞ диапазонындағы
бүтін ондық сандарды шығару ... ... ... ... ... ... ... .
2.3.4 0 – 999 999 999 999 999 999 диапазонындағы бүтін ондық сандарды
шығару
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .
... ... ... ... ... ... ... ... ... ... ... ... ... ..
2.4 Заттық сандарды
шығару ... ... ... ... ... ... ... . ... .. ... ... ... ... ... ... ... ... ...
... ... ... ... ...
Қорытынды ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
... ... ... ... ... ... ... ... ... ... ... ... ... ..
Қолданылған әдебиеттер
тізімі ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
... ... ... ...
А
Қосымшасы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
... ... ... ... ... ... ... ... ... ... ... ... ..

Кіріспе

Әрбір нақты есеп үшін компьютермен рұқсат етілген екі әртүрлі көрініс
арасындағы сандардың түрленуі бірнеше әдіспен орындалуы мүмкін. Сандық
ақпаратты өңдеудің есебін эффектті түрде шешу үшін программисттер осы
әдістердің барлығын біліп, нақты проблеманы шешу үшін қайсысы қолайлы
екендігін анықтап қолдануы тиіс. Ассемблерге арналған көптеген бастамалар
нақтылықтың осы немесе басқа дәрежесі бойынша сандардың түрлену проблемасын
қарастырады. Сондықтанда бұнда жаңа нәрсе ойлап енгізу қиын болғандықтан,
бұл тақырыптың ассемюлерде қолданбалы программалау сұрақтарына арналған
кітаптың бір бөлігін алуға құқығы бар. Жалпы жағдайда сандық ақпаратты
енгізу және шығару мәселелерін шешуге және компьютерде ішкі көрініс
бойынша оның түрленуіне жүйелі түрде қарау мүмкіншілігі жасалған.
Мысалға, Программалы – аппаратты архитектура МП ІА32 оқулығының
екінші бөлімінде Pentium ІІІ4 процессорымен рұқсат етілген келтірілген
мәліметтер типтерінің классификациясын есімізге түсірейік. Біздің
жазбамызға олардың тек екі үлкен топқа бөлінетіндігі маңызды – бүтін санды
және заттық типті мәліметтер. Соған сәйкес бүтін санды мәліметті екі
топтамаға бөлуге болады: екілік және екілік ондық (ВСД – сандары). Осыдан
практикада талап етілген сандық және символдық ақпаратты түрлендіру бағытын
қалыптастырамыз.
Консольмен айырбастау кезінде келесідей түрлендірулер рұқсат етіледі:
1) ондық бүтін сандар символдық түрде ↔ ішкі екілік көрініс;
2) он алтылық бүтін сандар символдық түрде ↔ ішкі екілік көрініс;
3) екілік бүтін сандар символдық түрде ↔ ішкі екілік көрініс;
4) ондық бөлшек символдық түрде ↔ заттық сандар түріндегі ішкі көрініс;
5) бөлшектік он алтылық сан символдық түрде ↔ заттық сандар түріндегі
ішкі көрініс;
6) бөлшектік екілік сан символдық түрде ↔ заттық сандар түріндегі ішкі
көрініс;
7) Ішкі көріністер арасындағы өзара түрлену:
8) екілік сан ↔ екілік ондық сан;
9) екілік ондық сан ↔ заттық сан;
10) екілік заттық сан ↔ заттық сан.
Осы түрленулердің кейбіреулерінің орындалуы әдістерін қарастырайық.
Біздің жазылуымызда сандардың барлығы оң болсын деп алайық.

2 Сандардың түрлендіруі

2.1 Сандарды консольдан енгізу
Бұл бөлімде сандарды консольдан символдық түрде енгізілген ішкі екілік
көрінісі бар ондық бүтін және заттық сандарды түрлендіру әдістерін
қарастырайық. Бүтін ондық сандардан бастайық. Өйткені практикада бұл
әдістің сұранысы үлкен. Ары қарай заттық сандарды түрлендіру мәселесі
қарастырылады.
Ішкі екілік көріністе символдық түрден ондық бүтін санға ауыстыру және
кері әсерін таңдау берілген мәндердің мүмкіндік диапазонына байланысты
анықталады. Екі әдісті талдайық.

2.1.1 0 – 99 диапазонындағы бүтін ондық сандарды енгізу.
0 – 99 диапазонындағы сандар үшін ондық символдық және екілік
формадағы арасындағы өзара түрлену екілік – ондықтарды (ВСД - сандары)
көбейту және бөлу командаларымен орындауға болады – ААМ және ААД.
Программа: prg 01_01. asm

1. 0 - 4 294 967 295 диапазонындағы бүтін ондық сандарды енгізу
Егер берілген мән 0 – 99 диапазонынан шығып тұрса, онда кейбір
жағдайдың туу мүмкіндігін ұмытпау қажет, онда ондық енгізілетін санның
мәні процессордың арифметикалық командаларымен ұсталынатын бүтін санды
мәліметтер типінің форматымен рұқсат етілген диапазоннан үлкен болуы
мүмкін. Pentium ІІІ4 үшін бұл 8, 16 және 32 бит.
Бұл форматтар үшін мәндер диапазоны (белгісі жоқ мәндер):
1) 8 бит өлшемді операнд үшін – 0 – 255;
2) 16 бит өлшемді операнд үшін – 0 – 65 535;
3) 32 бит өлшемді операнд үшін – 0 – 4 294 967 295;
Көріп отырғандай максималды сан өте үлкен де емес. Біріншіден, біз
жоғарыда көрсетілген диапазондағы мәндерді түрлендіру әдістерін
қарастырайық. Ол үшін консольдан енгізілетін символдық көріністі ондық
сандарды түрлендірудің екі әдісін ұсынуға болады: ондық полиномның көмегі
арқылы және мәліметтерді өңдейтін процессордың мүмкіндіктерін қолдану
арқылы.
Ондық полином әдісінің негізінде берілген санды осы сандардың
позицияларына сәйкес келетін ондық санның құраушылары 10 санының
дәрежесіне қарағанда ондық санның суммалық көрініс мүмкіндігі жатыр:

А10 ═ аn-1 * 10n-1 + аn-2 * 10n-2 ... + а1 * 101 + а0 * 100

Берілген полиномдық есептеуді Горнер сұлбас бойынша орындаған дұрыс:

А10 ═ (...( 0 + аn-1 )* 10 + аn-2 ) *10 +...+ а1 ) *10 + а0

Мысалы, 3405 саны осы теңдеу бойынша былай көрінеді:

3405 ═ 3 * 103 + 4 * 102 + 0 * 101 + 5 * 100 ═ (((0 + 3)* 10 + 4)* 10 +
0)* 10 + 5

Төменде 0 – 4 294 967 295 диапазонындағы символдық түрдегі бүтін ондық
санды эквивалентті екілік көрініске түрлендіру программасы келтірілген.
MS DOS – та санды перне тақтадан енгізу үшін 3fh функциясы қолданылады.
Ол AL регистрында нақты енгізілген символдырдың санын қайтарады.
Программа: prg 01_02. asm

2. 0 – 999 999 999 999 999 999 диапазонындағы бүтін ондық
сандарды енгізу
Ондық сандарды түрлендірудің екінші әдісі бірсыпыра экзотикалық болса
да, жұмысқа жарамды болып табылады. Берілген әдіс процессордың кейбір
командаларының ерекшеліктерін қолдануды болжайды.
Процессор ұстанатын мәліметтер форматын санайық:
1) үш форматтағы екілік бүтін сандар – 16, 32, және 64 бит;
2) буылған бүтін ондық (ВСД) сандар – максималды ұзындық – 18 буылған
ондық сан (9 байт);
3) үш форматтағы заттық сандар – қысқада (32 бит), ұзында (64 бит),
кеңейтілгенде (80 бит);
Біз үшін бүтін екілік және буылған ондық (ВСД) сандардың форматтары
қызығушылық тудырады, сол сияқты процессордың стегінің шыңы мен осы
мәндерді алмастыратын командалар. Перне тақтадан енгізілген бүтін ондық
санды түрлендіру процесі төмендегі программада көрсетілген. Айта
кететініміз, түрлендірудің бұл әдісі мәндер диапазонын 0 –
999 999 999 999 999 999 диапазонға дейін кеңейтуді рұқсат етеді. Мұнда А
қосымшада кө
Программа: prg 01_03. asm
Келтірілген программа 0 – 1018 – 1 диапазонындағы кез келген мәнді
түрлендіре алады. Диапазонның жоғарғы шегіне сәйкес келетін максималды
екілік өлшемнің сандық мәнін белгілеу қызықты, бұл -
+0de0b6b3а763ffff16. Ол бізге консольға шығару үшін кері түрлендіруді –
екіліктен ондық көрініске, қарастырғанда қажет болады. Керекті разрядтағы
мәнді шығарып алуға болады, егер label директивасымен бірге берілген
программаның мәтініне сәйкес идентификаторлар енгізілсе (біздің кодтау
сегментінде орындалған):
string bin byte label byte
string bin word label word
string bin dword label dword
string bin dq 0 ;нәтиже үшін алаңэквивалентті екілік
көрініс
3. 0 - ∞ диапазонындағы бүтін ондық сандарды енгізу
Ерікті разрядтағы ондық санды символдық көріністен екілікке
түрлендіру үшін көп еңбектену керек. Осы жұмыстың негізі ерікті разрядтағы
сандар үшін арифметикалық операцияларға арналған материалдарда болуы керек.
Сондықтан біздің іс - әрекетіміз түрлендіру программасын құру кезінде
конструкторлы ойынды еске салады, бұнда дайын компоненттерден жаңа өнім
дайындалады.
Ерікті разрядтағы ондық санды символдық көріністен екілікке
түрлендіру программасының берілген компоненттері N – байтты санды өлшемі М
– байтты санға көбейту макрокомандасы және белгісі жоқ N – байтты санды
қосу программасы болып табылады. Екілік эквивалентті есептеу алгоритмі
жоғарыда көрсетілгендей болады – полиномды Горнер сұлбас бойынша есептеу.
Төменде оның программаларын іске асыратын варианттар келтірілген.
Байттардың орналасу нәтижесі – сұлба бойынша, Intel процессоры бойынша
нақты, яғни кіші байт кіші адрес бойынша орналасады.
Программа: prg 01_04. asm
Бұл программаның шарықтау бағыттарының бірі – белгісіз ұзындықты
барлық сандар үшін жадыны динамикалық бөлу болып табылады. Міндетті түрде
назар аударатынымыз, ұзын сандарды түрлендіру әдісі универсалды – оны
процессордың көрсетілген мәліметтер типінің диапазонында жататын мәндері
үшін де қолданылуға болады.

1. Заттық сандарды енгізу
Енді бізге перне тақтадан символдық көріністегі заттық санды енгізу
үшін және оны сәйкестендірумен екілік эквивалентке түрлендіру үшін бәрі
дайын. Жалпы заттық санның жазылуының екі түрі бар – қалқымалы нүктесімен
(34.89) және ғылыми түрде (3.45е – 3 = 3.45*10-3). Заттық санды символдық
көріністен эквивалентті екілікке түрлендіру үшін бірнеше әдісті қарастыруға
болады. Ең қарапайымы – ВСД – санның қапталған процессорында жүктеудің
мүмкіндіктерін қолданылу. Осы жағдайда түрлендіру алгоритмі келесіден
тұрады. Заттық сандары бар символдық жол жадыға енгізіледі, онда ол ВСД –
қапталған санға түрленеді. Көрсетілген символдық жолды енгізген кезде
қалқымалы нүктенің орны есте сақталады. Алынған ВСД – қапталған сан
процессорға жүктеледі, одан кейін ол берілген мәннің қалқымалы нүктесіне
сәйкес дәрежелі 10 – ға бөлінеді. Кіші сандар үшін (1018- 1 дейінгі
диапазонда) бұл әдіс жеткілікті жақсы. Оны кеңейтуге болады, егер санды
ғылыми форматта енгізсе, осыған сәйкес мантиссаны көшіру процесі жоғарыда
келтірілгенмен аналогты, бірақ 10 дәрежесіне бөлуге дайындау кезінде
міндетті түрде Е символынан кейін көрсетілген дәреженің мәнін ескеру
қажет. Бірақ, бәрі бір де диапазонды кеңейткенге қарамастан мантиссаны
разряды 18 санмен шектелген. Бұл кемшілікті жою үшін ерікті разрядты
сандармен операциялар қолданылады. Бұл әдіс өзінің универсалдығымен
қызықты, сондықтан оған негізгі назарымызды аударайық.
Сонымен, мүмкін болатын екі форматтыңі бірінде – қалқымалы нүктесі
бар қарапайым әдісте перне тақтадан заттық санды енгізу программасын
жазайық. Ғылыми форматты қолдану үшін программаны аяқтау қиын емес.
Мантиссаны бүтін және бөлшек бөліктерге бөлетін белгі ретінде үтір
сияқты нүктені де қолданылуға болады. Түрлендіру алгоритмінің мәні
келесіден тұрады. Заттық сандардың символдарының перне тақтадан енгізілуі
орындалады. Енгізгеннен кейін қалқымалы нүктенің орнын білу үшін енгізілген
санның символдары орналасқан буфердің символдары анализденеді. Анықталған
позиция есте сақталады. Соған қатысты енгізілген символдар бүтін және
бөлшек сандар символына бөлінеді. Ондық санның символдық көріністен екілік
эквивалентке түрлену алгоритмін қолданылып, заттық санның бүтін бөлігін
тудырамыз. Заттық санның бөлшек бөлігі сол сияқты екілік эквивалентіне
ауысады. Бұл түрлендіру процессорды келесі теңдеу бойынша қолданумен
орындалады:

((...(u-m b + u1-m) b +...+ u-2) b + u-1) b

мұндағы un – u-m, u1-m ... u-2, u-1,b = 10 заттық санының бөлшек бөлігінің
ондық сандар символдары. Берілген теңдеу анықталғаннан кейін заттық санның
бүтін бөлігінің түрленуімен күрделі қосулар орындалады. Болды, енді
процессордың стегінің шыңында заттық сан болады - өзінің берілген символдық
көріністің эквиваленті. Символдық көріністен заттық санды түрлендіру
мәтінге жеткілікті үлкен және жеке келтіріледі. (Программа: prg 01_05.
asm). Көруімізше, орынды үнемдеу мақсатында программада енгізілетін заттық
санның форматының дұрыстығы тексерілмейді.
Соңғы ескерту – берілген санның өлшемі бойынша шектеулер. Мұнда бүтін
және бөлшек бөлімдерінің өлшемділігін айыру керек. Бөлшек бөліміне қатысты
бұнда ешқандай шектеу жоқ. Бүтін бөлік үшін тар орын – 32 битті құрайтын
FIADD бүтін сандар қосылысы командасындағы операнд өлшемінің
максималдылығы.
Он алтылық және екілік сандарды енгізу және олардың жалпы принциптары
ондық сандар үшін принциптерге аналогты болып табылады. Перне тақтадан он
алтылық және екілік сандарды енгізу кезінде ондық санға қарағанда сұраныс
жиі болады.

2. Сандарды консольға шығару
Бұл бөлімде біз сандарды кері түрлендіруді қарастырамыз, яғни ішкі
екілік көріністен символдық түрдегі санға, оның жазылу форматы сандық жүйе
талаптарының ережелеріне сәйкес келеді. Айта кететініміз кері түрлендіруді
қарастыру тура түрлендіруге симметриялы емес. Осыны дәлелдеудің негізінде
символдық көріністегі он алтылық санды түрлендіру алгоритмінен сандарды
консольға шығарудан бастайық.

2.3.1 Он алтылық сандарды шығару
Он алтылық сандармен жұмыс істей алу – төменгі деңгейде
программалаудың қажетті шарты болып табылады. Он алтылық сандар екілік
сандармен салыстырғанда компьютердегі ақпараттың ішкі көрінісін анализдеу
үшін шынайы болып келеді. Еске алсақ, әрбір байт – екі тетраданың жиынтығы,
ал берілген бір тетраданың мәндер диапазоны бір мәнді он алтылық санның
қабылдай алатын мәндер диапазонына сәйкес келеді. Сондықтан, он алтылық
санды символдық көрініске түрлендіру процесінің өзі қиындықты тудырмайды.
Мысалы, бір байттың құрамын консольға шығару алгоритмі оның кіші және үлкен
тетрадаларының мәнін кейбір әдіспен белгілеуден және олардың әрі қарай
символдық түрге түрленуінен тұрады. Егер консольға бір емес бірнеше байттың
символдық көрінісін шығару керек болса, онда тетрадаларды белгілеу және
олардың түрленуі керекті рет тізбектеліп орындалады.
Символдық көріністегі он алтылық ақпаратты түрлендіру алгоритмінің
пайдалы иллюстрациясы ретінде SHOW макрокомандасын қарастырайық, ол AL, AH,
AX, EAX төрт регистрдің бірінң құрамын символдық он алтылық көрініске
ауыстырады. Бұл макрос универсалды құрал болып табылады, ол программаны
орындау уақытында регистрдің құрамын немесе жады облысында динамикалық
түрде сығалауды рұқсат етеді. Оның көмегімен кез келген регистрдың немесе
жадының облысын, ұзындығы 32 ... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
Түйіндес түрлендірулер
Фурьенің тез түрлендіруі туралы түсінік
Операциялық есептеуді дифференциалдық теңдеулерді шешуге қолдану
Дискреттік сигналдарды Фурье түрлендіру
Фурье интегралдық түрлендірулері
ФУНКЦИОНАЛДЫ ТАЛДАУДАҒЫ СЫЗЫҚТЫ ОПЕРАТОРЛАР ТЕОРИЯСЫ
Криптология ғылымының қалыптасуы
Автоматтар теориясы
Радикал арқылы шешілетін теңдеулер
Шектелген облыста берілген толқындық оператордың шешімі туралы
Пәндер