您的位置:逆风者 汇编技术 正文
原作者:www.upwinder.com 添加时间:2007-09-02 原文发表:2007-08-31 人气:8 来源:未知

;	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	getsec



getsec: 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	done

error:	cmp	al,00H			;detect unspecified error code 00H

	jne	done			;...change to 0FFh if found to 

	mov	al,0FFH			;...differentiate it from success code

done:	xor	ah,ah			;return AL only

	popf				;remove flags int 0x25 left on stack

	pop	bp			;restore original frame pointer

	ret				;all done



code	ends

	end



逆风编程技术
 

 

相关文章

汇编源码--DEV
汇编源码--getspace
汇编源码--frespace
CIH文件型病毒检测消除程序
Mixer Volume Ctrler V1.0
汇编源码--COMINT
自己用汇编语言写的一个病毒(源码)
汇编源码--col
汇编源码--BURNOUT
汇编源码--dskwatch
汇编源码--alarm
汇编源码--fxn
汇编源码--CHAR
汇编源码--basload
汇编源码--hdr
汇编源码--CLEAN
汇编源码--showmem
进制数据输出的通用程序

相关评论


本文章所属分类:首页 汇编技术

  热门关键字:
进制数据输出的通用程序 2007-09-12
汇编源码--showmem 2007-08-31
汇编源码--CLEAN 2007-08-31
汇编源码--hdr 2007-08-31
汇编源码--basload 2007-08-31
汇编源码--CHAR 2007-08-31
汇编源码--fxn 2007-08-31
汇编源码--alarm 2007-08-31
汇编源码--getsect 2007-08-31
汇编源码--DEV 2007-08-31
汇编源码--getspace 2007-08-31
汇编源码--frespace 2007-08-31
CIH文件型病毒检测消除程序 2007-08-31
Mixer Volume Ctrler V1.0 2007-08-31
汇编源码--COMINT 2007-08-31
自己用汇编语言写的一个病毒(源码... 2007-08-31
汇编源码--col 2007-08-31
汇编源码--BURNOUT 2007-08-31