Traduction d'un programme en assembleur - ASM - Programmation
MarshPosté le 17-03-2004 à 09:38:34
Voila, je demande l'aide de tous ceux qui maitrisent l'assembleur. Je suis en BTS info en alternance et dans mon entreprise je dois écrire un driver clavier pour leur noyau temps réel. On m'a passé des sources qui doivent m'aider mais elles sont en assembleur et je dois programmer en C, donc si vous pouviez me traduire ces sources en francais (ou en C) ca m'aiderai carrément.
Initialize a PC/AT+ or PS/2 keyboard.
IF OPTION_KEYBOARD_PCAT Pcall KbdEnable ; enable keyboard. Pcall KbdFlush mov ax, 20 * 100h +KBCMD_RESET ; (AL) = reset keyboard command. Pcall KbdDataWrAck ; send to keyboard, get response (ACK). jne @f ; skip if no ACK.
mov ax, 255 * 100h +KBERR_TEST_OK Pcall KbdDataChk ; (AL) = keyboard BAT byte (AAh = Ok). jne @f ; not a match, skip.
mov ax, 20 * 100h +KBCMD_READ_ID ; (AL) = keyboard ID command. Pcall KbdDataWrAck ; send to keyboard, get response (ACK). jne @f ; skip if no ACK.
mov ax, 0 * 100h +KBERR_READ_ID Pcall KbdDataChk ; get keyboard ID first byte. jne @f ; not a match, skip.
mov ah, 0 Pcall KbdDataChk ; get keyboard ID second byte. jc @f ; read failure, skip.
Marsh Posté le 17-03-2004 à 09:38:34
Voila, je demande l'aide de tous ceux qui maitrisent l'assembleur. Je suis en BTS info en alternance et dans mon entreprise je dois écrire un driver clavier pour leur noyau temps réel. On m'a passé des sources qui doivent m'aider mais elles sont en assembleur et je dois programmer en C, donc si vous pouviez me traduire ces sources en francais (ou en C) ca m'aiderai carrément.
Initialize a PC/AT+ or PS/2 keyboard.
IF OPTION_KEYBOARD_PCAT
Pcall KbdEnable ; enable keyboard.
Pcall KbdFlush
mov ax, 20 * 100h +KBCMD_RESET ; (AL) = reset keyboard command.
Pcall KbdDataWrAck ; send to keyboard, get response (ACK).
jne @f ; skip if no ACK.
mov ax, 255 * 100h +KBERR_TEST_OK
Pcall KbdDataChk ; (AL) = keyboard BAT byte (AAh = Ok).
jne @f ; not a match, skip.
mov ax, 20 * 100h +KBCMD_READ_ID ; (AL) = keyboard ID command.
Pcall KbdDataWrAck ; send to keyboard, get response (ACK).
jne @f ; skip if no ACK.
mov ax, 0 * 100h +KBERR_READ_ID
Pcall KbdDataChk ; get keyboard ID first byte.
jne @f ; not a match, skip.
mov ah, 0
Pcall KbdDataChk ; get keyboard ID second byte.
jc @f ; read failure, skip.
or KeyboardStatus, KEYBOARDSTATUS_101
merci beaucoup!