Сандарды құру және көрсету формасы
КІРІСПЕ
І САНДАРДЫ ТҮРЛЕНДІРУ
1.1 Сандарды құру және консолға енгізу
1.2 Сандарды көрсету формасы
1.3 Сандарды консольға шығару
1.4 Заттық сандарды шығару
ІІ САНАУ ЖҮЙЕЛЕРІ
ҚОРЫТЫНДЫ
Қолданылған әдебиеттер
Қосымшасы
І САНДАРДЫ ТҮРЛЕНДІРУ
1.1 Сандарды құру және консолға енгізу
1.2 Сандарды көрсету формасы
1.3 Сандарды консольға шығару
1.4 Заттық сандарды шығару
ІІ САНАУ ЖҮЙЕЛЕРІ
ҚОРЫТЫНДЫ
Қолданылған әдебиеттер
Қосымшасы
Әрбір нақты есеп үшін компьютермен рұқсат етілген екі әртүрлі көрініс арасындағы сандардың түрленуі бірнеше әдіспен орындалуы мүмкін. Сандық ақпаратты өңдеудің есебін эффектті түрде шешу үшін программисттер осы әдістердің барлығын біліп, нақты проблеманы шешу үшін қайсысы қолайлы екендігін анықтап қолдануы тиіс. Ассемблерге арналған көптеген бастамалар нақтылықтың осы немесе басқа дәрежесі бойынша сандардың түрлену проблемасын қарастырады. Сондықтанда бұнда жаңа нәрсе ойлап енгізу қиын болғандықтан, бұл тақырыптың ассемюлерде қолданбалы программалау сұрақтарына арналған кітаптың бір бөлігін алуға құқығы бар. Жалпы жағдайда сандық ақпаратты енгізу және шығару мәселелерін шешуге және компьютерде ішкі көрініс бойынша оның түрленуіне жүйелі түрде қарау мүмкіншілігі жасалған.
Мысалға, «Программалы – аппаратты архитектура МП ІА32» оқулығының екінші бөлімінде Pentium ІІІ/4 процессорымен рұқсат етілген келтірілген мәліметтер типтерінің классификациясын есімізге түсірейік. Біздің жазбамызға олардың тек екі үлкен топқа бөлінетіндігі маңызды – бүтін санды және заттық типті мәліметтер. Соған сәйкес бүтін санды мәліметті екі топтамаға бөлуге болады: екілік және екілік ондық (ВСД – сандары). Осыдан практикада талап етілген сандық және символдық ақпаратты түрлендіру бағытын қалыптастырамыз.
Консольмен айырбастау кезінде келесідей түрлендірулер рұқсат етіледі:
а) ондық бүтін сандар символдық түрде ↔ ішкі екілік көрініс;
б) он алтылық бүтін сандар символдық түрде ↔ ішкі екілік көрініс;
в) екілік бүтін сандар символдық түрде ↔ ішкі екілік көрініс;
г) ондық бөлшек символдық түрде ↔ заттық сандар түріндегі ішкі көрініс;
д) бөлшектік он алтылық сан символдық түрде ↔ заттық сандар түріндегі ішкі көрініс;
е) бөлшектік екілік сан символдық түрде ↔ заттық сандар түріндегі ішкі көрініс;
ж) Ішкі көріністер арасындағы өзара түрлену:
з) екілік сан ↔ екілік ондық сан;
и) екілік ондық сан ↔ заттық сан;
к) екілік заттық сан ↔ заттық сан.
Осы түрленулердің кейбіреулерінің орындалуы әдістерін қарастырайық. Біздің жазылуымызда сандардың барлығы оң болсын деп алайық
Мысалға, «Программалы – аппаратты архитектура МП ІА32» оқулығының екінші бөлімінде Pentium ІІІ/4 процессорымен рұқсат етілген келтірілген мәліметтер типтерінің классификациясын есімізге түсірейік. Біздің жазбамызға олардың тек екі үлкен топқа бөлінетіндігі маңызды – бүтін санды және заттық типті мәліметтер. Соған сәйкес бүтін санды мәліметті екі топтамаға бөлуге болады: екілік және екілік ондық (ВСД – сандары). Осыдан практикада талап етілген сандық және символдық ақпаратты түрлендіру бағытын қалыптастырамыз.
Консольмен айырбастау кезінде келесідей түрлендірулер рұқсат етіледі:
а) ондық бүтін сандар символдық түрде ↔ ішкі екілік көрініс;
б) он алтылық бүтін сандар символдық түрде ↔ ішкі екілік көрініс;
в) екілік бүтін сандар символдық түрде ↔ ішкі екілік көрініс;
г) ондық бөлшек символдық түрде ↔ заттық сандар түріндегі ішкі көрініс;
д) бөлшектік он алтылық сан символдық түрде ↔ заттық сандар түріндегі ішкі көрініс;
е) бөлшектік екілік сан символдық түрде ↔ заттық сандар түріндегі ішкі көрініс;
ж) Ішкі көріністер арасындағы өзара түрлену:
з) екілік сан ↔ екілік ондық сан;
и) екілік ондық сан ↔ заттық сан;
к) екілік заттық сан ↔ заттық сан.
Осы түрленулердің кейбіреулерінің орындалуы әдістерін қарастырайық. Біздің жазылуымызда сандардың барлығы оң болсын деп алайық
1. Автоматизированные информационные технологии в экономике./Под ред. проф.Г.А.Титоренко – М.: «Компьютер, ЮНИТИ» , 1998. – 400 с.
2. Козырев А .А .Информационные технологии в эеономике и управлении./учебник. – С. – Пб.: « Издательство Михайлова В.А.», 2000. – 360 с.
3. Информационные системы и технологии в экономике и управлении. / Учебник./Под ред. Трофимова В.В. – М.: «Высшее образование», 2007. – 480 с.
4. Қазақ тілі терминдерінің салалық ғылыми түсіндірме сөздігі: Информатика және компьютерлік техника. – Алматы, «Мектеп» , 2002. – 456 с.
5. Қазақша – орысша ,орысша – қазақша терминологиялық сөздік: Информатика және есептеуіш техника/Жалпы редакциясын басқарған А.Құсайынов. – Алматы: «Рауан» , 1999. – 304 с.
6. Компьютерные технологии обработки информации./Под ред. Назарова С.В. – М.: «Финансы и статистика», 2004 – 250 с.
7. Тулегенов Э.Т. , Бралиева Н.Б. ,Стороженко Л.А., Матвеева И.А. Бухгалтернские информационные системы./Учеб. Пособ. – Алматы: «Экономика» , 1999. 120 с.
8. Опадчий Ю.Ф. Аналоговая и цифровая электроника (полный курс): учебник для вузов/№под ред. О.П.Глудкина.-М.: Горячая Линия – Телеком, 2002.-768 б.
9. Хорвиц П., Хилл У. Искусство схемотехники. –М.: Мир, 1998.-702 б.
10. Угрюмов Е.П. Цифровая схемотехника – СПб..: БХВ-Петербург , 2002 -512б.
11. Пухальский Г.И., Новосельцева Т.Я. Цифровые устройства: Учеб. пособие для ВТУЗов. СПб.: Политехника, 2006. - 855б.
12. Ратхор Т.С. Цифровые измерения. Методы и схемотехника.- М.: Техносфера, 2004.-376 б.
2. Козырев А .А .Информационные технологии в эеономике и управлении./учебник. – С. – Пб.: « Издательство Михайлова В.А.», 2000. – 360 с.
3. Информационные системы и технологии в экономике и управлении. / Учебник./Под ред. Трофимова В.В. – М.: «Высшее образование», 2007. – 480 с.
4. Қазақ тілі терминдерінің салалық ғылыми түсіндірме сөздігі: Информатика және компьютерлік техника. – Алматы, «Мектеп» , 2002. – 456 с.
5. Қазақша – орысша ,орысша – қазақша терминологиялық сөздік: Информатика және есептеуіш техника/Жалпы редакциясын басқарған А.Құсайынов. – Алматы: «Рауан» , 1999. – 304 с.
6. Компьютерные технологии обработки информации./Под ред. Назарова С.В. – М.: «Финансы и статистика», 2004 – 250 с.
7. Тулегенов Э.Т. , Бралиева Н.Б. ,Стороженко Л.А., Матвеева И.А. Бухгалтернские информационные системы./Учеб. Пособ. – Алматы: «Экономика» , 1999. 120 с.
8. Опадчий Ю.Ф. Аналоговая и цифровая электроника (полный курс): учебник для вузов/№под ред. О.П.Глудкина.-М.: Горячая Линия – Телеком, 2002.-768 б.
9. Хорвиц П., Хилл У. Искусство схемотехники. –М.: Мир, 1998.-702 б.
10. Угрюмов Е.П. Цифровая схемотехника – СПб..: БХВ-Петербург , 2002 -512б.
11. Пухальский Г.И., Новосельцева Т.Я. Цифровые устройства: Учеб. пособие для ВТУЗов. СПб.: Политехника, 2006. - 855б.
12. Ратхор Т.С. Цифровые измерения. Методы и схемотехника.- М.: Техносфера, 2004.-376 б.
Пән: Информатика, Программалау, Мәліметтер қоры
Жұмыс түрі: Курстық жұмыс
Тегін: Антиплагиат
Көлемі: 18 бет
Таңдаулыға:
Жұмыс түрі: Курстық жұмыс
Тегін: Антиплагиат
Көлемі: 18 бет
Таңдаулыға:
Кіріспе
Әрбір нақты есеп үшін компьютермен рұқсат етілген екі әртүрлі көрініс
арасындағы сандардың түрленуі бірнеше әдіспен орындалуы мүмкін. Сандық
ақпаратты өңдеудің есебін эффектті түрде шешу үшін программисттер осы
әдістердің барлығын біліп, нақты проблеманы шешу үшін қайсысы қолайлы
екендігін анықтап қолдануы тиіс. Ассемблерге арналған көптеген бастамалар
нақтылықтың осы немесе басқа дәрежесі бойынша сандардың түрлену проблемасын
қарастырады. Сондықтанда бұнда жаңа нәрсе ойлап енгізу қиын болғандықтан,
бұл тақырыптың ассемюлерде қолданбалы программалау сұрақтарына арналған
кітаптың бір бөлігін алуға құқығы бар. Жалпы жағдайда сандық ақпаратты
енгізу және шығару мәселелерін шешуге және компьютерде ішкі көрініс
бойынша оның түрленуіне жүйелі түрде қарау мүмкіншілігі жасалған.
Мысалға, Программалы – аппаратты архитектура МП ІА32 оқулығының
екінші бөлімінде Pentium ІІІ4 процессорымен рұқсат етілген келтірілген
мәліметтер типтерінің классификациясын есімізге түсірейік. Біздің
жазбамызға олардың тек екі үлкен топқа бөлінетіндігі маңызды – бүтін санды
және заттық типті мәліметтер. Соған сәйкес бүтін санды мәліметті екі
топтамаға бөлуге болады: екілік және екілік ондық (ВСД – сандары). Осыдан
практикада талап етілген сандық және символдық ақпаратты түрлендіру бағытын
қалыптастырамыз.
Консольмен айырбастау кезінде келесідей түрлендірулер рұқсат етіледі:
1) ондық бүтін сандар символдық түрде ↔ ішкі екілік көрініс;
2) он алтылық бүтін сандар символдық түрде ↔ ішкі екілік көрініс;
3) екілік бүтін сандар символдық түрде ↔ ішкі екілік көрініс;
4) ондық бөлшек символдық түрде ↔ заттық сандар түріндегі ішкі көрініс;
5) бөлшектік он алтылық сан символдық түрде ↔ заттық сандар түріндегі
ішкі көрініс;
6) бөлшектік екілік сан символдық түрде ↔ заттық сандар түріндегі ішкі
көрініс;
7) Ішкі көріністер арасындағы өзара түрлену:
8) екілік сан ↔ екілік ондық сан;
9) екілік ондық сан ↔ заттық сан;
10) екілік заттық сан ↔ заттық сан.
Осы түрленулердің кейбіреулерінің орындалуы әдістерін қарастырайық.
Біздің жазылуымызда сандардың барлығы оң болсын деп алайық
І САНДАРДЫ ТҮРЛЕНДІРУ
Сан түсiнiгi – математикалық сияқты ақпараттануда да басты негiз. Егер
математикада сандрды өңдеу әдiстерiне көп көңiл бөлiнетiн болса, онда
ақпараттану үшiн сандарды ұсынуды пайдаланады. Себебi, тек солар ғана
жадтың қажеттi қорын, жылдамдықты есептеуде жiберетiн қатенi анықтайды.
Санау жүйесi деп белгiлi бiр мөлшердегi таңбалардың көмегiмен сандарды
өрнектеу мен жазудың жиынтығы.
Санау жүйесi екi топқа бөлiнедi: позициялық және позициялық емес.
Позициялық емес санау жүйесiнде әрбiр цифрдық мәнi оның алатын орнына
байланысты емес. Мұндай санау жүйесiнiң мысалы ретiнде римдiк жүйенi алуға
болады. Осы жүйеде жазылған ХХХ санында Х цифры кез келген позицияда 10-ды
бiлдiредi. Позициялық емес санау жүйесiнде арифметикалық әрекеттердi
орындау қиын болғандықтан, позициялық санау жүйесi қолданылады.
Позициялық санау жүйесiнде цифрдық мәнi оның орнына байланысты болды.
Позициялық мән санау жүйесiнiң негiзiнде дәрежесi арқылы анықталады.
Позициялық санау жүйесiнiң негiзi деп қолданылатын цифрлар санын айтады.
Санау жүйесi төртке бөлiнедi:
1. ондық санау жүйесi;
2. екiлiк санау жүйесi;
3. сегiздiк санау жүйесi;
4. оналтылық санау жүйесi.
Ондық санау жүйесi Ондық санау жүйесiнегi сандарды өрнектеу үшiн 0-9
дейiнгi араб цифрлары қолданылады:0,1,2,3,4,5,6,7,8,9.
Мыс: 234=200+30+4 2 жүздiктер разрядынан, 3 ондықтар разрядынан, 4-
бiрлiктер разрядынан тұрады. Ондық жүйе позициялық болып табылады, өйткенi
ондық санды жазуда цифрдың мәнi оның позициясына немесе санда орналасқан
орнына байланысты. Санның цифрына бөлiнетiн позицияны разряд деп атайды.
Егер 234 санын қосынды түрiнде былай жазамыз: 2*102+3*101+4*100 Бұл
жазбадағы 10-саны санау жүйесiн негiздеушi. Санның әрбiр цифры үшiн 10
негiздеушi цифрлың орнына байланысты дәрежеленедi және осы цифрға
көбейтiледi.
Бiрлiктер үшiн – 0; ондықтар үшiн – 1, жүздiктер үшiн – 2-ге тең негiздеушi
дәреже және т.с.с Егер сан ондық бөлшек болса, ол терiс дәрежеде жазылады.
Мыс: 38,956=3*101+8*100+9*10-1+5*10-2+6* 10-3
Компьютерде ондық емес екiлiк санау жүйесi, яғни екi негiздеушiсi бар
санау жүйесi қолданылады.
1.1 Сандарды консольдан енгізу
Бұл бөлімде сандарды консольдан символдық түрде енгізілген ішкі екілік
көрінісі бар ондық бүтін және заттық сандарды түрлендіру әдістерін
қарастырайық. Бүтін ондық сандардан бастайық. Өйткені практикада бұл
әдістің сұранысы үлкен. Ары қарай заттық сандарды түрлендіру мәселесі
қарастырылады.
Ішкі екілік көріністе символдық түрден ондық бүтін санға ауыстыру
және кері әсерін таңдау берілген мәндердің мүмкіндік диапазонына байланысты
анықталады. Екі әдісті талдайық.
0 – 99 диапазонындағы бүтін ондық сандарды енгізу.
0 – 99 диапазонындағы сандар үшін ондық символдық және екілік формадағы
арасындағы өзара түрлену екілік – ондықтарды (ВСД - сандары) көбейту және
бөлу командаларымен орындауға болады – ААМ және ААД.
Программа: prg 01_01. asm
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
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 ;нәтиже үшін алаңэквивалентті
екілік көрініс
0 - ∞ диапазонындағы бүтін ондық сандарды енгізу
Ерікті разрядтағы ондық санды символдық көріністен екілікке
түрлендіру үшін көп еңбектену керек. Осы жұмыстың негізі ерікті разрядтағы
сандар үшін арифметикалық операцияларға арналған материалдарда болуы керек.
Сондықтан біздің іс - әрекетіміз түрлендіру программасын құру кезінде
конструкторлы ойынды еске салады, бұнда дайын компоненттерден жаңа өнім
дайындалады.
Ерікті разрядтағы ондық санды символдық көріністен екілікке
түрлендіру программасының берілген компоненттері N – байтты санды өлшемі М
– байтты санға көбейту макрокомандасы және белгісі жоқ N – байтты санды
қосу программасы болып табылады. Екілік эквивалентті есептеу алгоритмі
жоғарыда көрсетілгендей болады – полиномды Горнер сұлбас бойынша есептеу.
Төменде оның программаларын іске асыратын варианттар келтірілген.
Байттардың орналасу нәтижесі – сұлба бойынша, Intel процессоры бойынша
нақты, яғни кіші байт кіші адрес бойынша орналасады.
Бұл программаның шарықтау бағыттарының бірі – белгісіз ұзындықты
барлық сандар үшін жадыны динамикалық бөлу болып табылады. Міндетті түрде
назар аударатынымыз, ұзын сандарды түрлендіру әдісі универсалды – оны
процессордың көрсетілген мәліметтер типінің диапазонында жататын мәндері
үшін де қолданылуға болады.
1.2. Заттық сандарды енгізу
Енді бізге перне тақтадан символдық көріністегі заттық санды енгізу
үшін және оны сәйкестендірумен екілік эквивалентке түрлендіру үшін бәрі
дайын. Жалпы заттық санның жазылуының екі түрі бар – қалқымалы нүктесімен
(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 бүтін сандар қосылысы командасындағы операнд өлшемінің
максималдылығы.
Он алтылық және екілік сандарды енгізу және олардың жалпы принциптары
ондық сандар үшін принциптерге аналогты болып табылады. Перне тақтадан он
алтылық және екілік сандарды енгізу кезінде ондық санға қарағанда сұраныс
жиі болады.
3. Сандарды консольға шығару
Бұл бөлімде біз сандарды кері түрлендіруді қарастырамыз, яғни ішкі
екілік көріністен символдық түрдегі санға, оның жазылу форматы сандық жүйе
талаптарының ережелеріне сәйкес келеді. Айта кететініміз кері түрлендіруді
қарастыру тура түрлендіруге симметриялы емес. Осыны дәлелдеудің негізінде
символдық көріністегі он алтылық санды түрлендіру алгоритмінен сандарды
консольға шығарудан бастайық.
Он алтылық сандарды шығару
Он алтылық сандармен жұмыс істей алу – төменгі деңгейде программалаудың
қажетті шарты болып табылады. Он алтылық сандар екілік сандармен
салыстырғанда компьютердегі ақпараттың ішкі көрінісін анализдеу үшін шынайы
болып келеді. Еске алсақ, әрбір байт – екі тетраданың жиынтығы, ал берілген
бір тетраданың мәндер диапазоны бір мәнді он алтылық санның қабылдай алатын
мәндер диапазонына сәйкес келеді. Сондықтан, он алтылық санды символдық
көрініске түрлендіру процесінің өзі қиындықты тудырмайды. Мысалы, бір
байттың құрамын консольға шығару алгоритмі оның кіші және үлкен
тетрадаларының мәнін кейбір әдіспен белгілеуден және олардың әрі қарай
символдық түрге түрленуінен тұрады. Егер консольға бір емес бірнеше байттың
символдық көрінісін шығару керек болса, онда тетрадаларды белгілеу және
олардың түрленуі керекті рет тізбектеліп орындалады.
Символдық көріністегі он алтылық ақпаратты түрлендіру алгоритмінің
пайдалы иллюстрациясы ретінде SHOW макрокомандасын қарастырайық, ол AL, AH,
AX, EAX төрт регистрдің бірінң құрамын символдық он алтылық көрініске
ауыстырады. Бұл макрос универсалды құрал болып табылады, ол программаны
орындау уақытында регистрдің құрамын немесе жады облысында динамикалық
түрде сығалауды рұқсат етеді. Оның көмегімен кез келген регистрдың немесе
жадының облысын, ұзындығы 32 бит объектінің құрамын оның өлшемі есебімен
AL, AH, AX, EAX регистрларының біріне жіберу жеткілікті. Бұл регистрлардың
біреуінің аты, содан соң SHOW макрокомандасының фактілік аргументі ретінде
көрсетіледі. Бұл макроанықтауыштың екінші аргументі – экрандағы позиция.
Анықталған мәнді бере отырып SHOW макрокомандасы қалай жұмыс істегенін
талқылай аламыз. Берілген макростың тағы бір ерекшелігі адресацияны рұқсат
ету есебімен нақты режимде жұмыс істей алатындай қорғану режимінде жұмыс
істей алады. Берілген макроанықтауыштың жұмысын келесі программаның
көмегімен тексеруге болады.
0 – 99 диапазонындағы бүтін ондық сандарды шығару
Жоғарыда айтылғандай, 0 – 99 диапазонындағы мәндер үшін символдық
ондық және екілік формалар арасындағы өзара түрлену екілік - ондық (ВСД -
сандар) көбейту және бөлу командаларымен орындалады – ААМ және ААД.
Программа: prg 01_07. asm
Консольға үлкен екілік мәндерді шығару мақсатында түрлендіру үшін екі
әдісті қолдануға болады: 10 модулі бойынша бөлу жолымен (мәндер диапазоны
шектелмеген) және процессордың көмегімен (0...1018 - 1).
0 - ∞ диапазонындағы бүтін ондық сандарды шығару
0 - ∞ диапазонынан екілік мәндерді шығару алгоритмінің негізінде
ондық көріністегі (...U2 U1 U0) сандар кішісінен бастап берілген екілік
санды u тізбекті түрде 10 – ға бөлумен алынатындығы жатыр: UO = u mod 10;
U1 = [u10] mod 10; U2 = [[u10]10] mod 10 т. с. с., қайта бөлу кезінде
бөлінетін сан нолге теңеспегенше дейін: [...[[u10]10]...] = 0. Мұндағы,
[u] символы төменгі жаққа нолденген бүтін бөлікті білдіреді.
Неге консольдан енгізу алгоритміне қарағанда кері түрленуі үшін
әдістердің түрлілігі жоқ? Бұл DIV процессорының команда ерекшелігімен
түсіндіріледі, ол жоғарыда айтылған бүтін және қалдық алу алгоритмдеріне
қолданылады. Оның талаптары бөлінуші және бөлуші мәндерге қатысты –
бүтіннің өлшемі бөлінушіден екі есе кіші болу керек. Қарсы жағдайда #ДЕ
ескертуі туындайды (бөлу қателігі) және программа авариялық түрде
аяқталады.
Осы шарттардан шыға бізге N – байтты өлшемді мәнді белгісі жоқ1
байтты өлшемді мәнге бөлу программасын қолданудан басқа еш нәрсе жоқ.
Қолайлы болу үшін бұл программаны біз макрокомандалар түрінде жазамыз.
Программа: prg 01_08. asm
Берілген программада жадыдағы мәндер түрленеді. Оған қоса біз
берілген екілік мәннің орнына екі сөз өлшемді максималды үлкен болатын
белгісі жоқ санды береміз. Түрленудің нәтижесі – 4 294 967 295, ол талап
етілген ондық мәнмен толық сәйкестікке келеді. Бірақ берілген мәндерді
жадыда беру қолайсыз, процессордың регистрынан түрлену үшін мәнді
процессорды қолдану әдісі жақсы келеді.
0 – 999 999 999 999 999 999 диапазонындағы бүтін ондық сандарды шығару
Шығарудың бұл әдісі процессордың қапталған ондық сандармен жұмыс істей
алу мүмкіншілігіне негізделген. Процессордың командалық жүйесінде FBSTP
командасы бар, ол санды ... жалғасы
Әрбір нақты есеп үшін компьютермен рұқсат етілген екі әртүрлі көрініс
арасындағы сандардың түрленуі бірнеше әдіспен орындалуы мүмкін. Сандық
ақпаратты өңдеудің есебін эффектті түрде шешу үшін программисттер осы
әдістердің барлығын біліп, нақты проблеманы шешу үшін қайсысы қолайлы
екендігін анықтап қолдануы тиіс. Ассемблерге арналған көптеген бастамалар
нақтылықтың осы немесе басқа дәрежесі бойынша сандардың түрлену проблемасын
қарастырады. Сондықтанда бұнда жаңа нәрсе ойлап енгізу қиын болғандықтан,
бұл тақырыптың ассемюлерде қолданбалы программалау сұрақтарына арналған
кітаптың бір бөлігін алуға құқығы бар. Жалпы жағдайда сандық ақпаратты
енгізу және шығару мәселелерін шешуге және компьютерде ішкі көрініс
бойынша оның түрленуіне жүйелі түрде қарау мүмкіншілігі жасалған.
Мысалға, Программалы – аппаратты архитектура МП ІА32 оқулығының
екінші бөлімінде Pentium ІІІ4 процессорымен рұқсат етілген келтірілген
мәліметтер типтерінің классификациясын есімізге түсірейік. Біздің
жазбамызға олардың тек екі үлкен топқа бөлінетіндігі маңызды – бүтін санды
және заттық типті мәліметтер. Соған сәйкес бүтін санды мәліметті екі
топтамаға бөлуге болады: екілік және екілік ондық (ВСД – сандары). Осыдан
практикада талап етілген сандық және символдық ақпаратты түрлендіру бағытын
қалыптастырамыз.
Консольмен айырбастау кезінде келесідей түрлендірулер рұқсат етіледі:
1) ондық бүтін сандар символдық түрде ↔ ішкі екілік көрініс;
2) он алтылық бүтін сандар символдық түрде ↔ ішкі екілік көрініс;
3) екілік бүтін сандар символдық түрде ↔ ішкі екілік көрініс;
4) ондық бөлшек символдық түрде ↔ заттық сандар түріндегі ішкі көрініс;
5) бөлшектік он алтылық сан символдық түрде ↔ заттық сандар түріндегі
ішкі көрініс;
6) бөлшектік екілік сан символдық түрде ↔ заттық сандар түріндегі ішкі
көрініс;
7) Ішкі көріністер арасындағы өзара түрлену:
8) екілік сан ↔ екілік ондық сан;
9) екілік ондық сан ↔ заттық сан;
10) екілік заттық сан ↔ заттық сан.
Осы түрленулердің кейбіреулерінің орындалуы әдістерін қарастырайық.
Біздің жазылуымызда сандардың барлығы оң болсын деп алайық
І САНДАРДЫ ТҮРЛЕНДІРУ
Сан түсiнiгi – математикалық сияқты ақпараттануда да басты негiз. Егер
математикада сандрды өңдеу әдiстерiне көп көңiл бөлiнетiн болса, онда
ақпараттану үшiн сандарды ұсынуды пайдаланады. Себебi, тек солар ғана
жадтың қажеттi қорын, жылдамдықты есептеуде жiберетiн қатенi анықтайды.
Санау жүйесi деп белгiлi бiр мөлшердегi таңбалардың көмегiмен сандарды
өрнектеу мен жазудың жиынтығы.
Санау жүйесi екi топқа бөлiнедi: позициялық және позициялық емес.
Позициялық емес санау жүйесiнде әрбiр цифрдық мәнi оның алатын орнына
байланысты емес. Мұндай санау жүйесiнiң мысалы ретiнде римдiк жүйенi алуға
болады. Осы жүйеде жазылған ХХХ санында Х цифры кез келген позицияда 10-ды
бiлдiредi. Позициялық емес санау жүйесiнде арифметикалық әрекеттердi
орындау қиын болғандықтан, позициялық санау жүйесi қолданылады.
Позициялық санау жүйесiнде цифрдық мәнi оның орнына байланысты болды.
Позициялық мән санау жүйесiнiң негiзiнде дәрежесi арқылы анықталады.
Позициялық санау жүйесiнiң негiзi деп қолданылатын цифрлар санын айтады.
Санау жүйесi төртке бөлiнедi:
1. ондық санау жүйесi;
2. екiлiк санау жүйесi;
3. сегiздiк санау жүйесi;
4. оналтылық санау жүйесi.
Ондық санау жүйесi Ондық санау жүйесiнегi сандарды өрнектеу үшiн 0-9
дейiнгi араб цифрлары қолданылады:0,1,2,3,4,5,6,7,8,9.
Мыс: 234=200+30+4 2 жүздiктер разрядынан, 3 ондықтар разрядынан, 4-
бiрлiктер разрядынан тұрады. Ондық жүйе позициялық болып табылады, өйткенi
ондық санды жазуда цифрдың мәнi оның позициясына немесе санда орналасқан
орнына байланысты. Санның цифрына бөлiнетiн позицияны разряд деп атайды.
Егер 234 санын қосынды түрiнде былай жазамыз: 2*102+3*101+4*100 Бұл
жазбадағы 10-саны санау жүйесiн негiздеушi. Санның әрбiр цифры үшiн 10
негiздеушi цифрлың орнына байланысты дәрежеленедi және осы цифрға
көбейтiледi.
Бiрлiктер үшiн – 0; ондықтар үшiн – 1, жүздiктер үшiн – 2-ге тең негiздеушi
дәреже және т.с.с Егер сан ондық бөлшек болса, ол терiс дәрежеде жазылады.
Мыс: 38,956=3*101+8*100+9*10-1+5*10-2+6* 10-3
Компьютерде ондық емес екiлiк санау жүйесi, яғни екi негiздеушiсi бар
санау жүйесi қолданылады.
1.1 Сандарды консольдан енгізу
Бұл бөлімде сандарды консольдан символдық түрде енгізілген ішкі екілік
көрінісі бар ондық бүтін және заттық сандарды түрлендіру әдістерін
қарастырайық. Бүтін ондық сандардан бастайық. Өйткені практикада бұл
әдістің сұранысы үлкен. Ары қарай заттық сандарды түрлендіру мәселесі
қарастырылады.
Ішкі екілік көріністе символдық түрден ондық бүтін санға ауыстыру
және кері әсерін таңдау берілген мәндердің мүмкіндік диапазонына байланысты
анықталады. Екі әдісті талдайық.
0 – 99 диапазонындағы бүтін ондық сандарды енгізу.
0 – 99 диапазонындағы сандар үшін ондық символдық және екілік формадағы
арасындағы өзара түрлену екілік – ондықтарды (ВСД - сандары) көбейту және
бөлу командаларымен орындауға болады – ААМ және ААД.
Программа: prg 01_01. asm
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
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 ;нәтиже үшін алаңэквивалентті
екілік көрініс
0 - ∞ диапазонындағы бүтін ондық сандарды енгізу
Ерікті разрядтағы ондық санды символдық көріністен екілікке
түрлендіру үшін көп еңбектену керек. Осы жұмыстың негізі ерікті разрядтағы
сандар үшін арифметикалық операцияларға арналған материалдарда болуы керек.
Сондықтан біздің іс - әрекетіміз түрлендіру программасын құру кезінде
конструкторлы ойынды еске салады, бұнда дайын компоненттерден жаңа өнім
дайындалады.
Ерікті разрядтағы ондық санды символдық көріністен екілікке
түрлендіру программасының берілген компоненттері N – байтты санды өлшемі М
– байтты санға көбейту макрокомандасы және белгісі жоқ N – байтты санды
қосу программасы болып табылады. Екілік эквивалентті есептеу алгоритмі
жоғарыда көрсетілгендей болады – полиномды Горнер сұлбас бойынша есептеу.
Төменде оның программаларын іске асыратын варианттар келтірілген.
Байттардың орналасу нәтижесі – сұлба бойынша, Intel процессоры бойынша
нақты, яғни кіші байт кіші адрес бойынша орналасады.
Бұл программаның шарықтау бағыттарының бірі – белгісіз ұзындықты
барлық сандар үшін жадыны динамикалық бөлу болып табылады. Міндетті түрде
назар аударатынымыз, ұзын сандарды түрлендіру әдісі универсалды – оны
процессордың көрсетілген мәліметтер типінің диапазонында жататын мәндері
үшін де қолданылуға болады.
1.2. Заттық сандарды енгізу
Енді бізге перне тақтадан символдық көріністегі заттық санды енгізу
үшін және оны сәйкестендірумен екілік эквивалентке түрлендіру үшін бәрі
дайын. Жалпы заттық санның жазылуының екі түрі бар – қалқымалы нүктесімен
(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 бүтін сандар қосылысы командасындағы операнд өлшемінің
максималдылығы.
Он алтылық және екілік сандарды енгізу және олардың жалпы принциптары
ондық сандар үшін принциптерге аналогты болып табылады. Перне тақтадан он
алтылық және екілік сандарды енгізу кезінде ондық санға қарағанда сұраныс
жиі болады.
3. Сандарды консольға шығару
Бұл бөлімде біз сандарды кері түрлендіруді қарастырамыз, яғни ішкі
екілік көріністен символдық түрдегі санға, оның жазылу форматы сандық жүйе
талаптарының ережелеріне сәйкес келеді. Айта кететініміз кері түрлендіруді
қарастыру тура түрлендіруге симметриялы емес. Осыны дәлелдеудің негізінде
символдық көріністегі он алтылық санды түрлендіру алгоритмінен сандарды
консольға шығарудан бастайық.
Он алтылық сандарды шығару
Он алтылық сандармен жұмыс істей алу – төменгі деңгейде программалаудың
қажетті шарты болып табылады. Он алтылық сандар екілік сандармен
салыстырғанда компьютердегі ақпараттың ішкі көрінісін анализдеу үшін шынайы
болып келеді. Еске алсақ, әрбір байт – екі тетраданың жиынтығы, ал берілген
бір тетраданың мәндер диапазоны бір мәнді он алтылық санның қабылдай алатын
мәндер диапазонына сәйкес келеді. Сондықтан, он алтылық санды символдық
көрініске түрлендіру процесінің өзі қиындықты тудырмайды. Мысалы, бір
байттың құрамын консольға шығару алгоритмі оның кіші және үлкен
тетрадаларының мәнін кейбір әдіспен белгілеуден және олардың әрі қарай
символдық түрге түрленуінен тұрады. Егер консольға бір емес бірнеше байттың
символдық көрінісін шығару керек болса, онда тетрадаларды белгілеу және
олардың түрленуі керекті рет тізбектеліп орындалады.
Символдық көріністегі он алтылық ақпаратты түрлендіру алгоритмінің
пайдалы иллюстрациясы ретінде SHOW макрокомандасын қарастырайық, ол AL, AH,
AX, EAX төрт регистрдің бірінң құрамын символдық он алтылық көрініске
ауыстырады. Бұл макрос универсалды құрал болып табылады, ол программаны
орындау уақытында регистрдің құрамын немесе жады облысында динамикалық
түрде сығалауды рұқсат етеді. Оның көмегімен кез келген регистрдың немесе
жадының облысын, ұзындығы 32 бит объектінің құрамын оның өлшемі есебімен
AL, AH, AX, EAX регистрларының біріне жіберу жеткілікті. Бұл регистрлардың
біреуінің аты, содан соң SHOW макрокомандасының фактілік аргументі ретінде
көрсетіледі. Бұл макроанықтауыштың екінші аргументі – экрандағы позиция.
Анықталған мәнді бере отырып SHOW макрокомандасы қалай жұмыс істегенін
талқылай аламыз. Берілген макростың тағы бір ерекшелігі адресацияны рұқсат
ету есебімен нақты режимде жұмыс істей алатындай қорғану режимінде жұмыс
істей алады. Берілген макроанықтауыштың жұмысын келесі программаның
көмегімен тексеруге болады.
0 – 99 диапазонындағы бүтін ондық сандарды шығару
Жоғарыда айтылғандай, 0 – 99 диапазонындағы мәндер үшін символдық
ондық және екілік формалар арасындағы өзара түрлену екілік - ондық (ВСД -
сандар) көбейту және бөлу командаларымен орындалады – ААМ және ААД.
Программа: prg 01_07. asm
Консольға үлкен екілік мәндерді шығару мақсатында түрлендіру үшін екі
әдісті қолдануға болады: 10 модулі бойынша бөлу жолымен (мәндер диапазоны
шектелмеген) және процессордың көмегімен (0...1018 - 1).
0 - ∞ диапазонындағы бүтін ондық сандарды шығару
0 - ∞ диапазонынан екілік мәндерді шығару алгоритмінің негізінде
ондық көріністегі (...U2 U1 U0) сандар кішісінен бастап берілген екілік
санды u тізбекті түрде 10 – ға бөлумен алынатындығы жатыр: UO = u mod 10;
U1 = [u10] mod 10; U2 = [[u10]10] mod 10 т. с. с., қайта бөлу кезінде
бөлінетін сан нолге теңеспегенше дейін: [...[[u10]10]...] = 0. Мұндағы,
[u] символы төменгі жаққа нолденген бүтін бөлікті білдіреді.
Неге консольдан енгізу алгоритміне қарағанда кері түрленуі үшін
әдістердің түрлілігі жоқ? Бұл DIV процессорының команда ерекшелігімен
түсіндіріледі, ол жоғарыда айтылған бүтін және қалдық алу алгоритмдеріне
қолданылады. Оның талаптары бөлінуші және бөлуші мәндерге қатысты –
бүтіннің өлшемі бөлінушіден екі есе кіші болу керек. Қарсы жағдайда #ДЕ
ескертуі туындайды (бөлу қателігі) және программа авариялық түрде
аяқталады.
Осы шарттардан шыға бізге N – байтты өлшемді мәнді белгісі жоқ1
байтты өлшемді мәнге бөлу программасын қолданудан басқа еш нәрсе жоқ.
Қолайлы болу үшін бұл программаны біз макрокомандалар түрінде жазамыз.
Программа: prg 01_08. asm
Берілген программада жадыдағы мәндер түрленеді. Оған қоса біз
берілген екілік мәннің орнына екі сөз өлшемді максималды үлкен болатын
белгісі жоқ санды береміз. Түрленудің нәтижесі – 4 294 967 295, ол талап
етілген ондық мәнмен толық сәйкестікке келеді. Бірақ берілген мәндерді
жадыда беру қолайсыз, процессордың регистрынан түрлену үшін мәнді
процессорды қолдану әдісі жақсы келеді.
0 – 999 999 999 999 999 999 диапазонындағы бүтін ондық сандарды шығару
Шығарудың бұл әдісі процессордың қапталған ондық сандармен жұмыс істей
алу мүмкіншілігіне негізделген. Процессордың командалық жүйесінде FBSTP
командасы бар, ол санды ... жалғасы
Ұқсас жұмыстар
Пәндер
- Іс жүргізу
- Автоматтандыру, Техника
- Алғашқы әскери дайындық
- Астрономия
- Ауыл шаруашылығы
- Банк ісі
- Бизнесті бағалау
- Биология
- Бухгалтерлік іс
- Валеология
- Ветеринария
- География
- Геология, Геофизика, Геодезия
- Дін
- Ет, сүт, шарап өнімдері
- Жалпы тарих
- Жер кадастрі, Жылжымайтын мүлік
- Журналистика
- Информатика
- Кеден ісі
- Маркетинг
- Математика, Геометрия
- Медицина
- Мемлекеттік басқару
- Менеджмент
- Мұнай, Газ
- Мұрағат ісі
- Мәдениеттану
- ОБЖ (Основы безопасности жизнедеятельности)
- Педагогика
- Полиграфия
- Психология
- Салық
- Саясаттану
- Сақтандыру
- Сертификаттау, стандарттау
- Социология, Демография
- Спорт
- Статистика
- Тілтану, Филология
- Тарихи тұлғалар
- Тау-кен ісі
- Транспорт
- Туризм
- Физика
- Философия
- Халықаралық қатынастар
- Химия
- Экология, Қоршаған ортаны қорғау
- Экономика
- Экономикалық география
- Электротехника
- Қазақстан тарихы
- Қаржы
- Құрылыс
- Құқық, Криминалистика
- Әдебиет
- Өнер, музыка
- Өнеркәсіп, Өндіріс
Қазақ тілінде жазылған рефераттар, курстық жұмыстар, дипломдық жұмыстар бойынша біздің қор #1 болып табылады.
Ақпарат
Қосымша
Email: info@stud.kz