亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? bootsect.s

?? Memtest86 is thorough, stand alone memory test for Intel/AMD x86 architecture systems. BIOS based m
?? S
字號:
/* *	 bootsect.s		Copyright (C) 1991, 1992 Linus Torvalds * * bootsect.s is loaded at 0x7c00 by the bios-startup routines, and moves * itself out of the way to address 0x90000, and jumps there. * * It then loads 'setup' directly after itself (0x90200), and the system * at 0x10000, using BIOS interrupts.  * * The loader has been made as simple as possible, and continuos * read errors will result in a unbreakable loop. Reboot by hand. It * loads pretty fast by getting whole tracks at a time whenever possible. * * 1-Jan-96 Modified by Chris Brady for use as a boot loader for MemTest-86. */#include "defs.h"ROOT_DEV = 0	.code16.section ".bootsect", "ax", @progbits_boot:# ld86 requires an entry symbol. This may as well be the usual one..globl	_main_main:	movw	$BOOTSEG, %ax	movw	%ax, %ds	movw	$INITSEG, %ax	movw	%ax, %es	movw	$256, %cx	subw	%si, %si	subw	%di, %di	cld	rep	movsw	ljmp	$INITSEG, $go - _bootgo:		movw	%cs, %ax	movw	$(0x4000-12), %dx	# 0x4000 is arbitrary value >= length of					# bootsect + length of setup + room for stack					# 12 is disk parm size# bde - changed 0xff00 to 0x4000 to use debugger at 0x6400 up (bde).  We# wouldn't have to worry about this if we checked the top of memory.  Also# my BIOS can be configured to put the wini drive tables in high memory# instead of in the vector table.  The old stack might have clobbered the# drive table.	movw	%ax, %ds	movw	%ax, %es	movw	%ax, %ss		# put stack at INITSEG:0x4000-12.	movw	%dx, %sp	/* *	Many BIOS's default disk parameter tables will not  *	recognize multi-sector reads beyond the maximum sector number *	specified in the default diskette parameter tables - this may *	mean 7 sectors in some cases. * *	Since single sector reads are slow and out of the question, *	we must take care of this by creating new parameter tables *	(for the first disk) in RAM.  We will set the maximum sector *	count to 18 - the most we will encounter on an HD 1.44.   * *	High doesn't hurt.  Low does. * *	Segments are as follows: ds=es=ss=cs - INITSEG, *		fs = 0, gs = parameter table segment */	pushw	$0	popw	%fs	movw	$0x78, %bx		# fs:bx is parameter table address	lgs	%fs:(%bx),%si		# gs:si is source	movw	%dx, %di		# es:di is destination	movw	$6, %cx			# copy 12 bytes	cld	rep	movsw %gs:(%si), (%di)	movw	%dx, %di	movb	$18, 4(%di)		# patch sector count	movw	%di, %fs:(%bx)	movw	%es, %fs:2(%bx)	movw	%cs, %ax	movw	%ax, %fs	movw	%ax, %gs	xorb	%ah, %ah		# reset FDC 	xorb	%dl, %dl	int	$0x13	# load the setup-sectors directly after the bootblock.# Note that 'es' is already set up.load_setup:	xorw	%dx, %dx			# drive 0, head 0	movw	$0x0002, %cx			# sector 2, track 0	movw	$0x0200, %bx			# address = 512, in INITSEG	movw	$(0x0200 + SETUPSECS), %ax	# service 2, nr of sectors						# (assume all on head 0, track 0)	int	$0x13				# read it	jnc	ok_load_setup			# ok - continue	pushw	%ax			# dump error code	call	print_nl	movw	%sp, %bp	call	print_hex	popw	%ax		xorb	%dl, %dl		# reset FDC	xorb	%ah, %ah	int	$0x13	jmp	load_setupok_load_setup:# Get disk drive parameters, specifically nr of sectors/track/* It seems that there is no BIOS call to get the number of sectors.  Guess * 18 sectors if sector 18 can be read, 15 if sector 15 can be read. * Otherwise guess 9 */	xorw	%dx, %dx			# drive 0, head 0	movw	$0x0012, %cx			# sector 18, track 0	movw	$(0x200+(SETUPSECS*0x200)), %bx	# address after setup (es = cs)	movw	$0x0201, %ax			# service 2, 1 sector	int	$0x13	jnc	got_sectors	movb	$0x0f, %cl			# sector 15	movw	$0x0201, %ax			# service 2, 1 sector	int	$0x13	jnc	got_sectors	movb	$0x09, %cl	got_sectors:	movw	%cx, %cs:sectors - _boot	movw	$INITSEG, %ax	movw	%ax, %es# Print some inane message	movb	$0x03, %ah		# read cursor pos	xorb	%bh, %bh	int	$0x10		movw	$9, %cx	movw	$0x0007, %bx		# page 0, attribute 7 (normal)	movw	$msg1 - _boot, %bp	movw	$0x1301, %ax		# write string, move cursor	int	$0x10	# ok, we've written the message, now# we want to load the system (at 0x10000)	movw	$TSTLOAD, %ax	movw	%ax, %es		# segment of 0x010000	call	read_it	call	kill_motor	call	print_nl# after that (everyting loaded), we jump to# the setup-routine loaded directly after# the bootblock:	ljmp	$SETUPSEG,$0# This routine loads the system at address 0x10000, making sure# no 64kB boundaries are crossed. We try to load it as fast as# possible, loading whole tracks whenever we can.## in:	es - starting address segment (normally 0x1000)#sread:	.word 1+SETUPSECS	# sectors read of current trackhead:	.word 0			# current headtrack:	.word 0			# current trackread_it:	movw	%es, %ax	testw	$0x0fff, %axdie:		jne	die		# es must be at 64kB boundary	xorw	%bx,%bx		# bx is starting address within segmentrp_read:	movw	%es, %ax	subw	$TSTLOAD, %ax	# have we loaded all yet?	cmpw	syssize - _boot, %ax	jbe	ok1_read	retok1_read:	movw	%cs:sectors - _boot, %ax	subw	sread - _boot, %ax	movw	%ax, %cx	shlw	$9, %cx	addw	%bx, %cx	jnc	ok2_read	je	ok2_read	xorw	%ax, %ax	subw	%bx, %ax	shrw	$9, %axok2_read:	call	read_track	movw	%ax, %cx	add	sread - _boot, %ax	cmpw	%cs:sectors - _boot, %ax	jne	ok3_read	movw	$1, %ax	subw	head - _boot, %ax	jne	ok4_read	incw	track - _bootok4_read:	movw	%ax, head - _boot	xorw	%ax, %axok3_read:	movw	%ax, sread - _boot	shlw	$9, %cx	addw	%cx, %bx	jnc	rp_read	movw	%es, %ax	addb	$0x10, %ah	movw	%ax, %es	xorw	%bx, %bx	jmp	rp_read	read_track:	pusha	pusha	movw	$0xe2e, %ax 	# loading... message 2e = .	movw	$7, %bx	int	$0x10	popa		movw	track - _boot, %dx	movw	sread - _boot, %cx	incw	%cx	movb	%dl, %ch	movw	head - _boot, %dx	movb	%dl, %dh	andw	$0x0100, %dx	movb	$2, %ah		pushw	%dx				# save for error dump	pushw	%cx	pushw	%bx	pushw	%ax	int	$0x13	jc	bad_rt	addw	$8, %sp	popa	retbad_rt:		pushw	%ax				# save error code	call	print_all			# ah = error, al = read		xorb	%ah, %ah	xorb	%dl, %dl	int	$0x13	addw	$10, %sp	popa		jmp read_track/* *	print_all is for debugging purposes.   *	It will print out all of the registers.  The assumption is that this is *	called from a routine, with a stack frame like *	dx  *	cx *	bx *	ax *	error *	ret <- sp **/ print_all:	movw	$5, %cx		# error code + 4 registers	movw	%sp, %bpprint_loop:	pushw	%cx		# save count left	call	print_nl	# nl for readability	cmpb	5, %cl		# see if register name is needed	jae	no_reg	movw	$(0xe05	+ 'A' - 1), %ax	subb	%cl, %al	int	$0x10	movb	$'X', %al	int	$0x10	movb	$':', %al		int	$0x10no_reg:	addw	$2, %bp		# next register	call	print_hex	# print it	popw	%cx	loop	print_loop	ret	print_nl:	movw	$0xe0d, %ax	# CR	int	$0x10	movb	$0x0a, %al	# LF	int	$0x10	ret	/* *	print_hex is for debugging purposes, and prints the word *	pointed to by ss:bp in hexadecmial.*/print_hex:	movw	$4, %cx		# 4 hex digits	movw	(%bp), %dx	# load word into dxprint_digit:	rolw	$4, %dx		# rotate so that lowest 4 bits are used	movb	$0xe, %ah	movb	%dl, %al	# mask off so we have only next nibble	andb	$0xf, %al	addb	$'0', %al	# convert to 0-based digit	cmpb	$'9', %al	# check for overflow	jbe	good_digit	addb	$('A' - '0' - 10), %al	good_digit:	int	$0x10	loop	print_digit	ret/* * This procedure turns off the floppy drive motor, so * that we enter the kernel in a known state, and * don't have to worry about it later. */kill_motor:	pushw	%dx	movw	$0x3f2, %dx	xorb	%al, %al	outb	%al, %dx	popw	%dx	retsectors:	.word 0msg1:	.byte 13,10	.ascii "Loading".org 497setup_sects:	.byte SETUPSECS.org 500syssize:	.word _syssize.org 508root_dev:	.word ROOT_DEVboot_flag:	.word 0xAA55_eboot:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧洲精品成人久久奇米网| 6080日韩午夜伦伦午夜伦| 一本大道av伊人久久综合| 精品视频在线免费看| 日韩欧美成人一区二区| 国产色爱av资源综合区| 中文字幕在线不卡| 午夜精品免费在线| 国产精品亚洲一区二区三区在线| 91亚洲精品一区二区乱码| 欧美丰满高潮xxxx喷水动漫| 久久精品一区二区三区不卡牛牛| 亚洲最大成人综合| 免费观看成人鲁鲁鲁鲁鲁视频| 成人综合婷婷国产精品久久蜜臀| 欧洲一区二区三区在线| 26uuu精品一区二区| 亚洲精品国产无天堂网2021 | 国产老女人精品毛片久久| av成人老司机| 日韩欧美国产wwwww| 亚洲欧美综合在线精品| 美女视频一区在线观看| 91丨porny丨蝌蚪视频| 欧美一级一区二区| 亚洲男帅同性gay1069| 韩国v欧美v亚洲v日本v| 亚洲免费在线视频一区 二区| 麻豆精品国产传媒mv男同| 色综合久久久网| 久久久久久黄色| 日韩av中文在线观看| 91在线播放网址| 久久亚洲一区二区三区明星换脸| 亚洲第一主播视频| jvid福利写真一区二区三区| 日韩欧美一区二区视频| 亚洲一区二区三区三| 国产91色综合久久免费分享| 日韩一级欧美一级| 亚洲一本大道在线| 99在线精品观看| 国产欧美一二三区| 精品一区二区免费视频| 欧美日韩成人一区| 亚洲精品v日韩精品| 国产成人精品午夜视频免费| 欧美日本在线播放| 一区二区三区久久| 99久久综合99久久综合网站| 久久蜜桃一区二区| 免费观看在线综合色| 欧美日韩激情一区| 亚洲一区二区三区不卡国产欧美| 不卡的av电影| 国产欧美精品一区二区色综合| 美女高潮久久久| 69堂精品视频| 日韩精品亚洲专区| 欧美午夜一区二区三区免费大片| 亚洲日穴在线视频| 99国产精品99久久久久久| 久久九九99视频| 国产大陆亚洲精品国产| 久久精品网站免费观看| 国产在线不卡一卡二卡三卡四卡| 日韩精品一区二区三区中文精品 | 91精品国产麻豆| 亚洲成人精品一区| 欧美视频日韩视频在线观看| 亚洲尤物在线视频观看| 在线观看免费一区| 亚洲小说欧美激情另类| 欧美吻胸吃奶大尺度电影| 一区二区三区四区在线免费观看 | 亚洲精品ww久久久久久p站| 91免费观看国产| 一区二区三区在线观看网站| 91久久国产最好的精华液| 亚洲老司机在线| 欧美视频在线不卡| 日日夜夜免费精品| 日韩欧美一二三| 国产在线国偷精品产拍免费yy| 久久久久国产精品免费免费搜索| 国产91精品露脸国语对白| 欧美激情一区二区三区不卡| 成年人国产精品| 一区二区三区在线免费视频 | 秋霞国产午夜精品免费视频| 日韩一级片网址| 国产伦理精品不卡| 国产精品久久久久9999吃药| 色婷婷综合在线| 午夜在线电影亚洲一区| 日韩亚洲国产中文字幕欧美| 国产一区二区三区久久久| 国产精品欧美久久久久无广告 | 亚洲欧美自拍偷拍色图| 日本道精品一区二区三区| 五月婷婷激情综合网| 欧美电影免费观看高清完整版在线观看 | 美脚の诱脚舐め脚责91| 久久精品亚洲麻豆av一区二区| 国产精品三级av| 色综合久久天天综合网| 日韩精品免费视频人成| 精品成人免费观看| 成人午夜短视频| 亚洲一级电影视频| 日韩精品一区二区三区在线播放| 国产乱一区二区| 亚洲综合免费观看高清完整版| 欧美一区二区三区人| 成人性生交大片免费看中文网站| 亚洲精品视频在线观看网站| 91精品国产综合久久婷婷香蕉| 国产老妇另类xxxxx| 亚洲最新视频在线观看| 久久亚洲精品国产精品紫薇| 色综合久久久久综合| 蜜臀久久99精品久久久久宅男 | 国产乱码字幕精品高清av | 91精品国产综合久久婷婷香蕉 | 综合网在线视频| 欧美一级在线视频| 97精品国产97久久久久久久久久久久| 视频一区视频二区中文字幕| 国产欧美日韩视频一区二区| 欧美日韩mp4| 成人国产免费视频| 7777精品伊人久久久大香线蕉经典版下载 | 欧美精品在线视频| 99久久婷婷国产综合精品电影| 蜜臀av性久久久久av蜜臀妖精| 亚洲丝袜精品丝袜在线| 欧美大片一区二区三区| 91电影在线观看| 国产成人精品免费在线| 视频一区免费在线观看| 国产精品久久久一本精品| 日韩精品自拍偷拍| 欧美探花视频资源| 成人成人成人在线视频| 麻豆freexxxx性91精品| 亚洲无线码一区二区三区| 欧美国产日韩亚洲一区| 日韩写真欧美这视频| 91免费观看视频| 国产凹凸在线观看一区二区| 免费在线观看成人| 亚洲狠狠爱一区二区三区| 国产精品黄色在线观看| 亚洲精品一区二区三区99| 欧美喷水一区二区| 日本精品裸体写真集在线观看 | 亚洲人成电影网站色mp4| 欧美高清在线一区二区| 日韩欧美国产精品一区| 欧美综合欧美视频| 91美女片黄在线观看91美女| 国产白丝网站精品污在线入口| 久久99热这里只有精品| 日韩精品亚洲专区| 亚洲成人资源网| 亚洲一区在线电影| 一区二区三区欧美久久| 亚洲同性gay激情无套| 国产精品久久久久久亚洲伦| 久久久久久亚洲综合| 精品日韩av一区二区| 日韩一级二级三级| 91精品国产色综合久久ai换脸 | 99国产精品久久久久久久久久 | 综合精品久久久| 中文字幕国产一区二区| 亚洲国产精品成人综合色在线婷婷| 精品国内二区三区| 欧美精品一区二区三区一线天视频| 日韩三级.com| 欧美不卡一区二区三区| 日韩一级二级三级精品视频| 日韩午夜在线观看| 日韩欧美三级在线| 欧美xxxxx裸体时装秀| 欧美zozo另类异族| 久久亚洲欧美国产精品乐播 | 成人黄色小视频| www.欧美亚洲| 91麻豆国产精品久久| 欧美亚洲自拍偷拍| 欧美美女bb生活片| 日韩一区二区精品葵司在线 | 豆国产96在线|亚洲| 成人免费av网站| 91麻豆精品视频| 欧美色图在线观看| 欧美一级黄色大片| 欧美精品一区二区三区在线| 欧美国产成人在线|