📄 iolib.s
字号:
! Some I/O related routines like:! unsigned char inb(int port);! unsigned short inw(int port);! void outb(int port, int value);! void outw(int port, int value);! void rep_inb(int port, unsigned char *buf, size_t count);! void rep_inw(int port, unsigned short *buf, size_t count);! void rep_outb(int port, unsigned char *buf, size_t count);! void rep_outw(int port, unsigned short *buf, size_t count);! void intr_enable(void);! void intr_disable(void);.sect .text; .sect .rom; .sect .data; .sect .bss.sect .text.define _inb_inb: push ebp mov ebp, esp mov edx, 8(ebp) ! port xor eax, eax inb dx ! read 1 byte pop ebp ret.define _inw_inw: push ebp mov ebp, esp mov edx, 8(ebp) ! port xor eax, eax o16 in dx ! read 1 word pop ebp ret.define _outb_outb: push ebp mov ebp, esp mov edx, 8(ebp) ! port mov eax, 8+4(ebp) ! value outb dx ! output 1 byte pop ebp ret.define _outw_outw: push ebp mov ebp, esp mov edx, 8(ebp) ! port mov eax, 8+4(ebp) ! value o16 out dx ! output 1 word pop ebp ret.define _rep_inb_rep_inb: push ebp mov ebp, esp push edi mov edx, 8(ebp) ! port mov edi, 12(ebp) ! buf mov ecx, 16(ebp) ! byte count rep inb dx ! input many bytes pop edi pop ebp ret.define _rep_inw_rep_inw: push ebp mov ebp, esp push edi mov edx, 8(ebp) ! port mov edi, 12(ebp) ! buf mov ecx, 16(ebp) ! byte count shr ecx, 1 ! word count rep o16 in dx ! input many words pop edi pop ebp ret.define _rep_outb_rep_outb: push ebp mov ebp, esp push esi mov edx, 8(ebp) ! port mov esi, 12(ebp) ! buf mov ecx, 16(ebp) ! byte count rep outb dx ! output many bytes pop esi pop ebp ret.define _rep_outw_rep_outw: push ebp mov ebp, esp push esi mov edx, 8(ebp) ! port mov esi, 12(ebp) ! buf mov ecx, 16(ebp) ! byte count shr ecx, 1 ! word count rep o16 out dx ! output many words pop esi pop ebp ret.define _intr_disable_intr_disable: push ebp mov ebp, esp cli pop ebp ret.define _intr_enable_intr_enable: push ebp mov ebp, esp sti pop ebp ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -