汇编文件操作程序实验报告.docx

上传人:b****8 文档编号:9327816 上传时间:2023-02-04 格式:DOCX 页数:22 大小:17.70KB
下载 相关 举报
汇编文件操作程序实验报告.docx_第1页
第1页 / 共22页
汇编文件操作程序实验报告.docx_第2页
第2页 / 共22页
汇编文件操作程序实验报告.docx_第3页
第3页 / 共22页
汇编文件操作程序实验报告.docx_第4页
第4页 / 共22页
汇编文件操作程序实验报告.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

汇编文件操作程序实验报告.docx

《汇编文件操作程序实验报告.docx》由会员分享,可在线阅读,更多相关《汇编文件操作程序实验报告.docx(22页珍藏版)》请在冰豆网上搜索。

汇编文件操作程序实验报告.docx

汇编文件操作程序实验报告

 

《汇编语言程序设计》

综合程序设计实验报告

题目:

文件操作以及对内容进行一些操作

 

1、项目简介

我们组做的是关于文件操作的,主要操作是创建文件,向文件写入内容,在读文件,把文件里的内容读出来,并在屏幕上显示,还有就是把文件里的小写字母变成大写字母,其他不变,并存入daxie文件里,把文件里的大写字母变成小写字母,其他不变,并存入xiaoxie文件中,并把它们读出来并在屏幕上显示,还有就是查找字符(看文件中有没有你要查找的字符),最后一个功能就是冒泡排序,将文件中的字符从大到小,从小到大在屏幕上输出。

2、小组成员具体分工

高晓林主要是写界面和创建文件,读文件

黄冠主要是写大写变小写,查找字符,写文件

华飞主要是写冒泡排序,并整合他们的程序,修改细节,完善程序

3、需求分析与设计

需求主要是汇编大作业要求,为了提高分数(因为老师没讲文件,自学文件也能提高自己的自学能力),还有个原因就是我们组觉得文件在程序设计中具有重要的地位,所以我们组决定吧大作业题目局限在文件领域。

设计,说简单也有点难度,说很难其实也不是很难,我们程序一共9各功能,每个功能都写成一个子程序,具体的实现其实就是有点繁琐(真心觉得汇编真麻烦,分支循环结构在高级语言写几句代码就搞定,而汇编要写很多,而且跳转跳的有时连自己都晕了)。

4、代码及分析

DATASSEGMENT

ppdb20,?

ss1db?

ss2db?

numberdw?

pathnm1db20dup(0)

filenamedb13,10,'enterfilename:

$'

stringdb13,10,'continue(y/n):

$'

filename1db'c:

\daxie',00

filename2db'c:

\xiaoxie',00

errordb13,10,'createfilefail','$'

str5db13,10,'oldstring:

$'

str6db13,10,'newstring:

$'

str7db13,10,'pleaseenterwhatyouneadlook:

$'

str8db13,10,'findsuccess!

$'

str9db13,10,'finderror!

$'

str10db13,10,'oldorder:

$'

str11db13,10,'neworder(bigtosmall):

$'

str12db13,10,'neworder(smalltobig):

$'

strdb13,10,'createfilesuccess','$'

str1db13,10,'writetofilesuccess','$'

str2db13,10,'readfilesuccess',13,10,'$'

str3db13,10,'entercontents:

',13,10,'$'

str4db'readcontents:

$'

menudb13,10,'**********************************',13,10

db'*menu*',13,10

db'*--------------------------------*',13,10

db'*1.Createfile*',13,10

db'*2.Writetofile*',13,10

db'*3.Readfile*',13,10

db'*4.A->a*',13,10

db'*5.a->A*',13,10

db'*6.Findword*',13,10

db'*7.Order(bigtosmall)*',13,10

db'*8.Order(smalltobig)*',13,10

db'*9.Quit*',13,10

db'*--------------------------------*',13,10

db'*choice(1-8)*',13,10

db'**********************************',13,10

db'enteryourchoice:

$'

bufdb?

inrecdb13,10,256dup('$')

