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

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

?? setup.s

?? 操作系統實驗一到四 哈爾濱工業大學計算機學院的
?? S
字號:
!!	setup.s		(C) 1991 Linus Torvalds!! setup.s is responsible for getting the system data from the BIOS,! and putting them into the appropriate places in system memory.! both setup.s and system has been loaded by the bootblock.!! This code asks the bios for memory/disk/other parameters, and! puts them in a "safe" place: 0x90000-0x901FF, ie where the! boot-block used to be. It is then up to the protected mode! system to read them from there before the area is overwritten! for buffer-blocks.!! NOTE! These had better be the same as in bootsect.s!INITSEG  = 0x9000	! we move boot here - out of the waySYSSEG   = 0x1000	! system loaded at 0x10000 (65536).SETUPSEG = 0x9020	! this is the current segment.globl begtext, begdata, begbss, endtext, enddata, endbss.textbegtext:.databegdata:.bssbegbss:.textentry startstart:! ok, the read went well so we get current cursor position and save it for! posterity.	mov	ax,#INITSEG	! this is done in bootsect already, but...	mov	ds,ax	mov	ah,#0x03		   	xor	bh,bh   	int	0x10	mov 	ax,cs	mov 	es,ax	mov	cx,#25			! 字符串長度   	mov	bx,#0x000B		! page 0, attribute B   	mov	bp,#msg2   	mov	ax,#0x1301		! write string, move cursor   	int	0x10	mov	ah,#0x03	! read cursor pos	xor	bh,bh	int	0x10		! save it in known place, con_init fetches	mov	[0],dx		! it from 0x90000.! Get memory size (extended mem, kB)內存大小位置	mov	ah,#0x88	int	0x15	mov	[2],ax
	mov	ah,#0x03		
   	xor	bh,bh
   	int	0x10
	mov ax,cs
	mov es,ax
	mov	cx,#12			! 字符串長度   	mov	bx,#0x0006		! page 0, attribute 8 
   	mov	bp,#msg3
   	mov	ax,#0x1301		! write string, move cursor
   	int	0x10   call print_bx
   	mov	ah,#0x03		
   	xor	bh,bh
   	int	0x10
	mov 	ax,cs
	mov 	es,ax
	mov	cx,#4			! 字符串長度   	mov	bx,#0x0009		! page 0, attribute 9
   	mov	bp,#msg4
   	mov	ax,#0x1301		! write string, move cursor
   	int	0x10
	call print_nl! Get video-card data:	mov	ah,#0x0f	int	0x10	mov	[4],bx		! bh = display page	mov	[6],ax		! al = video mode, ah = window width! check for EGA/VGA and some config parameters	mov	ah,#0x12	mov	bl,#0x10	int	0x10	mov	[8],ax	mov	[10],bx	mov	[12],cx! Get hd0 data 從0x41處拷貝16個字節(磁盤參數表)	mov	ax,#0x0000	mov	ds,ax	lds	si,[4*0x41]	mov	ax,#INITSEG	mov	es,ax	mov	di,#0x0080	mov	cx,#0x10	rep			!重復16次	movsb! Get hd1 data	mov	ax,#0x0000	mov	ds,ax	lds	si,[4*0x46]	mov	ax,#INITSEG	mov	es,ax	mov	di,#0x0090	mov	cx,#0x10	rep	movsb! Check that there IS a hd1 :-)	mov	ax,#0x01500	mov	dl,#0x81	int	0x13	jc	no_disk1	cmp	ah,#3	je	is_disk1no_disk1:	mov	ax,#INITSEG	mov	es,ax	mov	di,#0x0090	mov	cx,#0x10	mov	ax,#0x00	rep	stosbis_disk1:! now we want to move to protected mode ...	cli			! no interrupts allowed !! first we move the system to it's rightful place	mov	ax,#0x0000	cld			! 'direction'=0, movs moves forwarddo_move:	mov	es,ax		! destination segment	add	ax,#0x1000	cmp	ax,#0x9000	jz	end_move	mov	ds,ax		! source segment	sub	di,di	sub	si,si	mov 	cx,#0x8000	rep	movsw	jmp	do_move! then we load the segment descriptorsend_move:			mov	ax,#SETUPSEG	! right, forgot this at first. didn't work :-)	mov	ds,ax	lidt	idt_48		! load idt with 0,0	lgdt	gdt_48		! load gdt with whatever appropriate! that was painless, now we enable A20	call	empty_8042	mov	al,#0xD1		! command write	out	#0x64,al	call	empty_8042	mov	al,#0xDF		! A20 on	out	#0x60,al	call	empty_8042! well, that went ok, I hope. Now we have to reprogram the interrupts :-(! we put them right after the intel-reserved hardware interrupts, at! int 0x20-0x2F. There they won't mess up anything. Sadly IBM really! messed this up with the original PC, and they haven't been able to! rectify it afterwards. Thus the bios puts interrupts at 0x08-0x0f,! which is used for the internal hardware interrupts as well. We just! have to reprogram the 8259's, and it isn't fun.	mov	al,#0x11		! initialization sequence	out	#0x20,al		! send it to 8259A-1	.word	0x00eb,0x00eb		! jmp $+2, jmp $+2	out	#0xA0,al		! and to 8259A-2	.word	0x00eb,0x00eb	mov	al,#0x20		! start of hardware int's (0x20)	out	#0x21,al	.word	0x00eb,0x00eb	mov	al,#0x28		! start of hardware int's 2 (0x28)	out	#0xA1,al	.word	0x00eb,0x00eb	mov	al,#0x04		! 8259-1 is master	out	#0x21,al	.word	0x00eb,0x00eb	mov	al,#0x02		! 8259-2 is slave	out	#0xA1,al	.word	0x00eb,0x00eb	mov	al,#0x01		! 8086 mode for both	out	#0x21,al	.word	0x00eb,0x00eb	out	#0xA1,al	.word	0x00eb,0x00eb	mov	al,#0xFF		! mask off all interrupts for now	out	#0x21,al	.word	0x00eb,0x00eb	out	#0xA1,al! well, that certainly wasn't fun :-(. Hopefully it works, and we don't! need no steenking BIOS anyway (except for the initial loading :-).! The BIOS-routine wants lots of unnecessary data, and it's less! "interesting" anyway. This is how REAL programmers do it.!! Well, now's the time to actually move into protected mode. To make! things as simple as possible, we do no register set-up or anything,! we let the gnu-compiled 32-bit programs do that. We just jump to! absolute address 0x00000, in 32-bit protected mode.	mov	ax,#0x0001	! protected mode (PE) bit	lmsw	ax		! This is it!die: 	jmp 	die
	jmpi	0,8		! jmp offset 0 of segment 8 (cs)! This routine checks that the keyboard command queue is empty! No timeout is used - if this hangs there is something wrong with! the machine, and we probably couldn't proceed anyway.empty_8042:	.word	0x00eb,0x00eb	in	al,#0x64	! 8042 status port	test	al,#2		! is input buffer full?	jnz	empty_8042	! yes - loop	retprint_bx:
