汇编BIOS和DOS中断Word下载.docx

上传人:b****5 文档编号:19642052 上传时间:2023-01-08 格式:DOCX 页数:23 大小:412.75KB
下载 相关 举报
汇编BIOS和DOS中断Word下载.docx_第1页
第1页 / 共23页
汇编BIOS和DOS中断Word下载.docx_第2页
第2页 / 共23页
汇编BIOS和DOS中断Word下载.docx_第3页
第3页 / 共23页
汇编BIOS和DOS中断Word下载.docx_第4页
第4页 / 共23页
汇编BIOS和DOS中断Word下载.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

汇编BIOS和DOS中断Word下载.docx

《汇编BIOS和DOS中断Word下载.docx》由会员分享,可在线阅读,更多相关《汇编BIOS和DOS中断Word下载.docx(23页珍藏版)》请在冰豆网上搜索。

汇编BIOS和DOS中断Word下载.docx

若创建成功,则显示“CREATEFILEOK!

”,然后关闭该文件,返回DOS。

在创建及关闭FDATA.DAT文件时若遇到错误,则显示相关的错误提示信息;

(3)在D:

\assembly下新建filew.asm;

输入写文件的汇编程序源代码,实现功能为:

首先打开D:

\assembly\FDATA.DAT文件(由程序filec.asm创建);

接着在该文件中写入信息“WRITEDEMO!

”;

然后关闭它;

最后返回DOS。

若写入成功,则显示“WRITEFILEOK!

”。

在对FDATA.DAT文件操作时若遇到错误,则显示相关的错误提示信息;

(4)在D:

\assembly下新建filer.asm;

输入读文件的汇编程序源代码,实现功能为:

接着在该文件中读出信息(该信息应是由程序filew.asm写入的WRITEDEMO!

);

然后关闭FDATA.DAT文件;

若读取成功,则显示“READFILEOK!

在对FDATA.DAT文件操作时若遇到错误,则显示相关的错误提示信息。

为了验证其读取的正确性,在读文件的前后均调用了PUTS宏指令显示BUFFER中的信息,若程序运行正确,两次显示的信息应不相同;

(5)汇编以上三个程序(filec.asm、filew.asm、filer.asm)源代码,检查错误,错误可能是由宏指令库里的代码错误导致,应注意汇编程序的提示信息,并改正之,重新汇编;

(6)调试运行以上三个程序,并记录实验结果;

(7)完成实验报告。

五、实验过程原始记录(数据、图表、计算等)

1.新建文件管理功能宏指令库filefuc.mac:

filefuc.mac文件源码:

;

-----------------------------------

功能:

保存寄存器DX、CX、BX、AX

PUSHREGMACRO

PUSHDX

PUSHCX

PUSHBX

PUSHAX

ENDM

恢复寄存器AX、BX、CX、DX

POPREGMACRO

POPAX

POPBX

POPCX

POPDX

清屏

CLRSCRMACRO

PUSHREG

MOVAH,6

MOVAL,0

MOVBH,4EH

MOVCX,0

MOVDX,184FH

INT10H

POPREG

置光标

入口:

DH:

DL行,列

出口:

CURSORMACROROW,COL

MOVAH,2

MOVBH,0

MOVDH,ROW

MOVDL,COL

在指定位置显示字符串

S字符串变量(以$结束)

PUTSMACROROW,COL,S

CURSORROW,COL

LEADX,S

MOVAH,9

INT21H

给DS赋值

数据段名:

DATA

出口:

LOADDSMACRODATA

MOVAX,DATA

MOVDS,AX

返回DOS

RETURNMACRO

MOVAX,4C00H

创建文件

PNAME文件说明

MSG6文件创建失败时显示的字符串

AL=1成功,AL=0失败

NEWFILEMACROPNAME,MSG6

LOCALERROR

LOCALEXIT

MOVAH,3CH

MOVCX,0

LEADX,PNAME

JCERROR

MOVFILEHANDLE,AX

MOVAL,1

JMPEXIT

ERROR:

PUTS10,10,MSG6

MOV,AL,0

EXIT:

NOP

打开文件

MSG2文件打开失败时显示的字符串

OPENFILEMACROPNAME,MSG2

MOVAH,3DH

MOVAL,02H

PUTS10,10,MSG2

关闭文件

MSG4文件关闭失败时显示的字符串

CLOSEFILEMACROMSG4

MOVAH,3EH

MOVBX,FILEHANDLE

PUTS10,10,MSG4

读文件

LENGTH读字节数BUF缓冲区首址

MSG3文件打开失败时显示的字符串

READFILEMACROLENGTH,BUF,MSG3

MOVAH,3FH

MOVCX,LENGTH

LEADX,BUF

PUTS10,10,MSG3

写文件

LENGTH写字节数BUF缓冲区首址

MSG5写文件失败时显示的字符串

WRITEFILEMACROLENGTH,BUF,MSG5

MOVAH,40H

PUTS10,10,MSG5

2.新建filec.asm、filew.asm、filer.asm,分别按照实验步骤中的要求输入相应的代码:

filec.asm:

filew.asm:

filer.asm:

filec.asm文件源码:

INCLUDEFILEFUC.MAC

PURGEOPENFILE,WRITEFILE,READFILE

STACKSGSEGMENTSTACK'

S'

