易码技术论坛

 找回密码
 加入易码
搜索
查看: 363673|回复: 10

[求助]有关汇编的文件指针

[复制链接]
发表于 2006-1-20 17:49:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2006-1-20 18:22:00 | 显示全部楼层
举个例子吧

比如定义500000bytes的数据
发表于 2006-1-20 19:23:00 | 显示全部楼层
楼主是要实现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中为文件指针欲转移到的位置(从低位到高位)

 楼主| 发表于 2006-1-20 19:46:00 | 显示全部楼层
假如是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

对吗?
发表于 2006-1-21 18:01:00 | 显示全部楼层
对的。

LDA #$20



STA $84



LDA #$A1



STA $85



LDA #$07



STA $86



LDA #$00



STA $87

这段代码就没必要了

直接

LDA #¥20         



STA $08CD。。。

就可以了。

发表于 2006-1-22 12:52:00 | 显示全部楼层
指定文件打开位置时不是用到5个字节吗?远远不止64K啊.
发表于 2006-1-22 17:49:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2006-1-23 10:32:00 | 显示全部楼层
不要看到seek的参数有 5BYTE就认为可以SEEK 40位的内容了!!

前4BYTE是位置,最后一BYTE是位置和方向!


什么意思?
 楼主| 发表于 2006-1-23 14:00:00 | 显示全部楼层
以下是引用decoder在2006-1-20 17:49:00的发言:[BR]define 4,SeekOffset   ;4 lseek时文件偏移大小
define 1,SeekOrigin   ;1
      ;bit7 lseek时偏移方向
      ;bit0-2 lseek时起始偏移位置
发表于 2006-1-23 15:08:00 | 显示全部楼层
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[20];
    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();
}



 楼主| 发表于 2006-1-20 17:16:52 | 显示全部楼层 |阅读模式
用文件打开中断打开文件后,如果我要定位超过64KB以上的文件指针如何做?
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-3-29 20:56 , Processed in 0.009704 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表