AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > 汇编语言

汇编源码--getsect

51自学网 2015-09-08 http://www.51zixue.net
;	Absolute Disk Read:  GETSEC  ( uses BIOS interrupt 0x25 );;	Interfaces to Computer Innovations C-86 "c" compiler V1.32 (& later);	See DOS 2.10 Technical Reference page 5-10, and Technical Reference;	page A-32.  This code was written by Mike Sirmans (05-25-84).;	--------------------------------------------------------------------;       THIS ROUTINE IS POWERFUL. (AND AS SUCH, IS DANGEROUS IN THE WRONG;       HANDS).  BE CAREFUL HOW YOU USE IT.  I ASSUME NO RESPONSIBILITY.;	--------------------------------------------------------------------;;	Synopsis:	int getsec(drive,numsec,begsec,buffer);			unsigned int drive;	/* 0=A, 1=B, etc. */;			unsigned int numsec;	/* Number of sectors to read */;			unsigned int begsec;	/* Beginning logical sector */;			char *buffer;		/* Transfer address */;;	Function:	The number of sectors specified are transferred ;			between	the given drive and the transfer address. ;			LOGICAL SECTOR NUMBERS are obtained by numbering;			each sector sequentially starting from track 0, head 0,;			sector 1 (logical sector 0) and continuing along the;			same head, then to the next head until the last sector;			on the last head of the track is counted.  Thus, ;			logical sector 1 is track 0, head 0, sector 2,;			logical sector 2 is track 0, head 0, sector 3,  & so on.;;	Returns:	NULL if the operation is successful.;			otherwise, error codes are as follows:;;			hex 80	Attachment failed to respond.;			hex 40	SEEK operation failed.;			hex 20	Controller failure.;			hex 10  Bad CRC on diskette read.;			hex 08	DMA overrun on operation.;			hex 04	Requested sector not found.;			hex 03	Write attempt on write-protected diskette.;			hex 02	Address mark not found.;			hex FF	Unspecified (error other than those above).;code	segment	byte public		;segment registers remain intact	assume	cs:code			;all other registers will be destroyed	public	getsecgetsec: push	bp			;save old frame pointer	mov	bp,sp			;get new frame pointer	mov	ax,4[bp]		;put drive number into AL	xor	ah,ah	mov	cx,6[bp]		;number of sectors to fetch	mov	dx,8[bp]		;logical record number of 1st sector	mov     bx,10[bp]		;pointer to transfer address	int	25h			;BIOS call	jc	error			;error has occurred if carry flag = 1	mov	al,00H			;NULL to indicate sucessful completion	jmp	doneerror:	cmp	al,00H			;detect unspecified error code 00H	jne	done			;...change to 0FFh if found to 	mov	al,0FFH			;...differentiate it from success codedone:	xor	ah,ah			;return AL only	popf				;remove flags int 0x25 left on stack	pop	bp			;restore original frame pointer	ret				;all donecode	ends	end

 

 

 
上一篇:在弹出菜单的同时再次弹出菜单  下一篇:汇编源码--gameport