serial_init.s

来自「阿基米德操作系统的源代码」· S 代码 · 共 82 行

S
82
字号

///////////////////////////////////////////////////////////////////////////////

COM_RDR		=	0x3F8
COM_THR		=	0x3F8
COM_IER		=	0x3F9
COM_BRDL	=	0x3F8
COM_BRDH	=	0x3F9
COM_IIR		=	0x3FA
COM_FCR		=	0x3FA
COM_LCR		=	0x3FB
COM_MCR		=	0x3FC
COM_LSR		=	0x3FD
COM_MSR		=	0x3FE

.globl serial_init

.align 4
serial_init:
	pushl	%edx
	pushl	%eax

	movw	$COM_MCR, %dx
	movb	$0x00, %al
	outb	%al, %dx

	movw	$COM_LCR, %dx
	movb	$0x9f, %al
	outb	%al, %dx

	movw	$COM_BRDL, %dx
	movw	serial_BAUD, %ax
	outb	%al, %dx

	movw	$COM_BRDH, %dx
	movb	%ah, %al
	outb	%al, %dx

	movw	$COM_LCR, %dx
	movb	$0x1f, %al
	outb	%al, %dx

	movw	$COM_RDR, %dx
	inb		%dx, %al

	movw	$COM_LSR, %dx
	inb		%dx, %al

	movw	$COM_LSR, %dx
	movb	$0x60, %al
	outb	%al, %dx

	movw	$COM_MSR, %dx
	inb		%dx, %al

	movw	$COM_MSR, %dx
	movb	$0x00, %al
	outb	%al, %dx

	movw	$COM_IER, %dx
	movb	$0x07, %al
	outb	%al, %dx

	movw	$COM_IIR, %dx
	inb		%dx, %al
	inb		%dx, %al
	inb		%dx, %al

	movw	$COM_MCR, %dx
	movb	$0x08, %al
	outb	%al, %dx

	popl	%eax
	popl	%edx

	ret

///////////////////////////////////////////////////////////////////////////////


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?