Для того чтобы отключить клавиатуру, необходимо установить восьмой бит в 0х61 порту (порт управления клавиатурой) равным единицы. Для ее включения, необходимо данный бит сбросить.
Вот код который отключает а затем обратно включает клавиатуру.
P.S. что бы не затенять весь смысл сказанного, пишу код на
'C'. При желании, переписать его на ассемблер не составит большого труда.
void lock_unlock_keyboard(void)
{
/* через порт 0x61 отключаем клавиатуру */
tmp = inb(0x61);
outb(tmp|0x80, 0x61);
/* затем обратно включаем ее */
outb(tmp,0x61);
}
/* ввод из порта */
extern inline unsigned char inb(unsigned short port)
{
unsigned char __v;
__asm__ __volatile__ ("inb %w1, %0" : "=a" (__v) : "Nd" (port));
return __v;
}
/* вывод в порт */
extern inline void outb(unsigned char value, unsigned short port)
{
__asm__ __volatile__ ("outb %b0, %w1" : : "a" (value), "Nd" (port));
}