汇编语言文件的读写源代码

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

;-------------------------------------

;汇编语言的文件的读写

;注意:这个C:\emu8086\MyBuild\123.txt绝度路径需要你安装emu8086演示

;若改成C:\123.txt之类的不行的因为汇编程序没有权限在硬盘上读取或者建立文件

;所以,这个路径必须是你的编译程序支持的就可以运行,否者显示错误。

;不过,大家看一下这个程序的注释,对考试有帮助的。

;---------------------------------

;-----------------------

.DATA

path_name db'D:\emu8086\MyBuild\123.txt',00 ;ASCIZ串最后一定以00结束

error db'Sorry,there is something ERROR!','$';错误信息

string db'I like Bakestball!','$';任意定义的字符串

codename db 10 dup(0) ;存储文件代号(程序操作是是多次使用的)

buffer db 13 dup(0)

;--------------------------

.CODE

main proc far

start:

mov ax,@DATA

mov ds,ax

;-----------------------

;1.首先新建一个新文件的操作(初始时文件不存在)

mov ah,3ch ;记住DOS的3c号功能是建立文件

mov cx,00 ;cx是文件属性,0号表示为默认属性

lea dx,path_name ;需要新建文件的绝对路径的偏移量传送到dx寄存器中

int 21h ;中断后,系统开始建立文件,若成功返回一个代号到ax中供以后使用若出错置位CF标志位

jc next ;jc是判断CF标志位的若cf=1表示新建文件出错跳转到next执行处理程序

lea bx,codename ;获取存储代号的地址偏移量

mov [bx],ax ;寄存器的间接寻址,将AX中的代号数据保存起到codename中

;---------------------

;2.对新建的文件的写操作(写入字符串数据)

lea si,codename ;回去代号所在的地址偏移量

mov ah,40h ;记住是DOS的40号功能

lea dx,string ;将需要传递的数据的地址偏移量传送给dx寄存器

mov bx,[si] ;bx接收的是文件代号数据([si]表示寄存器间接寻址方式)

mov cx,13h ;cx存储你打算写入的字符串的字节数

int 21h ;开启软中断

jc next ;jc是判断CF标志位的若cf=1表示对文件的写出错跳转到next执行处理程序

;----------------------

;3.完成了所有操作后,关闭文件的操作

lea si,codename ;回去代号所在的地址偏移量

mov ah,3fh ;3f号功能

mov bx,[si]

int 21h

jc next ;jc是判断CF标志位的若cf=1表示关闭文件出错跳转到next执行处理程序

;-----------------------------

;4.再次打开我们新建的文件,这一步获取文件的代号同时指定打开文件干什么mov ah,3dh ;3d号功能的调用

mov al,00h ;00指定了打开这个文件只为了读

lea dx,path_name ;ASCIZ串地址首地址

int 21h ;开启软中断

jc next ;jc是判断CF标志位的若cf=1表示打开文件过程出错跳转到next执行处理程序

lea bx,codename ;获取存储代号的地址偏移量

mov [bx],ax ;寄存器的间接寻址,将AX中的代号数据保存起到codename中

;---------------------------

;5.打开了文件开始读文件到缓冲区

lea si,codename

mov ah,3fh

lea dx,buffer ;读出的数据存储在buffer中

mov bx,[si] ;同样bx存储的是文件的代号

mov cx,13h ;你打算要读取的字节数根据需要任意设定

int 21h

jc next ;jc是判断CF标志位的若cf=1表示读取文件出错跳转到next执行处理程序

;----------------------

;6.完成了所有操作后,关闭文件的操作

lea si,codename

mov ah,3fh ;3f号功能可以关闭文件,打开文件后需要关闭文件

mov bx,[si] ;文件代号

int 21h

jc next ;jc是判断CF标志位的若cf=1表示关闭文件出错跳转到next执行处理程序

;-------------------------

;7.把读出的放在缓冲池的数据在屏幕上显示

mov dx,offset buffer ;获取偏移量

mov ah,09h

int 21h

;------------------------------

final:

mov ah,4ch ;返回DOS系统

int 21h

;----------------------------

;错误处理程序

next:

lea dx,error ;若没有建立文件则输出错误信息

mov ah,09

int 21h

jmp final

;---------------------------

main ENDP

end start;程序结束

相关文档
最新文档