汇编语言的文件读取
来源:互联网 发布:知乎 小说推荐 编辑:程序博客网 时间:2024/05/21 17:02
;****************************************************;程序功能:读取文本文件; 首先根据文件指针移动获取文件大小,; 动态申请内存,最后读取文件内容写入; 缓冲区;****************************************************;****************************************************;程序平台说明:.MODEL SMALL,STDCALLOPTION CASEMAP:NONE;****************************************************;****************************************************;数据段定义.DATAstrFileName byte "D:\2.txt",0strOpenFailed byte "the file open failed",0strOpenFailedSize word $-strOpenFailedFileHandle word ?FileHi word ?FileLo word ?strBufferSize word ?strBuffer word ?;****************************************************;****************************************************;代码段定义.CODEmain proc ;装载数据段地址 mov ax,@data mov ds,ax ;打开文件 mov ax,716ch mov bx,0;只读模式 mov cx,0;普通属性 mov dx,1;打开文件 mov si,offset strFileName int 21h jc OpenFailed; mov FileHandle,ax ;开始获取文件大小 ;将文件指针移动到文件起始处 mov ah,42h mov bx,FileHandle mov al,0;从文件起始处开始计算 mov cx,0 mov dx,0 int 21h mov FileHi,dx mov FileLo,ax ;将文件指针移动到文件的末尾处,计算偏移量 mov ah,42h mov bx,FileHandle mov al,2 mov cx,0 mov dx,0 int 21h ;计算偏移量,获得文件大小 sub dx,FileHi mov FileHi,dx sub ax,FileLo mov FileLo,ax mov strBufferSize,ax ;暂时抹去高位 ;动态申请内存 mov ah,48h mov bx,strBufferSize int 21h mov strBuffer,ax ;将文件指针移动到文件起始处,开始读取内容 mov ah,42h mov bx,FileHandle mov cx,0 mov dx,0 mov al,0 int 21h ;开始读取文件内容 mov ah,3fh mov bx,FileHandle mov dx,offset strBuffer mov cx,strBufferSize int 21h ;显示内容有问题 mov ah,40h mov bx,1 mov dx, offset strBuffer mov cx,strBufferSize int 21h ;关闭文件 mov ah,3eh mov bx,FileHandle int 21h jmp exitOpenFailed: mov ah,40h mov bx,1 mov dx,offset strOpenFailed mov cx,strOpenFailedSize int 21h jmp exit;exit: mov ah,4ch int 21hmain endpend main;****************************************************
PS:
在汇编语言当中需要注意的是,当在打开,读取文件等操作时,是否成功的标志是放在cf当中的,于是乎就有了,一系列的JC
另外,我需要注意的就是读取文件时,需要自行移动文件指针,不会像高级语言那样会自动帮你移动文件指针,还有一点就是当你在使用缓冲区的时候,需要注意的就是,当缓
冲区使用完毕之后注意,清空缓冲区,否则在使用的时候会产生影响。一般是在最后一个结果当中@!!
还有就是这里面需要注意的就是,申请的内存地址是放在strBuffer中的,但是在使用时,需要注意的是要
mov dx,offset strBuffer;将文件内容读取到strBuffer指向的内存
mov dx,offset strBuffer;将内容输出到bx=1的控制台上
1 0
- 汇编语言的文件读取
- 汇编语言中用端口的读取与运用
- 汇编语言简易加密解密文件的实现
- 【计算机体系结构】汇编语言--cpu工作原理(指令的读取、执行)
- 汇编语言:请写一个程序把当前目录下的TEXT.TXT文件中的字符读出来显示在屏幕上,当遇到结束符时就停止读取。
- XML文件的读取
- Xml文件的读取
- 读取文件的代码
- properties 文件的读取
- 文件图标的读取
- XML文件的读取
- 文件的读取
- BMP文件的读取
- properties文件的读取
- Ini文件的读取
- 文件的读取
- RAW文件的读取
- 文件内容的读取
- 再自己电脑上不使用eclipse,直接通过tomcat运行项目
- 哈工大七头猪安全小组招贤榜~
- 软中断
- 错误提示:类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内
- #include <afxinet.h>在Release情况下,如果使用静态Lib,会报错
- 汇编语言的文件读取
- 菜鸟的Android学习之路11——时间日期拾取器
- Ibus-el出错IBus:error:("process :ibus-agent status:exit")的解决方法
- java 面试
- Lucene 3.6 的学习研究
- Java Web定时任务
- 【解决】GridView设置了 android:listSelector,选中某项背景色也会被选中
- Java多线程与并发库高级应用之信号量Semaphore
- 再加班要疯了