如果用汇编语言读写文件,一般要简化这些要求郑纤,比如假设只针对Windows的FAT格式的存储格式,汇编程序需要能解析FAT格式硬盘的存储格式,从FAT格式中能访问到文件实际存储位置,这就使汇编很麻烦了,汇编不是来做这种复杂而人盯丛毕性化的工作的
普通汇编程序要读写硬盘,一般采用无格式的方式,需要自己设计简单的文件管理,这样可以快速简单地保存数据到硬盘中,但保存的数据无法凯芹简单被windows等磁盘 *** 作系统读取,还需要转换才行。
AL是打开方式:8位2进制,当第0到2位为:
000的时候是只读,001是写方式,010是读/写方式
第3位保留,值为0
第4到6位为共享模式:
000:兼容模式
001:不共享
010:拒绝写
011:拒启袭绝读
100:不拒绝任何 *** 作
第7位是继承标志启旁拍,1就继承句柄
例如:我想打开一个文件,读/写方式,拒绝不允许别的程序写入,则AL为:
0 010 0 010 b
=22h
则 mov al,22h 即可
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
能不能打开文件悄羡和文件扩展名没有必然联系
之所以提示访问被拒绝,是由于文件正在被其他程序打开(独占式的),试着退出打开这个c文件的程序,然后再试试汇编看能不能打开了
-=-=-=-=-=-=-=-=-=-=-=-
lea dx,FILENAME
mov al,10h
mov ah,3dh
int 21h
执行完这些语句后如果打开失败,AX返回的就是错误号,你可以通过这些错误号来查找下原因
无论是16位汇编还是32位汇编,都慎乱不需要和驱动打交道16位汇编下是用中断来访问硬盘的。 通过中断21H来实现文件和目录的管理。
32位汇编则是通过调用坦孝升系统提供的API函数来实现,由系统去处理让老实际的读写 *** 作。
反正我们写程序的并不需要知道硬盘的驱动。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)