Вы можете использовать прерывания DOS только из программ DOS, поэтому для этой работы вам понадобится действительно древний компилятор C ++, такой как Visual C ++ 1.0 или 1.5, или Turbo C ++ / Borland C ++ с поддержкой до 4.5 или 5.0. Тогда вам придется исправить свой ассемблерный код - то, что вы написали, выглядит как синтаксис AT & T, но все компиляторы DOS, о которых я знаю, используют синтаксис Intel. В этом есть одно исключение: djgcc. Это древняя версия gcc, которая работает под расширителем DOS, поэтому она использует синтаксис AT & T и все еще поддерживает набор прерываний, подобных DOS (хотя вы действительно используете расширитель DOS, а не DOS как таковой).
Даже в этом случае программа будет работать только в системе, которая поддерживает программы DOS (и Microsoft быстро удаляет ее из окон - например, она отсутствует во всех 64-разрядных версиях Windows).
DOS достаточно устарел, поэтому писать новый код для него не имеет смысла. Если вы хотите прочитать такой ключ, напишите программу для Windows и используйте что-то вроде ReadConsoleInput
.
Edit: Хорошо, если вы действительно хотите это сделать, очевидным способом будет выбрать DOS extender и перенести на него текущую версию gcc. Другой возможностью было бы выбрать компилятор, такой как OpenWatcom или Digital Mars , который все еще поддерживается и уже портирован на DOS-расширитель .