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

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


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

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



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

Функция Интерфейс с программными прерываниями процессора

 
                    8086.
 
 
 
 Синтаксис          #include <dos.h>
 
                    int int86(int intr_num, union REGS *inregs,
 
                        union REGS *outregs, struct SREGS *segregs);
 
 
 
 Файл, содержащий   dos.h
 
 прототип
 
 
 
 Описание           Функция генерирует      программное     прерывание
 
                    микропроцессора  8086,  причем  номер   прерывания
 
                    определяется     аргументом     intr_num.    Перед
 
                    выполнением прерывания,  функция копирует значения
 
                    регистров из объединения inregs в сами регистры.
 
 
 
                    Кроме этого, int86 копирует значения segregs->x.ds
 
                    и segregs->x.es в соответствующие регистры,  перед
 
                    вызовом  прерывания.  Эта  возможность   позволяет
 
                    программам   использовать  дальние  указатели  или
 
                    большие модели памяти  для  указания  используемых
 
                    для прерывания сегментов.
 
 
 
                    После возврата  из  прерывания,  функция  копируют
 
                    текущие значения регистров в параметр  outregs,  а
 
                    состояние флага системного переноса в поле x.cflag
 
                    параметра outregs.  Если флаг переноса установлен,
 
                    это  означает  что произошла ошибка.  Кроме этого,
 
                    данная функция  восстанавливает  содержимое  DS  и
 
                    заполняет    поля    segregs->es   и   segregs->ds
 
                    соответствующими значениями.
 
 
 
                    int86x позволяет   вам   генерировать   прерывание
 
                    которое  получает значение в DS отличное от адреса
 
                    сегмента  данных  по  умолчанию,   и/или   которое
 
                    получает аргумент в регистре ES.
 
 
 
                    Примечание: параметры   inregs   и  outregs  могут
 
                    указывать на одну и туже структуру.
 
 
 
 Возвращаемое       Функция int86 возвращает значение регистра AX после
 
 значение           завершения прерывания. Если флажок переноса
 
                    установлен (outregs-->x.cflag!=0),     то     есть
 
                    произошла   ошибка,   данная  функция  присваивает
 
                    глобальной переменной _doserrno код ошибки.
 
 
 
 Переносимость      Функция уникальна для семейства микропроцессоров
 
                    8086.
 
 
 
 Смотри также       bdos, bdosptr, geninterrupt, intdos, intdosx,
 
                    int86, intr, segread.
 
 
 
 Пример:
 
 
 
 #include<dos.h>
 
 #include<process.h>
 
 #include<stdio.h>
 
 
 
 int main(void)
 
 {
 
    char filename[80];
 
    union REGS inregs,outregs;
 
    struct SREGS segregs;
 
    printf("Введите имя файла:");
 
    gets(filename);
 
    inregs.h.ah = 0x43;
 
    inregs.h.al = 0x21;
 
    inregs.x.dx = FP_OFF(filename);
 
    segregs.ds = FP_SEG(filename);
 
    int86x(0x21,&inregs,&outregs,&segregs);
 
    printf("Атрибуты файла: %X\n",outregs.x.cx);
 
    return 0;
 
 }


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

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




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



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


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