汇编语言程序设计实验七 文件操作

更新时间:2024-01-02 09:20:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

上海应用技术学院 实验报告

实验报告

课程名称

汇编语言程序设计

实验项目

实验七 文件操作

一、目的及要求

1、掌握文件的建立、打开、关闭的方法。 2、 掌握文件的读写方法。

3、 建立一个文件,存放到指定的路径下,理解文件代号的作用。 4、 将内存某区域AREA1中的内容写入该文件。

二、 实验准备 认真复习第六章。

三、 实验内容

1、编写程序,在D盘根目录下建立一个名为TEST1.TXT和TEST2.TXT的文件,建立成功后,在TEST1.TXT文件中写入写入入你的学号,在TEST2.TXT中写入‘Hello!’。并且在屏幕上显示“SUCCESS”。

2、打开FILE1.TXT文本文件,将文件的内容通过显示器显示出来。

3、打开前题中的两个文件,将TEST1.TXT的内容append 到TEST2.TXT,并显示TEST2.TXT。

四、源程序

1. INCLUDE YLIB.H DATA SEGMENT

FILE1 DB 'D:\\TEST1.TXT',0 FILE2 DB 'D:\\TEST2.TXT',0 HANDLE1 DW ? HANDLE2 DW ? DTA1 DB ? DTA2 DB ?

MESS1 DB 0DH,0AH, 'input text please:$' MESS2 DB 0DH,0AH,'FAIL TO WRITE!$' SUCCESS DB 0DH,0AH,' SUCCESS! $' DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA START:

第 1 页

上海应用技术学院 实验报告

MOV AX, DATA MOV DS, AX LEA DX, FILE1 MOV CX, 0 MOV AH, 3CH INT 21H

MOV HANDLE1, AX

LEA DX, FILE2 MOV CX, 0 MOV AH, 3CH INT 21H

MOV HANDLE2, AX NEXT1:

LEA DX , MESS1 MOV AH, 09H INT 21H LEA DX, DTA1 MOV BX, HANDLE1 AGN1:

MOV AH, 01H INT 21H MOV DTA1 , AL MOV AH, 40H MOV CX,1 INT 21H JC ERROR1 CMP DTA1, 0DH JNE AGN1 LEA DX, SUCCESS MOV AH, 09H INT 21H JMP CLOSE1 AGN2:

第 2 页

上海应用技术学院 实验报告

LEA DX, MESS1 MOV AH, 09H INT 21H LEA DX, DTA2 MOV BX, HANDLE2 NEXT:

MOV AH,01H

INT 21H MOV DTA2, AL MOV AH, 40H MOV CX, 1 INT 21H JC ERROR1 CMP DTA2, 0DH JNE NEXT LEA DX, SUCCESS MOV AH, 09H INT 21H JMP CLOSE2

CLOSE1:

MOV AH, 3EH MOV BX, HANDLE1 INT 21H JMP AGN2 CLOSE2:

MOV AH, 3EH MOV BX, HANDLE2 INT 21H ERROR1:

LEA DX, MESS2 MOV AH, 09H INT 21H EXIT:

MOV AX, 4C00H INT 21H CODE ENDS

第 3 页

上海应用技术学院 实验报告

END START 2.

DATA SEGMENT

FILE DB 'D:\\FILE1.TXT',0

HANDLE DW ?

IN_AREA DB 10 DUP(?),'$' LEN

EQU

20

MESS1 DB 0DH,0AH,'OPEN FILE ERROR.$’ MESS2 DB 0DH,0AH,' READ FILE ERROR.$’ MESS3 DB 0DH,0AH,' READ FILE SUCCESS.$’ DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA MOV DS,AX MOV AH,3DH LEA

DX,FILE

MOV AL,00H INT 21H JNC LEA JMP

SUC DX,MESS1 EXIT

START: MOV AX,DATA

SUC:

MOV HANDLE,AX

NEXT: MOV AH,3FH

MOV CX,LEN LEA

DX,IN_AREA

MOV BX,HANDLE INT 21H JC READ_ERR CMP CMP LEA ADD

AX,0

IN_AREA,1AH SI,IN_AREA SI,AX

JZ READ_FIN JZ READ_FIN

MOV BYTE PTR [SI],'$' MOV AH,09H

第 4 页

上海应用技术学院 实验报告

3.

DATA SEGMENT FILENAME1 FILENAME2 DTA

DTA2

DB 'D:\\TEST1.TXT', 0 DB 'D:\\TEST2.TXT', 0

; 磁盘缓冲区

LEA JMP

DX,IN_AREA NEXT

INT 21H

READ_FIN:

MOV AH,3EH MOV BX,HANDLE INT 21H LEA JMP

DX,MESS3 EXIT

READ_ERR:

