2013-10-14 3 views

ответ

2

Вы должны правильно использовать поля ограничения:

void geninterrupt (int x) { 
    __asm__(" movb %[x], %%al \n" 
      " movb %%al, genint+1 \n" 
      " jmp genint \n" 
      "genint: \n" 
      " int $0 \n" 
     : /* no outputs */ 
     : [x] "m" (x) /* use x as input */ 
     : "al" /* clobbers %al */ 
     ); 
} 

Here's a good how-to about GCC inline assembly и link to the relevant GCC documentation.

Edit: так как ваш НКУ, кажется, не быть в состоянии обрабатывать меченых операнды

+0

Спасибо Карлу (как за этот вопрос, так и за пакет (поп), сегодня у меня много трудностей ..), но я получил эту ошибку с вашим кодом: invalid 'asm': номер операнда отсутствует после% -letter __asm ​​__ ("movb% [x],% al \ n" –

+0

Упс - пропустил некоторые знаки '%'. Исправлено. Мне также пришлось сменить ограничение' m'. –

+0

IT WORKS !!!! Большое спасибо Мать !! Также большое спасибо за полезные ссылки! :) –

Смежные вопросы