newstringdb13,10,256dup('$')

handle1dw?

handle2dw?

handle3dw?

DATASENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS

START:

MOVAX,DATAS

MOVDS,AX

next5:

callscren

movah,9

leadx,menu

int21h

movah,01

int21h

movcl,al

cmpcl,31h

jznext1

cmpcl,32h

jznext2

cmpcl,33h

jznext3

cmpcl,34h

jznext4

cmpcl,35h

jznext7

cmpcl,36h

jznext8

cmpcl,37h

jznext9

cmpcl,38h

jznext10

cmpcl,39h

jznext11

jmpnext5

next1:

callcreate

callty

jmpnext5

next2:

callwrite

callty

jmpnext5

next3:

callread

callty

jmpnext5

next4:

calldbx

callty

jmpnext5

next7:

callxbd

callty

jmpnext5

next8:

callchazhao

callty

jmpnext5

next9:

callorder

callty

jmpnext5

next10:

callorder1

callty

jmpnext5

next11:

callexit

movah,4ch

int21h

exitprocnear;推出dos界面

movah,4ch

int21h

exitendp

screnprocnear;清屏

movax,3h

int10h

ret

screnendp

xbdprocnear;小写字母变大写,其他原样输出

movah,3dh

leadx,filename1

moval,2

int21h

movhandle2,ax

movah,9

leadx,str5

int21h

callopen

movah,3fh

movcx,256

movbx,handle1

leadx,inrec+2

int21h

leadx,inrec

movah,9

int21h

callclose

movah,9

leadx,str6

int21h

movah,3fh

movcx,256

movbx,handle2

leadx,newstring+2

int21h

leadx,newstring

movah,9

int21h

ret

movah,3Eh

movbx,handle2

int21h

xbdendp

dbxprocnear;大写字母变小写,其他原样输出

movah,3dh

leadx,filename2

moval,2

int21h

movhandle3,ax

movah,9

leadx,str5

int21h

callopen

movah,3fh

movcx,256

movbx,handle1

leadx,inrec+2

int21h

leadx,inrec

movah,9

int21h

callclose

movah,9

leadx,str6

int21h

movah,3fh

movcx,256

movbx,handle3

leadx,newstring+2

int21h

leadx,newstring

movah,9

int21h

movah,3Eh

movbx,handle3

int21h

ret

dbxendp

typrocnear;是否继续

movah,9

leadx,string

int21h

movah,01h

int21h

cmpal,'y'

jznext6

movah,4ch

int21h

next6:

ret

tyendp

createprocnear;创建文件

movah,9

leadx,filename

int21h

subsi,si

again1:

MOVAH,1

INT21H

CMPAL,0DH

JZEXIT3

MOVpathnm1[si],al

addsi,1

jmpagain1

exit3:

movah,3ch

movcx,00

leadx,pathnm1

int21h

jca1

movhandle1,ax

movah,9

leadx,str

int21h

callclose

ret

a1:

movah,9

leadx,error

int21h

subsi,si

movcx,20

yy1:

movpathnm1[si],00

incsi

loopyy1

ret

createendp

create1procnear;创建小写变大写的文件

movah,3ch

movcx,00

leadx,filename1

int21h

movhandle2,ax

ret

create1endp

create2procnear;创建大写变小写的文件

movah,3ch

movcx,00

leadx,filename2

int21h

movhandle3,ax

ret

create2endp

openprocnear;打开源文件

movah,3dh

leadx,pathnm1

moval,2

int21h

movhandle1,ax

ret

openendp

writeprocnear;往源文件里写内容并顺带吧小写变大写和大写变小写生成的字符写入daxie和xiaoxie文件

callopen

movah,9

leadx,str3

int21h

callcreate1

callcreate2

movnumber,0

subsi,si

again:

MOVAH,1

INT21H

CMPAL,0DH

JZEXIT2

addsi,1

movss1,al

MOVBUF,AL

MOVAH,40H

MOVBX,handle1

MOVCX,1

LEADX,BUF

INT21H

moval,ss1

cmpal,'a'

jnba2