!以16進制方式打印棧頂的16位數
	push 	ax
	push 	cx
	push 	dx
print_hex:
	mov	cx,#4 		! 4個十六進制數字    	mov	dx,[2]	! 將(bp)所指的值放入dx中,如果bp是指向棧頂的話print_digit:
    	rol	dx,#4		! 循環以使低4比特用上 !! 取dx的高4比特移到低4比特處。    	mov	ax,#0xe0f 	! ah = 請求的功能值,al = 半字節(4個比特)掩碼。    	and	al,dl 		! 取dl的低4比特值。    	add	al,#0x30 	! 給al數字加上十六進制0x30
    	cmp	al,#0x3a
    	jl	outp  		!是一個不大于十的數字
    	add	al,#0x07  	!是a~f,要多加7
outp: 
   	int	0x10
   	loop	print_digit
	pop	dx
	pop	cx
	pop	ax
   	ret

!打印回車換行
print_nl:
	push	ax
    	mov	ax,#0xe0d 	! CR
    	int	0x10
    	mov	al,#0xa 	! LF
    	int	0x10
	pop 	ax    	
	ret
gdt:	.word	0,0,0,0		! dummy	.word	0x07FF		! 8Mb - limit=2047 (2048*4096=8Mb)	.word	0x0000		! base address=0	.word	0x9A00		! code read/exec	.word	0x00C0		! granularity=4096, 386	.word	0x07FF		! 8Mb - limit=2047 (2048*4096=8Mb)	.word	0x0000		! base address=0	.word	0x9200		! data read/write	.word	0x00C0		! granularity=4096, 386idt_48:	.word	0			! idt limit=0	.word	0,0			! idt base=0Lgdt_48:	.word	0x800		! gdt limit=2048, 256 GDT entries	.word	512+gdt,0x9	! gdt base = 0X9xxxxmsg2:	.byte 13,10	.ascii "Now we are in SETUP"	.byte 13,10,13,10

