А в общем нужно через порты 0x60 h Нашел вот это
солнышко //*********************************************************************
// мигание индикаторов
// команда 0xED выдается не контроллеру, а самой клавиатуре,
// поэтому пишем ее в порт 0х60
// Состояние индикаторов определяется следующим байтом,
// 0-й бит == состояние Scroll Lock
// 1-й бит == Caps Lock
// 2-й бит == Num Lock
// Бит ==1 -> зажечь светодиод, Бит == 0 -> погасить светодиод
// Для комбинирования светодиодов юзаются битовые маски
// (если записать "3", то включатся Scroll и Caps, а Num погаснет)
// 0 == 000 (все погашены)
// 1 == 001 (Scroll)
// 2 == 010 (Caps)
// 3 == 011 (Scroll + Caps)
// 4 == 100 (Num)
// 5 == 101 (Num + Scroll)
// 6 == 110 (Num + Caps)
// 7 == 111 (все включены)
// Старшие биты (начиная с 3-го) игнорируются.
// Если определить 1 == SCROLL_LOCK, 2 == CAPS_LOCK, 4 == NUM_LOCK,
// то значения получаются установкой битов:
// зажечь Num и Scroll: NUM_LOCK | SCROLL_LOCK (5 == 4 + 1)
// сложение чисел заменяется установкой битов побитовым "или"
static short int i=1; // вообще-то должно быть char...
asm{
mov al, 0xED
out 0x60, al
mov ax, i // i занимает 2 байта, поэтому ax
out 0x60, al // ah нас не интересует
nop
nop
nop
}
if(i==1) i=2;
else if(i==2) i=4;
else i=1;
//*********************************************************************
тут, правда, вперемешку с Сишным кодом, но в целом проблем не возникнет :)
по таймеру (или как больше нравится) вызываешь этот код -- и будет тебе счастье.
Переменная i -- статическая, в АСМ сделай ее глобальной.