⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 boot.s

📁 阿基米德操作系统的源代码
💻 S
字号:

sectors = 18BOOTSEG = 0x07c0
INITSEG = 0x9000
SYSSEG  = 0x1000
SYSSIZE = 0X4000			
ENDSEG	= SYSSEG + SYSSIZE
.globl begtext, begdata, begbss, endtext, enddata, endbss.textbegtext:.databegdata:.bssbegbss:.textentry startstart:				mov	ax,#BOOTSEG	mov	ds,ax	mov	ax,#INITSEG	mov	es,ax	sub	si,si
	sub	di,di
	mov	cx,#256
	cld	rep	movsw	jmpi	go,INITSEGgo:	
	mov	ax,cs	mov	ds,ax	mov	es,ax	mov	ss,ax	mov	sp,#0x400			mov	ah,#0x03		xor	bh,bh	int	0x10		mov	cx,#24	mov	bx,#0x0007		mov	bp,#msg1	mov	ax,#0x1301		int	0x10	call	read_it	call	kill_motor	mov	ah,#0x03		xor	bh,bh	int	0x10			mov	[510],dx		mov	ax,#0x0000do_move:	mov	es,ax			add	ax,#0x1000	cmp	ax,#0x9000	jz	end_move	mov	ds,ax			sub	si,si
	sub	di,di	mov cx,#0x8000
	cld		rep	movsw	j	do_move
end_move:
	cli	mov		al,#0x11			out		#0x20,al			.word	0x00eb,0x00eb		out		#0xA0,al		
	.word	0x00eb,0x00eb	mov		al,#0x20			out		#0x21,al	.word	0x00eb,0x00eb	mov		al,#0x28			out		#0xA1,al
	.word	0x00eb,0x00eb	mov		al,#0x04			out		#0x21,al	.word	0x00eb,0x00eb	mov		al,#0x02			out		#0xA1,al
	.word	0x00eb,0x00eb	mov		al,#0x11			out		#0x21,al	.word	0x00eb,0x00eb	out		#0xA1,al
	.word	0x00eb,0x00eb	mov		al,#0xFB			out		#0x21,al	.word	0x00eb,0x00eb
	mov		al,#0xFF	out		#0xA1,al
	call	empty_8042
	mov		al,#0xD1		
	out		#0x64,al
	call	empty_8042
	mov		al,#0xDF		
	out		#0x60,al
	call	empty_8042

	mov		ax,cs		
	mov		ds,ax
	lidt	idt_48		
	lgdt	gdt_48		
	mov		ax,#0x0001		lmsw	ax				jmpi	0,8			empty_8042:	.word	0x00eb,0x00eb	in		al,#0x64		test	al,#2			jnz		empty_8042		retsread:	.byte 1	head:	.byte 0track:	.byte 0
read_it:
	mov	ax,#SYSSEG
	mov	es,ax		
	xor bx,bx		rp_read:	mov ax,es	cmp ax,#ENDSEG			jb	ok0_read	retok0_read:
	xor	ax,ax	mov al,#sectors	sub al,byte sread	mov cx,ax	shl cx,#9	add cx,bx	jnc ok1_read	je	ok1_read	xor ax,ax	sub ax,bx	shr ax,#9ok1_read:	call read_track	mov cx,ax	add al,byte sread	cmp al,#sectors	jne ok3_read
	xor byte head,#1
	jne	ok2_read
	inc	byte track
ok2_read:
	xor ax,ax
ok3_read:	mov byte sread,al	shl cx,#9	add bx,cx	jnc rp_read	mov ax,es	add ax,#0x1000	mov es,ax	xor bx,bx	jmp rp_readread_track:	push ax	push bx	push cx	push dx

	mov	ch,byte track
	mov	cl,byte sread
	inc	cl
	mov	dh,byte head
	mov	dl,#0	mov ah,#2	int 0x13	jc bad_rt
	pop dx	pop cx	pop bx	pop ax	ret
bad_rt:	
	mov ax,#0	mov dx,#0	int 0x13
	pop dx	pop cx	pop bx	pop ax	jmp read_trackkill_motor:	push	dx	mov		dx,#0x3f2	mov		al,#0	outb	pop		dx	retgdt:	.word	0,0,0,0			.word	0x07FF			.word	0x0000			.word	0x9A00			.word	0x00C0			.word	0x07FF			.word	0x0000			.word	0x9200			.word	0x00C0		idt_48:	.word	0				.word	0,0			gdt_48:	.word	0x800			.word	gdt,0x9			msg1:	.byte 13,10	.ascii "Loading system ..."	.byte 13,10,13,10
	.org  510
	.byte 0x55,0xaa
.textendtext:.dataenddata:.bssendbss:

⌨️ 快捷键说明

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