Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

int86, int86x - программное прерывание

Описание

      Эти функции  выполняют  программное  прерывание  8086.
      intnum является номером прерывания (0...255).
      regsin  является  указателем на структуру,  содержащую
      значения регистров AX,BX,CX,DX,SI и DI,  поступающих с
      прерыванием.
      segregs является значением сегментных регистров,  пос-
      тупающих с прерыванием.
      regsout является указателем на структуру, в которую за-
      писываются возвращаемые значения регистров.
      Структуры REGS и SREGS определены в dos.h файле. Отсы-
      лаем Вас к руководствам  по  аппаратуре и программному
      обеспечению для знакомства с номерами прерываний и со-
      ответствующими функциями на Вашей машине.

Использование

      #include <dos.h>             /* структуры регистров */
      int int86(int intnum, union REGS *regsin,
                            union REGS *regsout);
      int int86x(intnum, union REGS *regsin,
                 union REGS *regsout, struct SREGS *segregs);

Возвращаемое значение

      Возвращают значение регистра  AX в 8086  по завершению
      прерывания.  Состояние флага 'carry' можно получить из
      x.cflag  в regsout.  Не пользуйтесь int86 и int86x для
      прерываний 0x25 или 0x26.  Используйте  для этих целей
      abs_disk_read/ write.

Пример

      /* Эта функция  воспринимает ввод с клавиатуры и пишет
         строку на экран посредством BIOS */
      #include <dos.h>
      #include <stdio.h>
      #define MAXKEY 19
      #define BEEP printf("\007")
      void print(void);
      void biosprt(void);
      char buf [MAXKEY], *ptr;
      int colm = 30, i;
      union REGS r;
      main()
      {
        system("cls");
        printf("Введите строку из 20 литер\n\n");
        gets(buf);
        if (strlen(buf) > 20)
             printf("Строка длинна, обрезаем\n");
        print();
      }
      void print()
      {
        r.h.ah = 0х02;
        r.h.bh = 0;
        r.h.dh = 12;
        r.h.d1 = colm;
        int86 (0х10, &r, &r);
        for (ptr=buf,i=0; i<=MAXKEY; (biosprt()),i++,ptr++);
      }
      void biosprt()
      {
        r.h.ah = 0х09;
        r.h.al = *ptr;
        r.x.cx = 1;
        r.h.bl = 0х0f;
        r.h.bh = 0;
        int86(0x10, &r, &r);
        r.h.ah = 0x02;
        r.h.bh = 0;
        r.h.dh = 12;
        r.h.dl = ++colm;
        int86 (0х10, &r, &r);
      }

Рекомендация

      Смотрите также  intdos, bdos.

оглавление

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог