最近在做汇编语言的文件管理实验时,发现几个有趣的问题。
就是在 mov ah,40h int 21h时,不论bx 的值是0还是1,都能讲内容输出到屏幕,仔细查看课本后,发现文件代号0是标准输入设备,1是标准输出设备。没想到二者都能起到这个作用。
因为一开始我把
filenum dw ?
而且使用
buf db '1','2','3'
mov bx,filenum
mov ah,40h
mov cx,10
lea dx,buf
int 21h
结果就直接输出了,愣了好一会儿,不过后来还是弄清楚是怎么回事了。
类似的还有3fh,3eh等,都是要在使用前考虑cx,bx的初值的,否则本以为它会关闭失败、读取失败的,结果却没有输出提示语句(这些自己额外添加),还以为是自己理解错了呢。
其实,只要换个没有的文件代号就行了,比如:12,这时肯定会提示失败(前提:未创建该文件),要不然就会以你的默认值为准,比如:0,关闭成功。
另外路径长度也要考虑,还有路径内出现的文件夹也要先建立。路径名还要必须是ASCIZ串,即以0为结尾。
最后要说的是在创建、打开、读取、写入、关闭文件等操作的执行过程中注意记录有用的返回值,以备以后所需。