DW64DUP('

?

'

STACKSGENDS

DATASEGMENT

MSG0DB'

CREATEFILEOK!

'

$'

MSG4DB'

CLOSEFILEERROR!

MSG6DB'

CREATEFILEERROR!

FILEHANDLEDW0;

文件句柄

NAME1DB'

D:

\ASSEMBLY\FDATA.DAT'

0;

以0结尾的需创建的文件说明

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACKSG

MAINPROCFAR

LOADDSDATA;

给DS赋值

CLRSCR;

NEWFILENAME1,MSG6;

PUTS10,10,MSG0;

在指定位置显示信息

CLOSEFILEMSG4;

RETURN;

返回DOS

MAINENDP

CODEENDS

ENDMAIN

filew.asm文件源码:

INCLUDEFILEFUC.MAC

PURGENEWFILE,READFILE

WRITEFILEOK!

MSG2DB'

OPENFILEERROR!

MSG5DB'

WRITEFILEERROR!

BUFFERDB'

WRITEDEMO!

0DH,0AH

CTEQU$-BUFFER

FILEHANDLEDW0

0

DATAENDS

LOADDSDATA

CLRSCR

OPENFILENAME1,MSG2;

打开文件

WRITEFILECT,BUFFER,MSG5;

PUTS10,10,MSG0

CLOSEFILEMSG4

RETURN

ENDMAIN

filer.asm文件源码:

PURGENEWFILE,WRITEFILE

DW64DUP('

READFILEOK!

MSG3DB'

READFILEERROR!

BUFFERDB13DUP('

R'

),'

OPENFILENAME1,MSG2

PUTS10,10,BUFFER

READFILECT,BUFFER,MSG3;

读文件

PUTS12,10,BUFFER;

显示从D:

\ASSEMBLY\FDATA.DAT中读出的信息

PUTS14,10,MSG0

3.汇编以上三个源程序(filec.asm、filew.asm、filer.asm):

4.连接生成可执行文件(filec.obj、filew.obj、filer.obj):

filec.obj:

filew.obj:

filer.obj:

5.调试程序:

建立文件(filec.exe):

(1)首先反汇编源代码,程序最开始将先调用LOADDS宏指令为DS段赋值:

(2)从1550:

0005处开始将调用CLRSCR宏指令进行清屏操作:

(3)清屏后效果如下图,从1550:

001B处开始将调用NEWFILE宏指令创建指定文件:

(4)即将调用中断指令创建文件FDATA.DAT:

(5)可以看到,如果创建成功,则从1550:

0056处退出宏指令NEWFILE:

(6)从1550:

0057处开始将调用PUTS宏指令,输出字符串:

(7)可以看到在指定位置输出了字符串“CREATEFILEOK!

”,表明文件创建成功:

(8)从1550:

0079处开始将调用CLOSEFILE宏指令,关闭文件:

(9)文件关闭后,从1550:

00AD处开始将调用RETURN宏指令,返回DOS:

(10)程序完成,退出:

(11)在命令提示符下直接运行filec.exe效果如下:

(12)程序已经在指定目录下创建了FDATA.DAT文件:

写文件(filew.exe):

(1)程序开始时,从1552:

(2)清屏后效果如下图,将从1552:

001B处开始将调用OPENFILE宏指令打开指定文件:

(3)即将调用中断指令打开文件FDATA.DAT:

(4)可以看到,如果打开成功,则从1552:

0053处退出宏指令OPENFILE:

(5)从1552:

0054处开始将调用WRITEFILE宏指令将指定内容写入文件:

(6)当写文件成功后,将从1552:

008E处退出WRITEFILE宏指令:

(7)写文件完成后,则从1552:

008F处开始调用PUTS宏指令显示指定字符串:

(8)可以看到在指定位置输出了字符串“WRITEFILEOK!

”,表明写文件操作成功:

(9)从1552:

00B1处开始将调用CLOSEFILE宏指令,关闭文件:

(10)文件关闭后,从1552:

00E5处开始将调用RETURN宏指令,返回DOS:

(11)程序完成,退出:

(12)在命令提示符下直接运行filew.exe效果如下:

(13)程序已经在指定文件FDATA.DAT中写入了指定的内容:

读文件(filer.exe):

(3)从1552:

0053处退出OPENFILE宏指令,并准备调用PUTS宏指令输出当前缓冲区中的内容:

(4)可以看到,输出的当前缓冲区中的内容为RRRRRRRRRRRRR:

0076处开始将调用READFILE宏指令读取文件中的内容到缓冲区:

(6)从1552:

00B0处退出READFILE宏指令,并准备调用PUTS宏指令输出缓冲区中的内容:

(7)可以看到,读取文件内容到缓冲区后,其内容变为WRITEDEMO!

(8)然后调用PUTS宏指令,输出提示信息“READFILEOK!

”,表明读文件的操作成功:

00F5处开始将调用CLOSEFILE宏指令,关闭文件:

0129处开始将调用RETURN宏指令,返回DOS:

(12)在命令提示符下直接运行filer.exe效果如下:

六、实验结果、分析和结论(误差分析与数据处理、成果总结等。

其中,绘制曲线图时必须用计算纸)

1.在编写文件操作宏指令库时,要注意根据要求保护寄存器的值到堆栈,并在宏指令结束时按次序退栈,这样可以保证,无论程序中调用宏指令多少次,寄存器数据都始终保持一致,否则会导致不可预知的错误。

2.在进行文件的创建、打开、关闭、读写等操作时,要注意处理异常。

一旦操作失败,一定要运行指定的代码输出错误信息,否则一旦对文件操作失败,很可能导致程序出现异常或死循环,这种情况在程序设计中是非常有害的。

3.DOS系统把5个文件句柄分配给了标准输入输出设备。

既然设备和文件句柄之间建立了对应关系,那么用户就可以把这些设备视为文件一样处理,即可以通过文件句柄从输入设备中读数据或把数据写到输出设备上。

这是句柄方式访问文件的一个很大的好处,它方便了我们用程序对输入设备的操作,给我们的程序编写带来了很大的便利。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1