汇编语言程序设计教学资料-7项目七答案_第1页
汇编语言程序设计教学资料-7项目七答案_第2页
汇编语言程序设计教学资料-7项目七答案_第3页
汇编语言程序设计教学资料-7项目七答案_第4页
汇编语言程序设计教学资料-7项目七答案_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、项目考核填空题1传统文件管理方式与扩充文件管理方式。2程序或数据。3树型结构。4. 绝对移动方式,相对移动方式,绝对倒移方式。简答题1答:错误代码为:(1) 06(2) 03(4) 192答:此操作将文件长度置为0,写新文件,原文件内容被清除。3答:文件结尾的部分信息就没有被写入磁盘,从而造成写入的文件不完整。4答:ASCPATH DB D:PATIENT.LST, 0编程题1对文件文件PATIENT.LST,它的每个记录包含:病例号(patient number):5字符,姓名(name):20字符,城市(city):20字符,街道(street address):20字符,出生年月(mmd

2、dyy):6字符,性别(M/Fcode):1字符,病房号(room number):2字符,床号(bed number):2字符,(1) 定义病人记录的各个域(2) 定义保存文件代号的变量FHANDLE(3) 建文件(4) 把PATNTOUT中的记录写入(5) 关文件(6) 以上文件操作包括测试错误参考源程序如下:(1) PATNTOUTEQU THIS BYTEpatientDB 5DUP (?)nameDB 20DUP (?)cityDB 20DUP (?)streetDB 20DUP (?)mmddyyDB 6DUP (?)M_FcodeDB ?roomDB 2DUP (?)bedDB

3、2DUP (?), 0AH, 0DHCOUNT = $PATNTOUT;记录长度(2) FHANDLEDW ?(3) MOVAH, 3CH;建文件功能MOVCX, 00;普通文件属性LEADX, ASCPATHINT21HJCERRORMOVFHANDLE, AX;保存文件代号(4) MOVAH, 40H;写文件功能MOVBX, FHANDLE;取文件代号MOVCX, COUNT;记录长度LEADX, PATNTOUT;记录的首地址INT21HJCERRORCMPAX, COUNT;所有的字节都写入了吗?JNEERROR1(5) MOVAH, 3EH;关闭文件功能MOVBX, FHANDLE;

4、取文件代号INT21HJCERROR(6) 文件操作的测试错误已包括在(3)、(4)、(5)的操作中。2编写建立并写入磁盘文件的程序。允许用户从键盘键入零件号(3字符),零(配)件名称(12字符),单价(1个字)。程序使用文件代号式建立含有这些信息的文件。注意要把单价从ASCII码转换为二进制数。参考源程序如下:TITLEHANCREAT.EXE;利用文件代号式建立文件程序;-.modelsmall.stack100h.dataprompt1db Please input Part#: $;提示输入零件号prompt2db Please input Description: $ ;提示输入零件

5、名称prompt3db Please input Price: $;提示输入单价maxlendb 13;最大输入长度,输入字符串功能的缓冲区actlendb ? ;实际输入长度bufferdb 13 DUP ( );输入字符串缓冲区crlfdb 0dh, 0ah, $pathnamedb filename.lst, 0handledw ?dtadb 19 DUP ( );DTAerrcdedb 0;错误处理指示opnmsgdb *open error*, 0dh, 0ahwrtmsgdb *write error*, 0dh, 0ah;-beginprocfarmovax, datamovds

6、, axmoves, axmovax, 0600hcallscren;清屏callcurs;设置光标callcreath;建立文件cmperrcde, 0;建立错误吗?jnza0;错误,转结束contin:callproch;记录处理cmpactlen, 0;输入的字符串长度为0,结束输入吗?jnecontin;不结束,继续callclseh;结束输入,关闭文件a0:movax, 4c00h;退出程序,返回DOSint21hbeginendp;-;建立文件creathprocnearmovah, 3chmovcx, 0;普通属性leadx, pathnameint21hjcbbb;建立文件错误

7、吗?movhandle, ax;没有错,保存文件代号retbbb:leadx, opnmsg;建立文件错误callerrm;显示出错信息retcreathendp;-;接收输入prochprocnearcldleadi, dta;在di中设置dta的首地址leadx, prompt1;输入零件号movbx, 3;零件号最多3个字符callin_procjcexit;没有输入,结束leadx, prompt2;输入零件名称movbx, 12;零件名称最多12个字符callin_procjcexit;没有输入,结束leadx, prompt3;输入单价movbx, 5 ;零件单价最多5个十进制字符

8、(相当于一个二进制字)callin_proccalldec_bin;将十进制的单价转换为二进制的单价movword ptr dta+17, 0a0dh;在DTA的最后插入回车换行符callwrith;用文件代号法写记录exit:retprochendp;-;输入字符串子程序in_procprocnearmovah, 09h;显示提示信息int21hpushdileadi, buffer;在buffer中填入空格符movcl, maxlenmovch, 0moval, repstosbpopdimovah, 0ah;输入字符串leadx, maxlenint21hcalldisp_crlfcmp

9、actlen, 0;实际输入字符数=0,则没有输入,结束jeend_inpushdileadi, buffer;在buffer的后面填入空格符moval, actlenmovah, 0adddi, axmovcl, maxlenmovch, 0moval, actlensubcl, almoval, repstosbpopdileasi, buffer;将buffer缓冲区内容送入dtamovcx, bxrepmovsb;将输入内容送入dtaclc;有输入字符,返回(cf)=0jmpin_endend_in: stc;没有输入字符,返回(cf)=1in_end: retin_proc endp

