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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? fat12_handler.asm

?? 可在Intel x86上執(zhí)行的最小OS,完全用組語撰寫 可做DISK IO,Process Scheduling...等
?? ASM
字號:
%include "orzmicro.inc"%include "macro.inc"%include "floppy_device.inc"%include "fat12_handler.inc"%include "console_library.inc"		struc s_bs.jmpBoot	resb 3.oem		resb 8.bytesPerSector	resw 1			; Bytes per sector.sectPerCluster	resb 1			; Sectors per cluster.resSectors	resw 1			; Reserved sectors at beginning.fatCopies	resb 1			; Fat copies.rootEntCnt	resw 1			; Root directory entries.totalSectors	resw 1			; Total sectors on disk.media		resb 1			; Media descriptor byte.sectPerFat	resw 1			; Sectors per FAT.sectPerTrack	resw 1			; Sectors per track.heads		resw 1			; Heads.hiddenSectors	resd 1			; Special hidden sectors.sectorHuge	resd 1.drive		resb 1			; Physical drive number		resb 1.extendedBPB	resb 1			; Extended boot record signature.volumeID	resd 1			; Volume serial number.volumeLabel	resb 11			; Volume label.fileSys	resb 8			; File system ID.msize		endstruc%define MAX_BLOCK_SIZE 0x1000%define MAX_FILES 32%define MODE_READ 1%define MODE_WRITE 2		struc s_file.mode		resb 1.dir_entry	resw 1.cluster	resw 1.fsize		resd 1.position	resw 1.data		resb 512.msize		endstruc		db "ORZEXE.0"		; Executable file revision 0 id		dd 0x1000		; Stack size		dd _DATA_LEN		; Data size[ORG -0x10][BITS 32]Start:		mov edi,msgBuf		mov edx,msgBuf_len		int i_GetMessage		jnz Process		xor ebx,ebx		xor ecx,ecx		xor edx,edx		mov eax,msg_Sleep		int i_SendMessageW		jmp StartProcess:	cmp eax,hndl_Init		jnz Process0		jmp InitProcess0:	cmp eax,hndl_Destroy		jnz Process1		jmp DestroyProcess1:	cmp eax,hndl_ReadFile		jnz Process2		jmp ReadFileProcess2:	cmp eax,hndl_GetFileSize		jnz Process3		jmp GetFileSizeProcess3:	cmp eax,hndl_Read		jnz Process4		jmp ReadProcess4:	cmp eax,hndl_CloseFile		jnz Process5		jmp CloseFileProcess5:Ok:		xor eax,eaxErr:		xor ecx,ecx		int i_ProcessMessage		jmp Start;---------------------------------------------------------------Init:		mov eax,[devTaskID]		and eax,eax		jz Init0		xor eax,eax		jmp ErrInit0:		mov eax,[msgBuf+shndl_Init.devTaskID]		mov [devTaskID],eax		mov eax,[msgBuf+shndl_Init.deviceID]		mov [deviceID],eax		;;;;		mov eax,[deviceID]		mov [msgBuf+sdev_ReadSector.deviceID],eax		xor eax,eax		mov [msgBuf+sdev_ReadSector.sectorL],eax		mov [msgBuf+sdev_ReadSector.sectorH],eax		mov ebx,[devTaskID]		mov eax,dev_ReadSector		mov esi,msgBuf		mov ecx,sdev_ReadSector.msize		mov edi,bootSect		mov edx,512		int i_SendMessageW		;;;;		mov ebx,[bootSect+s_bs.hiddenSectors]		movzx ecx,WORD [bootSect+s_bs.resSectors]		add ebx,ecx		mov [fatStart],ebx		; first FAT sector		movzx eax,BYTE [bootSect+s_bs.fatCopies]		mul WORD [bootSect+s_bs.sectPerFat]		add ebx,eax		mov [rootStart],ebx		; first ROOT sector		movzx eax,WORD [bootSect+s_bs.rootEntCnt]		shl eax,5		xor edx,edx		div WORD [bootSect+s_bs.bytesPerSector]		mov [sectPerRoot],eax		add eax,ebx		mov [dataStart],eax		;;;;		mov ebx,[fatStart]		movzx ecx,WORD [bootSect+s_bs.sectPerFat]		mov edi,fat		call ReadSectors		mov ebx,[rootStart]		mov ecx,[sectPerRoot]		mov edi,root		call ReadSectors		;;;;		mov edi,files+s_file.mode		xor al,al		mov ecx,MAX_FILESInit1:		mov [edi],al		add edi,DWORD s_file.msize		loop Init1		mov eax,1		xor ecx,ecx		int i_ProcessMessage		jmp Start;---------------------------------------------------------------ReadSectors:	and ecx,ecx		jnz ReadSectors1		retReadSectors1:	push ebx,ecx,edi		mov eax,[deviceID]		mov [msgBuf+sdev_ReadSector.deviceID],eax		mov [msgBuf+sdev_ReadSector.sectorL],ebx		xor eax,eax		mov [msgBuf+sdev_ReadSector.sectorH],eax		mov ebx,[devTaskID]		mov eax,dev_ReadSector		mov esi,msgBuf		mov ecx,sdev_ReadSector.msize		mov edx,512		int i_SendMessageW		pop edi,ecx,ebx		add edi,DWORD 512		inc ebx		loop ReadSectors1		ret;---------------------------------------------------------------Destroy:	jmp Ok;---------------------------------------------------------------ReadFile:	mov esi,msgBuf+shndl_FileName.fileName		call FindFile		cmp eax,0xFFFFFFFF		jz ReadFileE		push eax,esi		call FindFreeEntry		and edi,edi		jnz ReadFile0				mov eax,ehndl_NoFreeEntries		jmp ErrReadFile0:	pop esi,eax		mov [edi+s_file.mode],BYTE MODE_READ		mov [edi+s_file.dir_entry],ax		mov [edi+s_file.position],WORD 512		mov ax,[esi+26]		mov [edi+s_file.cluster],ax		mov eax,[esi+28]		mov [edi+s_file.fsize],eax		mov eax,ebx		xor ecx,ecx		int i_ProcessMessage		jmp StartReadFileE:	mov eax,ehndl_FileNotFound		jmp Err;---------------------------------------------------------------GetFileSize:	mov eax,DWORD [msgBuf]		cmp eax,MAX_FILES		jc GetFileSize0		xor eax,eax		jmp ErrGetFileSize0:	mov ebx,s_file.msize		mul ebx		add eax,files		mov esi,eax		mov al,[esi+s_file.mode]		and al,al		jnz GetFileSize1		xor eax,eax		jmp ErrGetFileSize1:	movzx eax,WORD [esi+s_file.dir_entry]		mov ebx,32		mul ebx		add eax,root		mov esi,eax		mov eax,[esi+28]		xor ecx,ecx		int i_ProcessMessage		jmp Start;---------------------------------------------------------------Read:		mov eax,DWORD [msgBuf+shndl_Read.fileID]		cmp eax,MAX_FILES		jc Read0		mov eax,ehndl_InvalidFileHandler		jmp ErrRead0:		mov ebx,s_file.msize		mul ebx		add eax,files		mov esi,eax		mov al,[esi+s_file.mode]		and al,al		jnz Read1		mov eax,ehndl_InvalidFileHandler		jmp ErrRead1:		mov eax,[msgBuf+shndl_Read.blockSize]		cmp eax,MAX_BLOCK_SIZE		jc Read3		mov eax,ehndl_InvalidBlockSize		jmp ErrRead3:		mov edx,[msgBuf+shndl_Read.blockSize]		mov edi,msgBuf		xor ecx,ecxRead4:		and edx,edx		jz Read2		mov eax,[esi+s_file.fsize]		and eax,eax		jnz Read5Read2:		xor eax,eax		mov esi,msgBuf		int i_ProcessMessage		jmp StartRead5:		mov eax,512		movzx ebx,WORD [esi+s_file.position]		sub eax,ebx		cmp eax,[esi+s_file.fsize]		jc Read10		mov eax,[esi+s_file.fsize]Read10:		and eax,eax		jz Read11		jmp Read7Read11:		movzx eax,WORD [esi+s_file.cluster]		cmp eax,0xFF8		jc Read6		xor eax,eax		; bad file size (file size > clusters * clusterSize)		jmp ErrRead6:		dec eax		dec eax			; cluster numbers start from 2		add eax,[dataStart]	; clusterSize == sectorSize == 512		push edi,ecx,edx,esi		mov [esi+s_file.data+sdev_ReadSector.sectorL],eax		xor eax,eax		mov [esi+s_file.data+sdev_ReadSector.sectorH],eax		mov eax,[deviceID]		mov [esi+s_file.data+sdev_ReadSector.deviceID],eax		add esi,s_file.data		mov edi,esi		mov ebx,[devTaskID]		mov eax,dev_ReadSector		mov ecx,sdev_ReadSector.msize		mov edx,512		int i_SendMessageW		pop esi		push esi				movzx eax,WORD [esi+s_file.cluster]		call GetFatElement		pop esi,edx,ecx,edi		mov [esi+s_file.cluster],ax		mov eax,[esi+s_file.fsize]		cmp eax,512		jc Read9		mov eax,512Read9:		mov ebx,[esi+s_file.fsize]		sub ebx,eax		mov [esi+s_file.fsize],ebx		xor ebx,ebxRead7:		cmp eax,edx		; edx - curr_blockSize		jc Read8		push ebx		add ebx,edx		mov [esi+s_file.position],bx		pop ebx		add ecx,edx		xchg ecx,edx		add esi,s_file.data		add esi,ebx		rep movsb		mov ecx,edx		xor edx,edx		jmp Read4Read8:		sub edx,eax		add ecx,eax		push ecx,esi		mov ecx,eax		add esi,s_file.data		add esi,ebx		rep movsb		pop esi,ecx		xor eax,eax		mov [esi+s_file.position],ax		jmp Read4;---------------------------------------------------------------GetFatElement:	mov esi,eax		add esi,esi		add esi,eax		shr esi,1		jnc GetFatElement1		add esi,fat		movzx eax,WORD [esi]		shr eax,4		retGetFatElement1:	add esi,fat		movzx eax,WORD [esi]		and ah,0x0F		ret;---------------------------------------------------------------CloseFile:	mov eax,DWORD [msgBuf]		cmp eax,MAX_FILES		jc CloseFile0		mov eax,ehndl_InvalidFileHandler		jmp ErrCloseFile0:	mov ebx,s_file.msize		mul ebx		add eax,files		mov esi,eax		mov al,[esi+s_file.mode]		and al,al		jnz CloseFile1		mov eax,ehndl_InvalidFileHandler		jmp ErrCloseFile1:	mov [esi+s_file.mode],BYTE 0		jmp Ok;---------------------------------------------------------------FindFreeEntry:	mov edi,files		mov ecx,MAX_FILES		xor ebx,ebxFindFreeEntry0:	mov al,[edi+s_file.mode]		and al,al		jz FindFreeEntry1		inc ebx		add edi,s_file.msize		loop FindFreeEntry0		xor edi,ediFindFreeEntry1:	ret;---------------------------------------------------------------fname:		times 8 db 0fext:		times 3 db 0FindFile:	mov ecx,8		mov edi,fnameFindFile0:	mov al,[esi]		inc esi		and al,al		jz FindFile1		cmp al,'.'		jz FindFile5				mov [edi],al		inc edi		loop FindFile0		mov al,[esi]		and al,al		jz FindFile3FindFileE:	xor eax,eax		dec eax		retFindFile1:	mov al,' 'FindFile2:	mov [edi],al		inc edi		loop FindFile2FindFile3:	mov al,' '		mov ecx,3FindFile4:	mov [edi],al		inc edi		loop FindFile4		jmp short FindFile10FindFile5:	mov al,' 'FindFile6:	mov [edi],al		inc edi		loop FindFile6		mov ecx,3FindFile7:	mov al,[esi]		inc esi		cmp al,'.'		jz FindFileE		and al,al		jz FindFile8		mov [edi],al		inc edi		loop FindFile7		mov al,[esi]		and al,al		jnz FindFileE		jmp short FindFile10FindFile8:	mov al,' 'FindFile9:	mov [edi],al		inc edi		loop FindFile9		;;;;FindFile10:	mov esi,root		xor ebx,ebx		movzx edx,WORD [bootSect+s_bs.rootEntCnt]FindFile11:	mov edi,fname		mov ecx,11		mov al,[esi]		and al,al		jz FindFile14		push esiFindFile12:	mov al,[esi]		cmp al,[edi]		jnz FindFile13		inc esi		inc edi		loop FindFile12		pop esi		mov eax,ebx		retFindFile13:	pop esi		add esi,32		inc ebx		dec edx		jnz FindFile11FindFile14:	jmp FindFileE;---------------------------------------------------------------devTaskID:	dd 0deviceID:	dd 0fatStart:	dd 0rootStart:	dd 0sectPerRoot:	dd 0dataStart:	dd 0%include "debug.inc";------------------------------------------------------------------------------------;;;; DATA;------------------------------------------------------------------------------------_DATA_START	equ $msgBuf		equ _DATA_STARTmsgBuf_len	equ MAX_BLOCK_SIZE_end_msgBuf	equ msgBuf+msgBuf_lenbootSect	equ _end_msgBuf_end_bootSect	equ bootSect+512fat		equ _end_bootSect_end_fat	equ fat+(9*512)root		equ _end_fat_end_root	equ root+(14*512)files		equ _end_root_end_files	equ files + (s_file.msize * MAX_FILES)_DATA_LEN	equ _end_files-_DATA_START

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美资源站| 国产精品拍天天在线| 成人美女在线视频| 亚洲成精国产精品女| 精品国产露脸精彩对白 | 美女看a上一区| 国产欧美一区二区在线| 3d动漫精品啪啪1区2区免费| 粗大黑人巨茎大战欧美成人| 99久久精品免费看国产免费软件| 日韩av一区二区在线影视| 亚洲欧美综合另类在线卡通| 久久亚洲影视婷婷| 在线不卡中文字幕| 色综合久久久久网| 成人avav影音| 国产成人综合在线观看| 麻豆精品一区二区综合av| 亚洲高清免费视频| 亚洲精品视频免费看| 国产精品毛片高清在线完整版| 日韩欧美在线一区二区三区| 欧美日韩高清影院| 91麻豆swag| 91亚洲精华国产精华精华液| 夫妻av一区二区| 国产高清在线精品| 麻豆精品一区二区综合av| 青青草97国产精品免费观看| 亚洲成人自拍网| 亚洲第一主播视频| 伊人开心综合网| 一区二区三区欧美亚洲| 综合欧美一区二区三区| 亚洲三级电影网站| 国产精品久久久久精k8| 中文字幕一区二区三区乱码在线| 中文字幕中文字幕一区二区| 亚洲国产精品精华液ab| 国产精品狼人久久影院观看方式| 中文在线一区二区| 亚洲国产电影在线观看| 中文子幕无线码一区tr | 五月天婷婷综合| 午夜影院久久久| 日日噜噜夜夜狠狠视频欧美人| 亚洲va欧美va人人爽| 性做久久久久久免费观看欧美| 亚洲国产成人av网| 人人精品人人爱| 国产一区久久久| 丁香激情综合五月| 91亚洲精华国产精华精华液| 欧美在线视频不卡| 欧美老年两性高潮| 欧美白人最猛性xxxxx69交| 久久综合久久综合久久| 国产精品伦理在线| 亚洲乱码国产乱码精品精98午夜| 亚洲国产精品一区二区尤物区| 日韩精品一级二级 | 久久亚洲捆绑美女| 国产日韩欧美精品综合| 亚洲乱码国产乱码精品精可以看| 婷婷国产在线综合| 激情深爱一区二区| eeuss鲁一区二区三区| 97精品国产露脸对白| 欧美日韩国产一区二区三区地区| 日韩视频免费观看高清完整版 | 亚洲午夜久久久久| 免费不卡在线视频| 国产91在线|亚洲| 91福利视频在线| 精品伦理精品一区| 亚洲特级片在线| 一区二区免费看| 精品一区二区影视| 色哟哟一区二区三区| 欧美一区二区三区小说| 亚洲国产成人在线| 五月综合激情婷婷六月色窝| 国产福利一区二区| 欧美视频一区二区三区四区| 久久婷婷综合激情| 一区二区免费看| 丰满少妇在线播放bd日韩电影| 欧美中文字幕一二三区视频| 久久综合资源网| 亚洲免费在线电影| 狠狠色狠狠色综合系列| 91蜜桃网址入口| 久久久久久99精品| 午夜精品aaa| caoporen国产精品视频| 欧美成人福利视频| 亚洲一区电影777| 成人开心网精品视频| 日韩欧美国产1| 亚洲特级片在线| 丁香桃色午夜亚洲一区二区三区| 欧美日韩精品是欧美日韩精品| 久久久久久夜精品精品免费| 日韩高清不卡在线| 色综合久久中文字幕综合网| 欧美激情在线免费观看| 麻豆专区一区二区三区四区五区| 色婷婷av一区二区| 久久精品久久综合| 91蜜桃网址入口| 中文字幕中文字幕中文字幕亚洲无线| 久久99国产精品免费| 51精品视频一区二区三区| 亚洲精品欧美二区三区中文字幕| 精品亚洲欧美一区| 日本怡春院一区二区| 在线观看日韩精品| 国产精品私人自拍| 国产一区二区三区精品视频| 欧美一区二区三区啪啪| 午夜久久久久久久久| 在线看国产一区| 亚洲乱码国产乱码精品精可以看| 波多野结衣91| 国产精品久久久久久一区二区三区| 国产精品一区在线观看你懂的| 精品日韩av一区二区| 人人狠狠综合久久亚洲| 777色狠狠一区二区三区| 婷婷成人激情在线网| 欧美日韩视频在线一区二区| 亚洲国产一二三| 日本道在线观看一区二区| 亚洲欧美一区二区久久| 99国产麻豆精品| 一区二区三区欧美亚洲| 欧美午夜片在线看| 亚洲 欧美综合在线网络| 欧美日韩国产天堂| 亚洲国产欧美日韩另类综合| 欧美午夜片在线观看| 三级精品在线观看| 精品国产污网站| 国产美女精品在线| 日本一区二区三区国色天香 | 中文一区一区三区高中清不卡| 国产精一品亚洲二区在线视频| 国产亚洲女人久久久久毛片| 菠萝蜜视频在线观看一区| 亚洲蜜桃精久久久久久久| 精品视频123区在线观看| 日韩av成人高清| 久久久三级国产网站| 99久久精品国产一区| 亚洲国产综合在线| 日韩欧美久久久| 成人一区二区三区在线观看| 中文字幕一区二区三区蜜月| 一本到高清视频免费精品| 五月天激情小说综合| 精品久久久久久久人人人人传媒 | 欧美一区二区三区色| 国产一区二区三区黄视频| 国产精品免费久久| 色天使色偷偷av一区二区| 日韩高清不卡一区二区三区| 国产日韩欧美精品综合| 在线观看亚洲一区| 蜜臀a∨国产成人精品| 国产精品理论在线观看| 欧美日韩国产精选| 激情五月婷婷综合网| 国产精品国产精品国产专区不片| 欧美少妇性性性| 国产一区二区毛片| 亚洲精品高清在线观看| 欧美精品一区男女天堂| 9色porny自拍视频一区二区| 天堂在线一区二区| 久久精品视频一区| 欧美色视频一区| 粉嫩欧美一区二区三区高清影视| 亚洲一区欧美一区| 久久精品视频在线看| 欧美精品丝袜久久久中文字幕| 久久av老司机精品网站导航| 自拍偷在线精品自拍偷无码专区| 欧美一区二区三区喷汁尤物| 99视频一区二区| 精东粉嫩av免费一区二区三区| 亚洲精品高清在线| 国产日产欧美一区| 欧美日韩大陆一区二区| 粉嫩av一区二区三区在线播放 | www.亚洲人| 精品一区二区成人精品| 亚洲一区二区三区中文字幕 | 欧美日韩一区不卡| 丁香网亚洲国际| 激情综合一区二区三区|