gcc — C ++: вызов прерывания BIOS 0x21

Я помню, как использовал функцию

geninterrupt(int interrupt_no)

(включен в dos.h) для отображения строки на экране в Turbo C ++. Теперь, когда я пытаюсь скомпилировать ту же самую программу с g ++, компилятор кричит на меня.

C:\Users\Krish\Documents\rough.cpp|7|error: '_AH' was not declared in this scope|
C:\Users\Krish\Documents\rough.cpp|8|error: '_DX' was not declared in this scope|
C:\Users\Krish\Documents\rough.cpp|9|error: 'geninterrupt' was not declared in this scope|

Кажется, он даже не идентифицирует регистры. Что я делаю неправильно. Разве эти функции не являются частью стандартной библиотеки c ++? (Должен ли я явно связать библиотеки?). Если да, то как?

0

Решение

Вызов прерываний для получения напечатанной строки работал только на x86совместимые процессоры, работающие в real mode (который DOS побежал под). Современные операционные системы работают в protected mode в котором прерывания BIOS больше не доступны.

Сегодня вывод консоли обычно представлен file handle куда вы отправляете данные, используя стандартную библиотеку или, если вы хотите делать это на низком уровне, прямые функции ядра. (В системе POSIX вызов write)

От Таблица системных вызовов Linux ты можешь использовать sys_write доступно под int 0x80 (Вы должны использовать встроенную сборку, чтобы заполнить параметры и вызвать прерывание)

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]