10、;-;将十进制的单价转换为二进制的单价子程序dec_binprocnearmovbx, 0movsi, 0movcx, 5transfer: moval, buffersi;从十进制的高位到低位取数cmpal, 0dh;是回车吗?jedec_bin1cmpal, ;是空格吗?jedec_bin1andal, 0fh;将ascii码转换为十进制数mov ah, 0pushcxxchgax, bx;十进制数高位10+低位 = 二进制数movcx, 10mulcxxchgax, bxaddbx, ax;转换的二进制数在(bx)中popcxincsilooptransferdec_bin1:movwo

11、rd ptr dta+15, bx;存入单价到dta中的单价位置retdec_bin endp;-;用文件代号法写记录writh procnearmovah, 40hmovbx, handlemovcx, 19leadx, dtaint21hjncddd ;写文件错误吗?leadx, wrtmsgcallerrm ;显示出错信息movactlen, 0ddd: retwrithendp;-;用文件代号法关闭文件clsehprocnearmovdta, 1ah ;写文件结束符1ahcallwrithmovah, 3ehmovbx, handleint21hretclseh endp;-;屏幕上卷

12、screnprocnear ;入口参数为axmovbh, 1eh ;设置颜色movcx, 0 ;屏幕左上角movdx, 184fh ;屏幕右下角int10hretscrenendp;-;设置光标cursprocnear movah, 2;设置光标movbh, 0movdh, 0 ;行号movdl, 0 ;列号int10hretcurs endp;-;显示出错信息errmprocnearmovah, 40h;向标准输出设备(文件代号=01)写文件movbx, 01;标准输出设备的文件代号=01movcx, 20int21hmoverrcde, 01 ;错误代码置1reterrmendp;-dis

13、p_crlf procnear ; 显示回车换行符子程序leadx, crlfmovah, 09hint21hretdisp_crlfendp ; disp_crlf子程序结束; -endbegin ;汇编语言源程序结束3编写一个程序使用文件代号式读出并显示题2建立的文件。注意,要把二进制数表示的单价转换为ASCII码。参考源程序如下:TITLEHANDREAD.EXE;利用文件代号式顺序读并显示文件程序;Read disk records created by hancreat ; 文件代号式读出并显示文件;-.modelsmall.stack100h.dataendcdedb0;结束处理指

14、示crlfdb0dh, 0ah, $pathnamedbfilename.lst, 0messagedb Part# Description Price,0dh,0ah,$handledw?tacklinedb | $dtadb19 DUP ( );DTAerrcdedb0 ;错误处理指示opnmsgdb*open error*, 0dh, 0ahreadmsgdb*read error*, 0dh, 0ahrowdb0beginprocfarmovax, datamovds, axmoves, axmovax, 0600hcallscreen;清屏callcurs;设置光标leadx, me

15、ssage;显示标题movah, 09hint21hincrowcallopenh;打开文件,设置DTAcmpendcde, 0;打开错误吗?jnza0;错误,转结束contin:callreadh;读磁盘记录cmpendcde, 0;读错误吗?jnza0;错误,转结束calldisph;没错,显示记录jmpcontina0:movax, 4c00h;退出程序,返回DOSint21hbeginendp;打开文件openhprocnearmovah, 3dhmoval, 0leadx, pathnameint21hjcbbb;打开错误吗?movhandle, ax;没有错,保存文件代号retbb

16、b:movendcde, 01;打开错误,指示结束处理leadx, readmsgcallerrm;显示出错信息retopenhendp;读磁盘记录readhprocnearmovah, 3fhmovbx, handlemovcx, 19leadx, dtaint21hjcc1;读错误吗?cmpax, 0;文件已读完吗?jec2;读完,退出cmpdta, 1ah;文件结束符吗?Jec2retc1:leadx, opnmsg;读错误callerrm;显示出错信息c2:movendcde, 01;读错误或文件读完,指示结束处理retreadhendp;显示记录disphprocnearleadx,

17、 tackline;显示输出“ | ”movah, 09hint21hmovah, 40h;向标准输出设备(文件代号=01)写文件movbx, 01;标准输出设备的文件代号=01movcx, 3leadx, dtaint21hleadx, tackline;显示输出“ | ”movah, 09hint21hmovah, 40h;向标准输出设备(文件代号=01)写文件mov bx, 01;标准输出设备的文件代号=01movcx, 12leadx, dta+3int21hleadx, tackline;显示输出“ | ”movah, 09hint21hmovsi, word ptr dta+15c

18、allbin_dec;转换为十进制数显示leadx, tackline;显示输出“ | ”movah, 09hint21hcalldisp_crlfcmprow, 24;已到屏幕底部吗?jaeddd;已到屏幕底部,退出incrowretddd:movax, 0601hcallscreen;屏幕上卷一行callcurs;设置光标retdisphendp;将二进制的单价转换为十进制的单价并显示子程序bin_decprocnearpushcxmovcx, 10000dcalldec_div;调除法并显示输出子程序movcx, 1000dcalldec_divmovcx, 100dcalldec_divmovcx, 10dcalldec_divmovcx, 1dcalldec_divpopcxretbin_decendp;除法并显示输出子程序dec_divprocnearmovax, simovdx, 0divcxmovsi, dx;余数保存在(si)中作下一次的除法movdl, al;商(在00h09h范围内)送(dl)adddl, 30h;转换为09的ascii码movah, 02h;显示输出int21hretdec_divendp;屏幕上卷screenprocnear;入口参数为axmovbh, 1eh;设置颜色movcx, 0;屏幕左上角movdx, 184fh;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论