Әдебиеті:
1 В. Юров, С. Хорошенко "Ассемблер". - С-П: "ПитерКом", 1999.
2 К. Г. Финогенов "Самоучитель по системным функциям MS-DOS".- М.:
"Радио и связь", 1995.
Бақылау сұрақтары:
1 Клавиатураның контроллері дегеніміз не? Оның жұмысын айтыңыз.
2 Скан-кодтың қалыптастыруын айтыңыз.
3 Клавиатурадан мәліметті енгізудің неше тәсілі бар?
4 Қандай үзілімдер клавиатурамен жұмыс жасайды?
Тақырыбы 13 Терминал экранына текстік информацияны енгізу.
Мақсаты: Ассемблер тілінде терминал экранына текстік информацияны
енгізу жұмысымен таныстыру.
Дәріс сұрақтары:
1. IBM PC түрдес компьютерлер бейнежүйесі. DOS құралдарымен
экранға шығару.
2. ANSI – драйвері арқылы экранды басқару. Текстік бейнебуфердің
логикалық ұйымдастырылуы.
3. Шрифтерді басқаратын жүйелік құралдар.
1. Компьютердің бейнежүйесінде экран терминалына шығаратын текстік не графикалық бейнелерді алуға мүмкіндік беретін аппараттық не программалық құралдар бар.
Аппараттық құралдарға бейнетерминал (монитор) жатады. Сонымен қатар, бейнеконтроллер, не бейнеадаптер. Адаптер екі программамен қосылатын текстік және графикалық режимдермен қамтамасыз етеді.
Графикалық режимде 16-түрлі түсті 640х350 нүктелер мүмкіндігімен экранға бейне шығады.
Тексттік режимде бейне негізінен бір жолда 80 символдар тұратын 25 жолдардан тұрады.
2. DOS экранға текстік ақпаратты шығару үшін келесі мүмкіндіктерді береді:
-
40һ функциясымен DOS Int 21h үзілімі арқылы файлға сияқты экранға қатынау;
-
l...Ch шегінде DOS функциясын қолдану (Int 21h үзілімі).
Экранға текстік ақпаратты шығару үшін Int 21h үзілімінің үш функциясы қолданылады:
02h – символды шығару;
06h – тура енгізу-шығару;
09h – жолды шығару.
3. Int 10h үзілімі арқылы BIOS драйверімен іске асырылатын құралдарды қарастырайық. Драйвердің функциялары:
02h – курсор позициясын орнату;
03h – курсор позициясын алу;
05h – бейнепарақты орнату;
06h – терезені жоғарыға көтеру;
07h – терезені төмеңғе түсіру;
08h – курсор позициясында символ мен атрибутты оқу;
09h – курсор позициясында символ мен атрибутты шығару;
0A - курсор позициясында символды шығару;
0Eh - телетайп режимінде символды шығару;
13h - телетайп режимінде жолды шығару.
Әдебиеті:
1 В. Юров, С. Хорошенко "Ассемблер". - С-П: "ПитерКом", 1999.
2 К. Г. Финогенов "Самоучитель по системным функциям MS-DOS".- М.:
"Радио и связь", 1995.
Бақылау сұрақтары:
1 Компьютердің бейнежүйесінде экран терминалына шығаратын қандай
программалық құралдар бар?
2 BIOS драйвердің функцияларын атаңыз.
3 DOS экранға текстік ақпаратты шығару үшін қандай мүмкіндіктерді береді?
Тақырыбы 14 Терминал экранына графиктік информацияны енгізу.
Мақсаты: Ассемблер тілінде терминал экранына графиктік
информацияны енгізу жұмысымен таныстыру.
Дәріс сұрақтары:
1. BIOS бейнедрайверінің графиктік мүмкіндіктері.
2. Жадыны үлестіретін жүйелік құралдар. Туынды процесстерді
ұйымдастыру.
1. MS-DOS жүйе орындалмылы екі программа файлы типін қабылдайды: COM және EXE. COM программалық типі бірсегментті болады. EXE программалық типі қатты шегі жоқ. LINK компоновщигі, объекті модуль программасын өндейді, трансляциядан шығу текстін қортындысынан алады, EXE немесе COM кеңейту файлын ұйымдастырады.
Қандайда программа арнайы типті жүйелік таблица құрайды – префикс программа сегменті (PSP), 256 байттық өлшемі бар. .COM типтес программа орынын PSP программист резервілейді, ORG 100h; директивасынан бастап программалауды PSP қосады, ондай жағдайда, жалғыз программа сегментінің құрамы. Exec функциясының программасын жүктеу жады PSP аймағына толтырылады. .EXE типтес программа орынын PSP программист резервілемейді, ол оның программалау процессінде жүктеуін тұрғызады.
DOS программаны орындау процессінде PSP мазмұны қолданылады, оған қолданбалы программаны жасауға қолданады.
Программа, жады жүктеуінде, үш маңызды компонент үшін программалау қосылады: қоршаған, префикс программалық сегменті және программаны, бірнеше сегменттен тұруы мүмкін және бірнеше байланыссыз бөлім жады орын алады.
Динамикалық басқарма жады үшін келесі DOS функциясы қолданылады:
48h – жады блогын қою;
49h – жады блогын босату;
4Аh – жады блогын тағайындау өлшемін ауыстыру.
Орындалған көлем әрбір буфері есептелу кезінде жұмыс істеу барысын және динамикалық белгілеу жадын сұрап, оны жасау .COM типтес программасын қарастырайық. Программа келесі блогын қолдау қажет:
-
параграф жадының өлшемін анықтау;
-
жаңа орынға стек көшірмесін көрсету;
-
артық жадыны босату;
-
жалғыз немесе көп сегменттік түрде жадыны керекті өлшемін белгілеу;
-
ол программаға қажет болғандықтан белгіленген сегменттерді қолдану;
-
белгілеу жадыны босату;
-
программаны аяқтау.
2. Программа жүктелу жадында DOS Exec(int 21h – 4h) функция көмекмен үшін жасалып, жүйені жүктеу ролін атқарады. Егер қолданушы программаны қосады, командалық жолды батырма арқылы енгізеді, сонда Exec функциясы Command.com шақырады ал басқа жағдайда Exec функциясы DOC қабықшасы немесе интерфейстің басқа программаларын шақырады, не болмаса жүктелген және істелетін программа, солардың ішінде қолданбалы.
Командалық процессордың айналасы, процессордың бастамалы жүктемесінде ұйымдастырылған, көбінесе Comshec, prompt, path, қолданылады, олар autoexec.bat. файлынан ауданға өткізіледі. Мысал:
Comshec=c: \ dos\command.com
Prompt= $p$g
Path=c: \dos; c: \tools
Көмекші программаға аймақтық мекен-жайын жіберу үшін, аналық пограмма екі облыстық жадты қолдана алады, барлық программаларға сәйкес келетін:
-
векторлык бос үзінді;
-
тапсырма аралық аймақтық байланыс.
Әдебиеті:
1 В. Юров, С. Хорошенко "Ассемблер". - С-П: "ПитерКом", 1999.
2 К. Г. Финогенов "Самоучитель по системным функциям MS-DOS".- М.:
"Радио и связь", 1995.
Бақылау сұрақтары:
1 Динамикалық басқарма жады үшін қандай DOS функциясы қолданылады?
2 DOS драйвердің функцияларын атаңыз.
3 Программа, жады жүктеуінде неше маңызды компонент үшін
программалау қосылады?
Тақырыбы 15 Резидентті программалар. Инсталляционды программа.
Мақсаты: Ассемблер тілінде резидентті программаларымен жұмысты
таныстыру.
Дәріс сұрақтары:
1. Резиденттік программаның негізгі ұйымы.
2. Резиденттік программамен байланыс.
3. Резиденттік программаны жадыдан шығару.
1. Программалық үлкен класс, функциялы есептеу жүйесін қамтамассыз ететін (драйверлік құрылым, DOS қабықшасы, шифрлеу және қорғау программалары: мәліметтер, русификаторлар, блокнот немесе калькулятор және т.б. электронды программалар қатысады), жадыда болуы тиіс және қолданушының сұранысына тез арада әрекет жасау керек, немесе есептеуіш жүйедегі басқа бір жағдайларға байланысты. Бұндай программалар жадыдағы резидент немесе жай резиденттік программалардың атымен аталады. Резидентті программаны .СOM типті немесе .EXE программалық типті құрастыруға болады, бірақ резиденттік программа максимал болуы тиіс болғандықтан, резиденттік түрінде .COM типтік программалар жиі қолданылады.
Жүктелу және жадыда қалдыру үшін арналған программалар, көбінесе екі бөлімнен тұрады (секция) – инициализациялық және жұмысшы (резиденттік). Резиденттік секция текстік программаның басында орналасады, кейін – инициализацияланады.
Резиденттік программаны қосу үшін, оған қалайда басқарманы және параметрлерді беру керек. Резиденттік программаны үш түрмен қосуға болады:
-
программа сияқты CALL операторымен шығару;
-
асинхрондық (аппараттық) үзілісті механизмді қолдану;
-
синхрондық (программалық) үзілістің көмегімен.
Сонымен қатар DOS – та резиденттік программалармен қарым – қатынаста мультиплекстік үзілім 2Fh қарастырылады.
2. Резиденттік программаға транзиттік қатынау үшін тапсырма аралық қатынасының ауданын қолдануға болады, BIOS мәлімет ауданның бөлігін құрайды және 40h:F0h…40h:FFh адресінде орналасқан. Бұл аудан жүйемен қолданылмайды, тек қана қолданушының коммуникациялық программамен арнайы қолданылады. Тапсырма аралық қатынасының ауданымен резиденттік программасын шақыру мен қатар параметрлерді беруге болады. Параметрлердің өзін емес оның адрес беруге ыңғайлы; себебі толық адрес екі сөздік орын алады, ал тапсырма аралық ауданында төрт адрес орын алады.
Резиденттік программасын және параметрлерін басқаруын ең арнайы тәсіл, бос векторды қолдану, мысалы, 60h…66h. Инициализация кезінде резиденттік программа өзінің адресін бол векторға орналастырады:
mov ax,0
mov es, ax
mov es: 180h.offset entry
mov es: 182h, cs
Резиденттік программасын екпінді түрге келтірген кезінде транзиттік программада int 60h командасын істеуге жеткілікті.
Бұл жағдайда резиденттік программа IRET командасымен қорытындылау керек. Параметрлердің адресін басқа бос векторлар алқылы беруге болады, мысалы, 61h немесе 62h. Әрине, тапсырма аралық ауданын да қолдануға болады.
Жүйесінің келісімі бойынша 2 Fh үзілімі AL регистіріне резиденттік программасының қалып күйін қайтарады:
AL=0 – программа орнатылмаған (яғни жадыда резиденттік программа әлі жоқ) және оны орнатуға болады;
AL=1 – программа орнатылмаған және орнатуға болмайды;
AL=FFh – программа орнатылған сондықтан қайта орнатуға керегі жоқ.
3. Резиденттік программаларын әр түрлі тәсілдермен жадыдан шығаруға болады. Ең қарапайым тәсіл – жадының блогын босату, Dos 49h функциясы арқылы программаны ауыстыру. Басқасында - жадыдан шығару программасында 4Ch аяқталу функциясы қолданылады, оны шығуын емес ал резиденттік программаны аяқтау, содан кейін басқарманы шығаруға қайтарады. Жадыны босатудың алдында векторлық үзілісті бәрібір қалпына келтіру керек, резиденттік программамен ұсталған.
Әдебиеті:
1 В. Юров, С. Хорошенко "Ассемблер". - С-П: "ПитерКом", 1999.
2 К. Г. Финогенов "Самоучитель по системным функциям MS-DOS".- М.:
"Радио и связь", 1995.
Бақылау сұрақтары:
1 Резидентті программалар дегеніміз не?
2 Резиденттік программаны неше түрмен қосуға болады?
3 Резиденттік программаларын жадыдан шығару үшін қандай тәсілін білесіз?
Достарыңызбен бөлісу: |