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

📄 file.c

📁 从dos下装载内核
💻 C
字号:
#include "file.h"
/******************打开文件**********************
传入参数:FileName,以0结整的文件名
          Mode,打开方式,0,只读,1,只写,2,可读可写
输出成功:文件句柄,失败:0***************************/
int OpenFile(char * FileName,int Mode){
        int retvalue;
        _asm{
                pusha
                mov ax,Mode
                mov dx,FileName
                mov ah,3dh
                int 21h
                mov retvalue,ax
                popa
                jnc OpenOK
                mov retvalue,0/*失败,返回0*/
        OpenOK:
        }
        return retvalue;
}
/*******************关闭文件**********************
传入参数:FileHandle:文件句柄
出口:成功返回1,失败返回0
**************************************************/
int CloseFile(int FileHandle){
        int retvalue;
        _asm{
                pusha
                mov bx,FileHandle
                mov ah,3eh
                int 21h
                popa
                mov retvalue,1
                jnc OK
                mov retvalue,0
        OK:
        }
        return retvalue;
}
/*********************移动文件指针******************
传入参数:FileHandle:文件句柄,Off:相对偏移,SeekSet:方式
其中:  al=0表示从文件头移动,
        al=1表示从当前位置移动
        al=2表示从文件尾部移动
返回结果:1,成功,0,失败
***************************************************/
int FileSeek(int FileHandle,long Off,int SeekSet){
        int retvalue;
        _asm{
                pusha
                mov ax,SeekSet
                mov ah,42h
                mov bx,FileHandle
                mov dx,word ptr Off/*低16位偏移送dx*/
                mov cx,word ptr [Off+2]/*偏移高16位送cx*/
                int 21h
                popa
                mov retvalue,1
                jnc OK
                mov retvalue,0
        OK:
        }
        return retvalue;
}
void FileSize(int FileHandle,long *size){
	_asm{
		pusha
		mov ah,42h
		mov al,02h
		mov bx,FileHandle
		xor cx,cx
		xor dx,dx
		int 21h
		mov bx,size
		mov word ptr [bx],ax		
		mov word ptr [bx+2],dx
		popa
	}
}
int ReadFile(int FileHandle,void *Buf,int Nums){
        int retvalue;
        _asm{
                pusha
				push ds
				mov  ax,ss
				mov  ds,ax
                mov bx,FileHandle
                mov dx,Buf
                mov cx,Nums
                mov ah,3fh
                int 21h
				pop ds
                popa
                mov retvalue,1
                jnc OK
                mov retvalue,0
        OK:
        }
        return retvalue;
}





 

⌨️ 快捷键说明

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