MOVBUF,al

MOVAH,40H

MOVBX,handle2

MOVCX,1

LEADX,BUF

INT21H

jmpddd

a2:

cmpal,'z'

jbea3

MOVBUF,al

MOVAH,40H

MOVBX,handle2

MOVCX,1

LEADX,BUF

INT21H

jmpddd

a3:

subal,32

MOVBUF,al

MOVAH,40H

MOVBX,handle2

MOVCX,1

LEADX,BUF

INT21H

jmpddd

ddd:

moval,ss1

cmpal,'A'

jnba4

MOVBUF,al

MOVAH,40H

MOVBX,handle3

MOVCX,1

LEADX,BUF

INT21H

jmpagain

a4:

cmpal,'Z'

jbea5

MOVBUF,al

MOVAH,40H

MOVBX,handle3

MOVCX,1

LEADX,BUF

INT21H

jmpagain

a5:

addal,32

MOVBUF,al

MOVAH,40H

MOVBX,handle3

MOVCX,1

LEADX,BUF

INT21H

jmpagain

exit2:

movnumber,si

movah,9

leadx,str1

int21h

callclose

ret

writeendp

readprocnear;读源文件

callopen

movah,9

leadx,str2

int21h

movah,9

leadx,str4

int21h

movah,3fh

movcx,256

movbx,handle1

leadx,inrec+2

int21h

leadx,inrec

movah,9

int21h

callclose

ret

readendp

closeprocnear;关闭源文件

movah,3Eh

movbx,handle1

int21h

ret

closeendp

chazhaoprocnear;在源文件里查找字符,成功输出findsuccess,反之则finderror

movah,9

leadx,str7

int21h

movah,1

int21h

movss2,al

callopen

movah,3fh

movcx,256

movbx,handle1

leadx,inrec+2

int21h

callclose

moval,ss2

movcx,20

subsi,si

movsi,2

hhh:

cmpal,inrec[si]

jnza7

movah,9

leadx,str8

int21h

ret

a7:

addsi,1

loophhh

movah,9

leadx,str9

int21h

ret

chazhaoendp

orderprocnear;排序从大到小

callopen

movah,3fh

movcx,256

movbx,handle1

leadx,inrec+2

int21h

callclose

movah,9

leadx,str10

int21h

movah,9

leadx,inrec

int21h

movah,9

leadx,str11

int21h

subbx,bx

movbx,1

qqq:

movcx,number

subcx,1

subsi,si

movsi,2

addbx,1

hhh1:

moval,inrec[si]

cmpal,inrec[si+1]

jgea9

xchgal,inrec[si+1]

movinrec[si],al

a9:

addsi,1

loophhh1

cmpbx,number

jbeqqq

movah,9

leadx,inrec

int21h

ret

orderendp

order1procnear;排序从小到大

callopen

movah,3fh

movcx,256

movbx,handle1

leadx,inrec+2

int21h

callclose

movah,9

leadx,str10

int21h

movah,9

leadx,inrec

int21h

movah,9

leadx,str12

int21h

subbx,bx

movbx,1

qqq1:

movcx,number

subcx,1

subsi,si

movsi,2

addbx,1

hhh11:

moval,inrec[si]

cmpal,inrec[si+1]

jbea10

xchgal,inrec[si+1]

movinrec[si],al

a10:

addsi,1

loophhh11

cmpbx,number

jbeqqq1

movah,9

leadx,inrec

int21h

ret

order1endp

CODESENDS

ENDSTART

 

5、总结

我们组的实验心得:

一开始冲动得报了个文件操作的题目,得到开始做的时候,有点儿不知所措,因为汇编文件这章没学过,不过后来看书慢慢自学,可是验证时,一直卡在读文件这步上,后来才发现因为少输出了回车换行,把这个做好了,后面的就是顺水推舟,一步一步做,一步一步敲代码,把一个一个功能实现。

我们组共同认为凡事开头难,一旦下定决心,总能做出让自己满意的作品。

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

当前位置:首页 > 成人教育 > 专升本

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

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