比如定义500000bytes的数据
楼主是要实现fseek功能吧?
这样就可以了:
: LDA #$00 ;
: STA $08D1 ;
: LDA $84
: STA $08CD ;
: LDA $85 ;
: STA $08CE ;
: LDA $86 ;
: STA $08CF ;
: LDA $87 ;
: STA $08D0 ;
: INT $0519 ;for nc3000
其中$84~$87中为文件指针欲转移到的位置(从低位到高位)
假如是500000
那么就是
LDA #$20
STA $84
LDA #$A1
STA $85
LDA #$07
STA $86
LDA #$00
STA $87
: LDA #$00 ;
: STA $08D1 ;
: LDA $84
: STA $08CD ;
: LDA $85 ;
: STA $08CE ;
: LDA $86 ;
: STA $08CF ;
: LDA $87 ;
: STA $08D0 ;
: INT $0519
对吗?
对的。
LDA #$20
STA $84
LDA #$A1
STA $85
LDA #$07
STA $86
LDA #$00
STA $87
这段代码就没必要了
直接
LDA #¥20
STA $08CD。。。
就可以了。
指定文件打开位置时不是用到5个字节吗?远远不止64K啊. 不要看到seek的参数有 5BYTE就认为可以SEEK 40位的内容了!!
前4BYTE是位置,最后一BYTE是位置和方向!
什么意思?
以下是引用decoder在2006-1-20 17:49:00的发言:define 4,SeekOffset ;4 lseek时文件偏移大小
define 1,SeekOrigin ;1
;bit7 lseek时偏移方向
;bit0-2 lseek时起始偏移位置
bit0-2 lseek时起始偏移位置
这个很不明白,LAVA也有类似的东东,不明白.SEEK只要指明位置不就行了,那个位移量干嘛用的?
fseek
原型: long fseek(char fp,long offset,char base);
功能: 文件指针定位
说明: 将句柄为fp的文件的位置指针移到以base所指出的位置为基准,以offset为位移量的位置
返回当前位置。若出错,返回-1。
举例:
char s[]="www.ggv.com.cn";
void main()
{
char fp;
char t;
if ((fp=fopen("/LavaData/tmp.dat","w+"))==0)
printf("创建文件失败!");
else {
printf("创建文件成功!");
fwrite(s,1,strlen(s)+1,fp);
fseek(fp,4,0);
fread(t,1,strlen(s)+1,fp);
printf("\n%s",t);
fclose(fp);
}
getchar();
}
[求助]有关汇编的文件指针
用文件打开中断打开文件后,如果我要定位超过64KB以上的文件指针如何做?
页:
[1]