All pastes #2048958 Raw Edit

Untitled

public text v1 · immutable
#2048958 ·published 2011-04-21 11:55 UTC
rendered paste body
BITS 16
ORG 0x7C00

SECTION .text

JMP SHORT Main

;-----------------------------------------------------------------------------;
; MAIN -- Devinez ce que ça fait ^^'                                          ;
;-----------------------------------------------------------------------------;
Main:
    MOV AL, 00010001b
    OUT 0x20, AL
    OUT 0xA0, AL

    MOV AL, 0x18
    OUT 0x21, AL
    MOV AL, 0x20
    OUT 0xA1, AL

    MOV AL, 00000100b
    OUT 0x21, AL
    MOV AL, 0x02
    OUT 0xA1, AL

    MOV AL, 00000001b
    OUT 0x21, AL
    OUT 0xA1, AL

    MOV AL, 11111110b
    OUT 0x21, AL
    MOV AL, 11111111b
    OUT 0xA1, AL

    MOV WORD [0x60], Isr_Pit
    MOV WORD [0x62], 0x0000
  M_il:
    HLT
    JMP M_il

;-----------------------------------------------------------------------------;
; ISR_PIT -- Gère les interruptions du PIT de façon originale                 ;
;-----------------------------------------------------------------------------;
Isr_Pit:
    CLI
    MOV SI, FirstString
    CALL Print_String
    MOV SI, SecondString
    CALL Print_String
    MOV AL, 0x20
    OUT 0x20, AL
    STI
    IRET

;-----------------------------------------------------------------------------;
; PRINT_STRING (DS:SI String) -- Imprime une châine de caractère à l'écran    ;
;-----------------------------------------------------------------------------;
Print_String:
    PUSH AX
    PUSH BX
    PUSH SI
    MOV AH, 0x0e
    MOV BH, 0x00
    MOV BL, 0x07
    MOV AL, [BYTE SI]
    CMP AL, 0x00
    JE PS_end
  PS_loop:
    INT 0x10
    ADD SI, 0x01
    MOV AL, [BYTE SI]
    CMP AL, 0x00
    JNE PS_loop
  PS_end:
    POP SI
    POP BX
    POP AX
    RET

SECTION .data

FirstString:
    db 'I caught an interruption from the PIT !!!', 0
SecondString:
    db '                                       ', 0