diff --git a/kaleid/kernel/cpu/isr.asm b/kaleid/kernel/cpu/isr.asm
new file mode 100644
index 0000000..2f779d5
--- /dev/null
+++ b/kaleid/kernel/cpu/isr.asm
@@ -0,0 +1,124 @@
+;=----------------------------------------------------------------------------=;
+; GNU GPL OS/K ;
+; ;
+; Desc: Interrupt Descriptor Table related functions ;
+; ;
+; ;
+; Copyright © 2018-2019 The OS/K Team ;
+; ;
+; This file is part of OS/K. ;
+; ;
+; OS/K is free software: you can redistribute it and/or modify ;
+; it under the terms of the GNU General Public License as published by ;
+; the Free Software Foundation, either version 3 of the License, or ;
+; (at your option) any later version. ;
+; ;
+; OS/K is distributed in the hope that it will be useful, ;
+; but WITHOUT ANY WARRANTY; without even the implied warranty of ;
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;
+; GNU General Public License for more details. ;
+; ;
+; You should have received a copy of the GNU General Public License ;
+; along with OS/K. If not, see . ;
+;=----------------------------------------------------------------------------=;
+
+%include "kaleid/kernel/cpu/isr.inc"
+
+global idtInit
+extern idtPtr
+extern isrHandlerPrint
+
+;;
+;; Loads the IDT
+;;
+idtInit:
+ lidt [idtPtr]
+ ret
+
+;;
+;; ISR handler
+;;
+isrHandler:
+ pushAll
+
+ mov ax, ds
+ push rax
+
+ mov ax, 0x10
+ mov ds, ax
+ mov es, ax
+ mov fs, ax
+ mov gs, ax
+
+ call isrHandlerPrint
+
+ pop rbx
+ mov ds, bx
+ mov es, bx
+ mov fs, bx
+ mov gs, bx
+
+ popAll
+ add rsp, 8
+ ;sti
+ iretq
+
+;; Divide Error Fault
+IsrWithoutErrCode 0
+
+;; Debug Exception Fault/trap
+IsrWithoutErrCode 1
+
+;; NMI Interrupt
+IsrWithoutErrCode 2
+
+;; Breakpoint Trap
+IsrWithoutErrCode 3
+
+;; Overflow Trap
+IsrWithoutErrCode 4
+
+;; Bound Range Exceeded Fault
+IsrWithoutErrCode 5
+
+;; Invalid Opcode Fault
+IsrWithoutErrCode 6
+
+;; Device Not Available or No Math Coprocessor Fault
+IsrWithoutErrCode 7
+
+;; Coprocessor Segment Overrun Fault
+IsrWithoutErrCode 9
+
+;; x87 FPU Floating Point or Math Fault
+IsrWithoutErrCode 16
+
+;; Alignment Check Fault
+IsrWithoutErrCode 17
+
+;; Machine Check Abort
+IsrWithoutErrCode 18
+
+;; SIMD Floating Point Fault
+IsrWithoutErrCode 19
+
+;; Virtualization Exception Fault
+IsrWithoutErrCode 20
+
+;; Double Fault Abort
+IsrWithErrCode 8
+
+;; Invalid TSS Fault
+IsrWithErrCode 10
+
+;; Segment Not Present Fault
+IsrWithErrCode 11
+
+;; Stack Segment Fault
+IsrWithErrCode 12
+
+;; General Protection Fault
+IsrWithErrCode 13
+
+;; Page Fault
+IsrWithErrCode 14
diff --git a/kaleid/kernel/cpu/isr.inc b/kaleid/kernel/cpu/isr.inc
new file mode 100644
index 0000000..c50e4ab
--- /dev/null
+++ b/kaleid/kernel/cpu/isr.inc
@@ -0,0 +1,59 @@
+;=----------------------------------------------------------------------------=;
+; GNU GPL OS/K ;
+; ;
+; Desc: Interrupt Descriptor Table related macros ;
+; ;
+; ;
+; Copyright © 2018-2019 The OS/K Team ;
+; ;
+; This file is part of OS/K. ;
+; ;
+; OS/K is free software: you can redistribute it and/or modify ;
+; it under the terms of the GNU General Public License as published by ;
+; the Free Software Foundation, either version 3 of the License, or ;
+; (at your option) any later version. ;
+; ;
+; OS/K is distributed in the hope that it will be useful, ;
+; but WITHOUT ANY WARRANTY; without even the implied warranty of ;
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;
+; GNU General Public License for more details. ;
+; ;
+; You should have received a copy of the GNU General Public License ;
+; along with OS/K. If not, see . ;
+;=----------------------------------------------------------------------------=;
+%macro pushAll 0
+ push rax
+ push rcx
+ push rdx
+ push rbx
+ push rbp
+ push rsi
+ push rdi
+%endmacro
+
+%macro popAll 0
+ pop rdi
+ pop rsi
+ pop rbp
+ pop rbx
+ pop rdx
+ pop rcx
+ pop rax
+%endmacro
+
+%macro IsrWithoutErrCode 1
+ global isr%1
+ isr%1:
+ cli
+ push byte 0
+ push byte %1
+ jmp isrHandler
+%endmacro
+
+%macro IsrWithErrCode 1
+ global isr%1
+ isr%1:
+ cli
+ push byte %1
+ jmp isrHandler
+%endmacro