ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.



 

Часть 9


8.  Программирование для платы VGA на Turbo С
-----------------------------------------------------------------
                                             
     Обычно Бейсик считают языком для начинающих.  Паскаль  имеет
репутацию учебного языка,  предназначенного для изучения наиболее
продвинутых методов программирования. С другой стороны, язык Си и
его диалекты      считается     профессиональным     инструментом
программиста.
     
     Между Паскалем и Си существуют структурные аналогии. Однако,
некоторые используемые в Си соглашения и характеристики делают Си
уникальным языком.  Например, программа на Си начинается с первой
команды файла.  Кроме того,  определения переменных в Си делаются
без команды начала описания формата (например, "var" в Паскале).
     
8.1  Важные команды языка Си
-----------------------------------------------------------------
#include     Установление связи с внешним файлом DOS.H
                    в начале программы.
     
void                Объявление пустой, т.е. не возвращающей
                    никаких значений, функции.
     
(void)              Заменяет параметр процедуры - никакое
                    значение не передается.
     
union               Определение поля данных, включающего в себя
                    различные структуры данных.
     
regs                Регистровые переменные, определяемые как
                    объединение regs во включаемом файле DOS.H.
     
regs.x.ax           Переменная для двойного регистра AX.
     
regs.h.bl           Переменная для младшего байта регистра BX.
     
int86(n,...)        Вызов прерывания номер n для процессоров
                    8086-80X86.
     
main() {...}        Начало главной программы без передачи параметров
                    из командной строки DOS.
     
int argc            Определение переменной, хранящей число параметров
                    командной строки (здесь:целочисленная переменная).
     
char *argv[]        Определение индексированной переменной для
                    параметра командной строки (здесь: указатель
                    на строковую переменную).
     
atoi(...)           Преобразует строку в значение типа integer.
-----------------------------------------------------------------
     
     
8.2  Пример программы на Си
-----------------------------------------------------------------
     
     Чтобы не  повторять  подробных  описаний  Главы 6,  здесь мы
приведем только два коротких примера.
     
     Мы протестировали эти программы для  большинства  реализаций
языка Си  (Turbo  C фирмы Borland International,  а также C 5.1 и
QuicC фирмы Microsoft).  Обе программы компилируются, компонуются
и выполняются во всех указанных реализациях Си.  Однако, мы дадим
вам некоторые рекомендации, которые помогут вам упростить процесс
компиляции и компоновки файлов:
     
     1. При  загрузке  или  при  вводе приведенных здесь исходных
кодов убедитесь, что в операторе <#include> задан маршрут доступа
к файлам  заголовка.  Это  особенно  относится к версиям Си фирмы
Microsoft.
     
     2. При компоновке Microsoft Quick  C  или  Microsoft  C  5.1
убедитесь, что вам известны маршруты к библиотекам, участвующим в
компоновке (например,  MCLIBE.LIB).  Компоновщик  Си,  не   найдя
соответствующий файл, запросит у вас маршрут и имя этого файла.
     
     Опытный программист,   работающий   на   Си,   может  сейчас
обратиться к  предыдущим  главам,   чтобы   освежить   в   памяти
подробности о доступе к необходимым функциям BIOS.
     
     Следующие программы,   VMODE19C.C   и  VMODEC.C,  аналогичны
командам VMODE19.exe и VMODE.EXE из  нашего  расширенного  набора
команд Паскаля.
               
                                        /* vmode19c.c        */
#include 
#include 

                             /* включить режим и очистить экран */
void vidmode(void)
{
 union REGS regs;
 regs.h.ah = 0x00;
 regs.h.al = 0x13;
 int86(0x10,®s,®s);
}

main()                                 /* главная программа */
{
 vidmode();
}
                                                           
     Следующий пример  использует параметры командной строки.  Вы
можете ввести желаемый номер видео-режима в командной строке  при
запуске программы. Подробности см. в описании VMODE.EXE:
     
                                       /* vmodec.c          */
#include                        /* видео-режим с параметрами  */
#include 
#include 

int  mnr;                              /* определение переменной */
char chr;

void vmode(int modenumber)
{                                      /* включить режим */
 union REGS regs;
 regs.h.ah = 0x00;
 regs.h.al = modenumber;
 int86(0x10,®s,®s);
}

main(int argc, char *argv[])
{                                      /* начало главной программы */
 mnr = 17;
 vmode(mnr);
 mnr = atoi(argv[1]);
 vmode(mnr);
}

     
     


Яндекс цитирования