易码技术论坛

 找回密码
 加入易码
搜索
查看: 56985|回复: 2

[分享]在BASIC中利用汇编打开文件

[复制链接]
发表于 2005-4-9 11:07:00 | 显示全部楼层
给段详细的代码,我是自学的,看不懂
发表于 2005-4-9 16:45:00 | 显示全部楼层
友情支持一下
 楼主| 发表于 2005-4-9 09:33:13 | 显示全部楼层 |阅读模式
这个技术好像N多人都懂了,在这里班门弄斧大家不要笑啊。这里说的是NC3K上的,其它机型的中断不同。

流程:文件名->OPEN->SET->SEEK->READ/WRITE->CLOSE

不想切换输入法了,大家E文还好吧。

先是写入文件名,地址是$088D开始的,将文件名的ASCII码写入,注意不要将CHR$(31)也写进去,在这里建议用OPEN XXX FOR RANDOM AS1:FL=LOF(1):CLOSE #1,这个语句。这样可以很方便的得到文件大小,排除不存在的文件,最好之处是不用慢慢地POKE文件名

打开用INT$0515,在打开时,先要指明打开方式,地址是$08c9  , poke 入 $70,$80,$c0,分别是建立,读取,修改,当错误时,$08cc会被置为0.

然后设置文件载入长度和载入RAM的起始地址,设置的地址分别是$08c6--$08c7,$e0---$e1.例如,载入DAT图片到显存($19c0起),载入长度为1600BYTE.则将$E0设为$C0,$E1设为$19 ,并将1600换为16进制分高低位POKE入 $08c6--$08c7.然后调用SEEK中断,是05什么的,反正中断低位的十进制是25.

SEEK就是设置文件载入起点,一个1322BYTE长的文件,可以从它的0-----1321处读起,设置的地址在$08cd-----08d1,将想要的载入起点分高低位POKE入,比如上面说的载入DAT图片,从它的00地方载入,则将$08cd-----08d1都设为0.

然后是读取或写入,中断分别是$0516,$0518。写入的前提是你前面打开时选择了修改的方式,INT后,就会按前面的设置将文件载入一段RAM或将一段RAM的值写入文件相应地方.注,如果文件载入的起点+文件载入长度大于文件原长,则会加长文件.

最后不要忘了关闭文件,INT$0517就OK了.
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

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

GMT+8, 2025-4-29 12:17 , Processed in 0.012033 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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