msg3:
    .ascii "Memory SIZE:"
msg4:
    .ascii "KB"
	.byte 13,10	.textendtext:.dataenddata:.bssendbss:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色哟哟一区二区在线观看| 亚洲一区二区三区四区在线免费观看| 蜜桃av噜噜一区| 欧美一区二区三区四区五区| 久久99精品久久只有精品| 欧美大片顶级少妇| 成人午夜视频免费看| 中文字幕在线视频一区| 日本乱人伦一区| 日韩电影免费在线观看网站| 欧美成人三级在线| 成人影视亚洲图片在线| 亚洲欧美自拍偷拍色图| 欧美性受xxxx黑人xyx| 日韩精品成人一区二区三区| 精品国产人成亚洲区| 成人av电影在线播放| 一区二区三区视频在线看| 欧美性猛交一区二区三区精品| 日韩精品五月天| 久久久不卡影院| 91国偷自产一区二区使用方法| 日本伊人色综合网| 国产人成一区二区三区影院| 欧美国产丝袜视频| 色88888久久久久久影院野外| 日本伊人色综合网| 国产精品久久久久久久久搜平片| 欧美视频一区二区三区在线观看| 久久精品噜噜噜成人av农村| 国产精品国产精品国产专区不片 | 欧洲国产伦久久久久久久| 天天亚洲美女在线视频| 久久午夜电影网| 欧美三级一区二区| 国产成人精品影视| 午夜免费欧美电影| 国产精品丝袜一区| 欧美一二三区在线| 91热门视频在线观看| 国产综合久久久久久鬼色 | 亚洲免费伊人电影| 精品国产精品一区二区夜夜嗨| 91麻豆6部合集magnet| 蜜桃一区二区三区在线| 亚洲麻豆国产自偷在线| 久久久久久久久久久久久久久99| 欧美视频三区在线播放| 成人爱爱电影网址| 国产一区二三区| 日韩国产欧美三级| 成人黄色软件下载| 精品一区二区三区欧美| 亚洲成人午夜电影| 亚洲男人的天堂av| 国产精品久久国产精麻豆99网站| 日韩女优视频免费观看| 欧美精品九九99久久| 色婷婷久久综合| av一二三不卡影片| 国产99一区视频免费| 久久99久久精品| 蜜桃久久av一区| 日韩av网站免费在线| 亚洲成a天堂v人片| 亚洲精品国产无天堂网2021| 国产精品美女久久久久av爽李琼 | 蜜臀av性久久久久蜜臀aⅴ | 欧美中文字幕一区| 91免费看`日韩一区二区| 国产成人午夜视频| 国产美女av一区二区三区| 免费看欧美女人艹b| 午夜精品久久久久久| 亚洲国产精品自拍| 亚洲一区二区三区视频在线播放| 国产精品美日韩| 国产精品毛片大码女人| 欧美国产激情一区二区三区蜜月| 久久蜜桃香蕉精品一区二区三区| 日韩欧美激情在线| 久久夜色精品一区| 久久综合中文字幕| 国产日产精品1区| 国产精品久久久久影院亚瑟| 中文字幕高清一区| 亚洲人成人一区二区在线观看| 国产精品久久综合| 亚洲免费大片在线观看| 夜色激情一区二区| 琪琪久久久久日韩精品| 久久国产精品色| 成人高清视频在线观看| 91麻豆免费在线观看| 欧美色综合久久| 欧美一区二区视频在线观看2020| 欧美一区二区精美| 国产午夜三级一区二区三| 中文av一区二区| 成人激情开心网| 欧美性一二三区| 精品久久久三级丝袜| 日本一区二区三区四区在线视频| 日韩一区欧美小说| 午夜a成v人精品| 国产精品一区二区在线观看网站| 99久久久无码国产精品| 欧美日韩欧美一区二区| 日韩欧美视频在线| 中文字幕一区视频| 日韩制服丝袜av| 大尺度一区二区| 欧美日韩高清在线播放| 国产亚洲人成网站| 午夜激情综合网| 国产成人在线视频免费播放| 在线日韩av片| 久久久精品tv| 亚洲国产精品一区二区www在线| 寂寞少妇一区二区三区| 91视视频在线观看入口直接观看www| 欧美剧情片在线观看| 国产视频不卡一区| 日韩精品欧美精品| 91丨九色丨尤物| 精品剧情在线观看| 亚洲亚洲人成综合网络| 国产成人一区在线| 制服丝袜激情欧洲亚洲| 国产精品的网站| 久久狠狠亚洲综合| 91成人国产精品| 国产精品网站在线| 激情图区综合网| 欧美日韩一级大片网址| 国产精品久久99| 国产原创一区二区| 538在线一区二区精品国产| 国产精品美女www爽爽爽| 日本网站在线观看一区二区三区| 91一区二区在线观看| 三级精品在线观看| 91美女片黄在线| 国产精品丝袜久久久久久app| 免费成人小视频| 欧美精品一卡两卡| 亚洲主播在线观看| 一本大道久久a久久精二百 | 国产精品高清亚洲| 国产福利91精品| 精品乱码亚洲一区二区不卡| 五月激情综合网| 欧美三级电影在线看| 亚洲美女免费在线| 99精品视频中文字幕| 国产日韩高清在线| 国产精品一区二区黑丝| 欧美精品一区二区三区一线天视频| 日韩激情在线观看| 欧美妇女性影城| 日本91福利区| 日韩欧美专区在线| 久久69国产一区二区蜜臀| 欧美一卡二卡在线| 蜜乳av一区二区三区| 欧美一区二区在线视频| 蜜臀久久99精品久久久久宅男| 欧美日韩综合一区| 日韩1区2区3区| 日韩欧美一级精品久久| 久久99九九99精品| 日韩国产在线一| 日韩欧美国产一区二区三区| 日本欧美加勒比视频| 欧美一区二区三区在线视频| 蜜桃视频在线观看一区| 精品乱码亚洲一区二区不卡| 国产一区二区三区观看| 中文字幕乱码一区二区免费| 成人免费毛片嘿嘿连载视频| 自拍偷拍亚洲综合| 欧美在线观看视频一区二区 | 国产精品卡一卡二卡三| 99精品视频免费在线观看| 一区二区成人在线视频 | 三级一区在线视频先锋| 欧美一区二区三区日韩视频| 久久福利视频一区二区| 国产午夜精品一区二区三区四区| aaa亚洲精品一二三区| 一区二区三区四区激情| 欧美一区日本一区韩国一区| 国产自产高清不卡| 中文字幕一区二区三区不卡 | 偷拍与自拍一区| 精品成人一区二区三区| av福利精品导航| 午夜a成v人精品| 国产农村妇女毛片精品久久麻豆 | 97超碰欧美中文字幕|