Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 1 марта!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Давно заметил, что всё-таки языки С/C++ это не самый лучший вариант программирования под Windows. Сейчас появилась масса более современных и удобных языков, например тот же Python - кроссплатформенный язык, очень легок в изучение. Я его изучил буквально за несколько дней по этому курсу - ссылка. Автор постарался, там видеоуроки на удивление легкие и понятные.

Функция Дополнительный интерфейс к прерываниям процессора

 
                    8086.
 
 
 
 Синтаксис          #include <dos.h>
 
                    void intr(int intr_num, struct REGPACK *preg);
 
 
 
 Файл, содержащий   dos.h
 
 прототип
 
 
 
 Описание           Функция intr поддерживает альтернативный интерфейс
 
                    для   выполнения   программных   прерываний.   Она
 
                    генерирует    прерывание   микропроцессора   8086,
 
                    заданное аргументом intr num.
 
 
 
                    Функция intr перед выполнением прерывания копирует
 
                    значения  регистров  из  структуры  REGPACK  *preg
 
                    непосредственно   в   регистры.  После  завершения
 
                    прерывания функция intr копирует текущее  значение
 
                    регистров в   параметр   preg.   Значения   флагов
 
                    остаются законсервированными.
 
 
 
                    Функции intr передаются следующие параметры:
 
 
 
                    intr num - номер выполняемого прерывания;
 
 
 
                    preg - адрес структуры, содержащий:
 
 
 
                       (a)- значения регистров перед вызовом;
 
                       (b)- значения регистров после вызова
 
                            прерывания.
 
 
 
                    Структура REGPACK  объявленна  в  dos.h  следующим
 
                    образом:
 
 
 
                    struct REGPACK
 
                       {
 
                       unsigned r_ax, r_bx, r_cx, r_dx;
 
                       unsigned r_bp, r_si, r_di, r_ds, r_es, r_flags;
 
                       };
 
 
 
 Возвращаемое       Никакое значение не возвращается. Структура
 
 значение           REGPACK *streg содержит значения регистров после
 
                    вызова прерывания.
 
 
 
 Переносимость      Функция уникальна семейства микропроцессоров 8086.
 
 
 
 Смотрите также     geninterrupt, int86, int86x, intdos, intdosx.
 
 
 
 Пример:
 
 
 
 #include<stdio.h>
 
 #include<string.h>
 
 #include<dir.h>
 
 #include<dos.h>
 
 
 
 #define CF 1  /* флаг переноса */
 
 
 
 int main(void)
 
 {
 
    char directory[80];
 
    struct REGPACK reg;
 
    printf("Введите директорию, куда перейти:");
 
    gets(directory);
 
    reg.r_ax = 0x3b << 8;
 
    reg.r_dx = FP_OFF(directory);
 
    reg.r_ds = FP_SEG(directory);
 
    intr(0x21,&reg);
 
    if(reg.r_flags & CF)
 
       printf("Ошибка при смене директории\n");
 
    getcwd(directory);
 
    printf("Текущая директория: %s",directory);
 
    return 0;
 
 }


<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS