Я думаю, что Keil делает компилятор C ++, но я думаю, что вы пытаетесь использовать интерфейс IDE для кодирования ASM. Вам нужен ассемблер x86.
Если вы хотите продолжать использовать свой компилятор C ++, обратите внимание, что C ++ поддерживает ключевое слово __asm
, поэтому все, что вам нужно сделать, это:
//all your includes here
int main()
{
asm
{
//your assembly code here
}
return 0;
}
Обратите внимание, что это рискованный бизнес, компилятор C ++ НЕ БУДЕТ выдавать ошибку за любые ошибки кодирования, которые вы делаете внутри блока asm, вместо этого он просто, скорее всего, скомпилируется нормально, и просто вылетает при запуске, и это делает отладку почти адом Однако преимущество заключается в том, что вы можете комбинировать преимущества языка среднего уровня, такого как C ++ (или даже использовать код C ++ в этих блоках ASM ), с преимуществами использования языка более низкого уровня, такого как ASM (а именно, скорость и размер, хотя это в значительной степени незначительно, когда вы запускаете код через компилятор C ++, тем более что компилятор не будет оптимизировать ваш код ASM, но я сохраню свою критику кодирования ASM в другой раз). Подробнее о C ++ и ASM здесь .
В зависимости от того, что вы кодируете и какова ваша целевая ОС, вы можете выбрать один из множества ассемблеров ассемблерного кода (технически ассемблер собирает ассемблерный код, в то время как компилятор компилирует язык более высокого уровня, такой как C ++, в ассемблерный код, затем исполняемый) там, Nasm, Tasm, GoAsm, Masm, Gasm (просто Google их имена). Я считаю FASM одним из самых популярных. Обратите внимание, что все они, кажется, имеют несовместимость со своими стилями кодирования, поэтому вы адаптировались к конкретному компилятору, который вы выбрали (хотя по одной из причин, почему мне никогда не нравился ASM, я в основном писал High Level Assembly).