MOV AH,3EH MOV BX,HANDLE INT 21H LEA

DX,MESS2

EXIT: MOV AH,09H

INT 21H

MOV AX,4C00H INT 21H END

START

CODE ENDS

DB 256 DUP (?) DB ?

DW ? DW ?

HANDLE1 HANDLE2 DONE FAIL1 FAIL2 FAIL3 FAIL4 MESS3 DATA

DB 0

DB 0DH, 0AH, 'Open File Error. $' DB 0DH, 0AH, 'Move File Pointer Error. $' DB 0DH, 0AH, 'Read File Error. $' DB 0DH, 0AH, 'Write File Error. $ ' DB 0DH, 0AH, 'read file success.$' ENDS

CODE SEGMENT

第 5 页

上海应用技术学院 实验报告

AGAIN:MOV AH, 3FH

第 6 页

ASSUME CS:CODE,DS:DATA MOV DS, AX MOV DONE, 0 LEA

START: MOV AX, DATA

DX, FILENAME2

MOV AL, 01H MOV AH, 3DH INT 21H JC ERR11

; 打开不成功,转ERR11

MOV HANDLE2, AX LEA

DX, FILENAME1

; 为“读”打开文件1

MOV AL, 0 MOV AH, 3DH INT 21H JC ERR12

MOV HANDLE1, AX MOV AH, 42H MOV AL, 02 MOV DX, 0 MOV CX, 0

MOV BX, HANDLE2 INT 21H JC ERR2

; 读文件1

LEA DX, DTA

MOV BX, HANDLE1 MOV CX, 256 INT 21H JC ERR3 CMP

AX, 0

JNE AGA1 MOV DONE,1 JMP

FINISH

; 文件结束,转FINISH

上海应用技术学院 实验报告

AGA1: CMP

CONT: PUSH AX

ERR11: LEA

INT 21H JMP

EXIT

DX, FAIL1

; 打开文件1失败,显示信息

DX, FAIL1

MOV AH, 09H

MOV AH, 40H LEA POP

DX, DTA CX

; 写文件失败,转ERR4

; 写文件2

JE CONT MOV DONE,1

; 文件结束,置完成标志

AX, 256

MOV BX, HANDLE2 INT 21H JC ERR4 CMP

MOV AH, 3EH

; 关闭文件1

MOV BX, HANDLE1 INT 21H

MOV BX, HANDLE2 INT 21H JMP

READF2

; 关闭文件2

JE AGAIN

DONE,0

FINISH:

FINISH1:MOV AH, 3EH

ERR12: LEA

INT 21H JMP JMP JMP

MOV AH, 09H

FINISH1

ERR2: LEA ERR3: LEA ERR4: LEA

DX, FAIL2 DX, FAIL3 DX, FAIL4

; 移动指针失败,显示信息 ; 读文件失败,显示信息 ; 写文件失败,显示信息

; 显示出错信息

DISP DISP

DISP: MOV AH, 09H

INT 21H

第 7 页

上海应用技术学院 实验报告

READF2:

MOV AH,3DH LEA

MOV AL,00H INT 21H

MOV HANDLE2,AX

DX,DTA2

MOV BX,HANDLE2 MOV CX,1 MOV AH,3FH INT 21H JC ERR3 CMP CMP

AX,0 DTA2,1AH

JE CLOSE JE CLOSE MOV DL,DTA2 MOV AH,02H INT 21H JMP

ONE

;打开文件2

DX,FILENAME2

;为读而打开

JMP

FINISH

; 转FINISH,关闭文件

ONE: LEA

CLOSE: MOV AH,3EH

MOV BX,HANDLE2 INT 21H INT 21H END 1.

START

EXIT: MOV AX,4C00H CODE ENDS 五、运行结果

第 8 页

上海应用技术学院 实验报告

.

第 9 页

上海应用技术学院 实验报告

2.

第 10 页

上海应用技术学院 实验报告

3.

第 11 页

上海应用技术学院 实验报告

六、上机调试时的问题和解决方法

在这次实验中,文件的建立和写入时程序运行没有错误,但是在输入学号名时键盘输出一个1它却出现两个1,令人很苦恼,换了台电脑才运行正确了。后面的实验特别是实验三,文件指针运用和文件拼接,出现了一些问题,运行会出错。问同学和朋友,仔细看了书,最终运行正确。

七、总结

这次实验让我更清楚的了解和操作文件,对于文件的建立,读写以及文件拼接有了很深刻的认识。在实验中出现了很多错误,这说明我所要学的东西还多,还有很多东西没有掌握,在后续复习中,我会努力复习自己不懂得地方和容易出错之处,不让错误第二次再犯。

第 12 页

本文来源:https://www.bwwdw.com/article/tz5x.html

Top