敬业的IT人 >> 编程开发 >> 其他语言 >> 汇编源码--getsect

汇编源码--getsect

敬业的IT人 互联网 佚名 2008-2-19 16:13:34
    ·汇编源码--BRK
    ·汇编源码--CLOCK
    ·汇编源码--BURNOUT
    ·汇编源码--DOSSYM
    ·汇编源码--circle
    ·汇编源码--DEV
    ·汇编源码--getspace
    ·汇编源码--CLEAR
    ·汇编源码--col
    ·汇编源码--gameport
;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 ;betweenthe 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 80Attachment failed to respond. ;hex 40SEEK operation failed. ;hex 20Controller failure. ;hex 10 Bad CRC on diskette read. ;hex 08DMA overrun on operation. ;hex 04Requested sector not found. ;hex 03Write attempt on write-protected diskette. ;hex 02Address mark not found. ;hex FFUnspecified (error other than those above). ; codesegmentbyte public;segment registers remain intact assumecs:code;all other registers will be destroyed publicgetsec getsec: pushbp;save old frame pointer movbp,sp;get new frame pointer movax,4[bp];put drive number into AL xorah,ah movcx,6[bp];number of sectors to fetch movdx,8[bp];logical record number of 1st sector mov bx,10[bp];pointer to transfer address int25h;BIOS call jcerror;error has occurred if carry flag = 1 moval,00H;NULL to indicate sucessful completion jmpdone error:cmpal,00H;detect unspecified error code 00H jnedone;...change to 0FFh if found to moval,0FFH;...differentiate it from success code done:xorah,ah;return AL only popf;remove flags int 0x25 left on stack popbp;restore original frame pointer ret;all done codeends end 进入讨论组讨论。
粤ICP备06119539号
Copyright CiscoSky.Org,Some Rights Reserved.
Email:me1228#tom.com