CPU与汇编实验六实验报告Word格式.docx
- 文档编号:7980943
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:18
- 大小:157.38KB
CPU与汇编实验六实验报告Word格式.docx
《CPU与汇编实验六实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《CPU与汇编实验六实验报告Word格式.docx(18页珍藏版)》请在冰点文库上搜索。
1.硬件环境:
计算机系统windows;
2.软件环境:
装有MASM、DEBUG、LINK、等应用程序。
三、实验涉及的主要知识单元
DOS功能调用中断(INT21H)提供了两类磁盘文件管理功能,一类是FCB(文
件控制块)方式,另一类是文件代号式存取方式。
对于文件的管理,实际上是对文件的读写管理,DOS设计了四种存取文件方式:
顺序存取方式、随机存取方式、随机分块存取方式和代号法存取方式。
文件的处理步骤
A)写之前必须先建立文件、读之前必须先打开文件。
B)写文件之后一定要关闭文件。
通过关闭文件,使操作系统确认此
文件放在磁盘哪一部分,写后不关闭会导致写入文件不完整。
1、文件代号式存取方式:
当用户需要打开或建立一个文件时,必须提供文件标识符。
文件标识符用ASCIIZ字符串表示。
ASCIIZ字符串是指文件标识符的ASCII字符串后面再加1个“0”字符。
文件标识符的字符串包括驱动器名、路径名和文件名。
其格式为[d:
][path]filename[.exe]其中d为驱动器名,path为路径名,.exe为文件名后缀。
中断21H提供了许多有关目录和文件操作的功能,其中文件代号式存取方式
常用的功能如下:
2、操作目录的常用功能
39H——创建目录3BH——设置当前目录
3AH——删除目录47H——读取当前目录
有关中断功能的详细描述和调用参数在此从略,需要查阅者可参阅相关资料之目录控制功能。
3、用文件句柄操作文件的常用功能
3CH——创建文件4EH——查找到第一个文件
3DH——打开文件4FH——查找下一个文件
3EH——关闭文件56H——文件换名
3FH——读文件或设备57H——读取/设置文件的日期和时间
40H——写文件或设备5AH——创建临时文件
41H——删除文件5BH——创建新文件
42H——设置文件指针67H——设置文件句柄数(最多文件数)
43H——读取/设置文件属性6CH——扩展的打开文件功能
有关中断功能的详细描述和调用参数在此从略,需要查阅者可参阅相关资料之文件操作功能。
下面简单介绍几种常用的功能:
(1).建立文件(3CH)
功能:
按指定文件名建立文件。
入口参数:
(AH)=3CH,DS:
DX指向ASCIIZ字符串的段地址和偏移地址,(CX)=文件属性。
出口参数:
若操作成功,则CF=0,(AX)=文件代号;
若操作失败,则CF=1,(AX)=错误代码。
(2).打开文件(3DH)
打开由ASCIIZ串指定的文件。
(AH)=3DH,DS:
DX指向ASCIIZ字符串的段地址和偏移地址,(AL)=存取方式代码(0:
读文件,1:
写文件,2:
读、写文件)。
(3).关闭文件(3EH)
关闭文件代号指定的文件。
(AH)=3EH,(BX)=文件代号。
若操作成功,则CF=0;
(4).读文件(3FH)
按文件代号读取文件。
(AH)=3FH,(BX)=文件代号,(CX)=要读取的字节数;
DS:
DX指向接收数据缓冲区的段地址和偏移地址。
若操作成功,则CF=0,(AX)=实际读入字节数,(AX)=0,文件结束;
(5).写文件(40H)
按文件代号写文件。
(AH)=40H,(BX)=文件代号,(CX)=要写入的字节数;
DX指向存放写入信息数据缓冲区的段地址和偏移地址。
若操作成功,则CF=0,(AX)=写入字节数;
(6).移动文件指针(42H)
移动由文件代号标志的文件读写指针的位置
入口参数:
在bx预置文件代号,在cx:
dx双字中预置移动位移量,在al中预置移动方式移动方式:
00h移动后文件指针值=0+移动位移量
01h移动后文件指针值=当前文件指针值+移动位移量
02h移动后文件指针值=文件尾值+移动位移量
CF=0表示移动成功,此时CX:
DX双字中返回移动后文件指针值;
CF=1表示移动失败,此时AX中返回值为1表示移动方式无效,为6表示无效的文件代号。
(7).取/置文件属性(43H)
(AH)=43H,DS:
DX指向ASCIIZ串的段地址和偏移地址。
(AL)=0,取文件属性,(AL)=1,置文件属性;
置文件属性时,(CX)=新文件属性(低字节)。
若操作成功,则CF=0,若为取属性,(CX)=文件属性;
用FCB操作文件的常用功能和磁盘绝对读写中断请参阅相关资料,不作要求。
四、实验内容
1、编写一个创建子目录的程序,具体要求如下:
1)用键盘输入一个目录路径名,若输入的字符串为空,则程序运行结束;
2)若目录创建成功,显示成功信息,否则,显示创建失败信息。
2、编写一个创建文件的程序,其要求如下:
1)用键盘输入文件名(可包含路径),若输入的字符串为空,则程序运行结束;
2)若目录创建成功,显示成功信息,否则,显示创建失败信息;
3)从键盘输入20个字符存放到新建立的文件中。
3、利用文件句柄将两个文件合并成一个文件。
要求:
1)在第一个文件末尾处换行回车,插入“Thesecondfileasfollow:
”;
2)换行回车,把第二个文件内容存放在后面。
五、实验步骤及结果
1、创建子目录
(1)流程图
(2)、源代码
datasegment
handledw?
msg1db'
Pleaseinputthedirectoryroute:
'
0dh,0ah,'
$'
msg2db0dh,0ah,'
Error:
createdirectoryfailed!
msg3db0dh,0ah,'
Createdirectorysuccessful!
dirn_bufdb64
db?
dirn_strdb64dup(0)
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
leadx,msg1
movah,09h
int21h;
输出提示信息
leadx,dirn_buf
movah,0ah
int21h
movbl,[dirn_buf+1]
movbh,0
movdirn_str[bx],0;
输入目录路径,将串尾回车更换为00
cmpbyteptr[dirn_buf+1],0
jzexit;
输入为空,直接退出
leadx,dirn_str
movcx,00h
movah,39h
创建目录
jcerror;
错误
movhandle,ax;
保存文件代号
leadx,msg3
int21h;
;
输出成功信息
movbx,handle
movah,3eh
关闭文件
jmpexit
error:
leadx,msg2;
输出错误信息
exit:
movax,4c00h
codeends
endstart
(3)、实验结果
2、创建文件
Pleaseinputthefileroute:
createfilefailed!
Createfilesuccessful!
msg4db0dh,0ah,'
writefilefailed!
msg5db0dh,0ah,'
Pleaseinput20characters:
fn_bufdb64
fn_strdb64dup(0)
wf_bufdb64
wf_strdb64dup(0)
leadx,fn_buf
movbl,[fn_buf+1]
movfn_str[bx],0
cmpbyteptr[fn_buf+1],0
jzexit
leadx,fn_str
movah,3ch
jcerror
movhandle,ax
leadx,msg5
movah,09h
leadx,wf_buf
movah,0ah
int21h
leadx,wf_str
movcl,byteptr[wf_buf+1]
movch,0
movah,40h
jcwf_error
movbx,handle
leadx,msg2
wf_error:
leadx,msg4
(3)、实验结果
3、合并文件
(1)、流程图
DATASEGMENT
SFILEDB40,41DUP(?
)
DFILEDB40,41DUP(?
ASK1DB0AH,0DH,'
INPUTFIRSTFILE:
ASK2DB0AH,0DH,'
INPUTSECONDFILE:
WRITEDB0AH,0DH,'
thesecondfileasfollow:
0AH,0DH
COUNTXEQU$-WRITE
ERR1DB0AH,0DH,'
CREATEFILEERROR:
ERR2DB0AH,0DH,'
OPENFILEERROR:
ERR3DB0AH,0DH,'
READFILEERROR:
ERR4DB0AH,0DH,'
WRITEFILEERROR:
ERR5DB0AH,0DH,'
CLOSEFILEERROR:
ERR6DB0AH,0DH,'
DISKFULLERROR:
BUFRDW?
BUFFERDB512DUP(0)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,ES:
DATA
HANDLEPROCFAR
MOVAX,DATA;
20
MOVDS,AX
MOVES,AX
LEADX,ASK1
MOVAH,9
INT21H
LEADX,SFILE
CALLINPUT
MOVCL,SFILE+1
MOVCH,0
MOVSI,CX
MOVSFILE[SI+2],0
LEADX,SFILE+2
MOVAH,3DH
MOVAL,2
JNCMFH
OERR:
LEADX,ERR2
ERR:
MOVAH,4CH;
40
MFH:
MOVBX,AX
MOVBUFR,AX
MOVCX,0
MOVDX,0
MOVAH,42H
JNCNEXT
DECDX
NEXT:
MOVCX,DX
MOVDX,AX
MOVAL,0
LEADX,ASK2
LEADX,DFILE;
60
MOVCL,DFILE+1
MOVDFILE[SI+2],0
LEADX,DFILE+2
MOVCX,COUNTX
INCCX
CALLINPUTX
JNCRFILE
JMPOERR
RFILE:
RFILE1:
LEADX,BUFFER;
73
MOVCX,1024
MOVAH,3FH
JNCWFILE
LEADX,ERR3
JMPERR
WFILE:
ORAX,AX
JZEXIT
MOVCX,AX
LEADX,BUFFER
XCHGBX,BUFR
MOVAH,40H
JNCR_W
LEADX,ERR4
CMPAX,CX
JER_W
LEADX,ERR6
R_W:
JMPRFILE1
EXIT:
MOVAH,3EH
JNCEXIT1
EXIT0:
LEADX,ERR5
EXIT1:
JCEXIT0
MOVAH,4CH
HANDLEENDP
INPUTPROC
MOVAH,0AH
RET
INPUTENDP
INPUTXPROC
LEADX,WRITE
MOVAH,40H
INT21H
RET
INPUTXENDP
CODEENDS
ENDHANDLE
实验前:
实验后:
六、实验心得及体会
由于实验环境和机型不匹配,因此本次实验涉及的文件存取,都需要在安装环境里面进行,其他路径的存取均显示失败。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CPU 汇编 实验 报告