summaryrefslogtreecommitdiff
path: root/src/io
diff options
context:
space:
mode:
Diffstat (limited to 'src/io')
-rw-r--r--src/io/io.asm56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/io/io.asm b/src/io/io.asm
new file mode 100644
index 0000000..37ad7eb
--- /dev/null
+++ b/src/io/io.asm
@@ -0,0 +1,56 @@
+section .asm
+
+global insb
+global insw
+global outb
+global outw
+
+insb:
+ push ebp
+ mov ebp, esp
+
+ xor eax, eax ; Zero out eax
+ mov dx, [ebp+8]
+ in al, dx
+
+ mov esp, ebp
+ pop ebp
+ ret
+
+insw:
+ push ebp
+ mov ebp, esp
+
+ xor eax, eax ; Zero out eax
+ mov dx, [ebp+8]
+ in ax, dx
+
+ mov esp, ebp
+ pop ebp
+ ret
+
+outb:
+ push ebp
+ mov ebp, esp
+
+ xor eax, eax
+ mov ax, [ebp+12] ; val to write
+ mov dx, [ebp+8] ; to this port
+ out dx, al
+
+ mov esp, ebp
+ pop ebp
+ ret
+
+outw:
+ push ebp
+ mov ebp, esp
+
+ xor eax, eax
+ mov ax, [ebp+12] ; val to write
+ mov dx, [ebp+8] ; to this port
+ out dx, ax
+
+ mov esp, ebp
+ pop ebp
+ ret