欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    汇编语言程序设计教学资料-7项目七答案.doc

    • 资源ID:8811703       资源大小:77.50KB        全文页数:10页
    • 资源格式: DOC        下载积分:4
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要4
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    汇编语言程序设计教学资料-7项目七答案.doc

    项目考核填空题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字符,出生年月(mmddyy):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 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;取文件代号INT21HJCERROR(6) 文件操作的测试错误已包括在(3)、(4)、(5)的操作中。2编写建立并写入磁盘文件的程序。允许用户从键盘键入零件号(3字符),零(配)件名称(12字符),单价(1个字)。程序使用文件代号式建立含有这些信息的文件。注意要把单价从ASCII码转换为二进制数。参考源程序如下:TITLEHANCREAT.EXE;利用文件代号式建立文件程序;-.modelsmall.stack100h.dataprompt1db Please input Part#: $;提示输入零件号prompt2db Please input Description: $ ;提示输入零件名称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, axmoves, axmovax, 0600hcallscren;清屏callcurs;设置光标callcreath;建立文件cmperrcde, 0;建立错误吗?jnza0;错误,转结束contin:callproch;记录处理cmpactlen, 0;输入的字符串长度为0,结束输入吗?jnecontin;不结束,继续callclseh;结束输入,关闭文件a0:movax, 4c00h;退出程序,返回DOSint21hbeginendp;-;建立文件creathprocnearmovah, 3chmovcx, 0;普通属性leadx, pathnameint21hjcbbb;建立文件错误吗?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个十进制字符(相当于一个二进制字)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_crlfcmpactlen, 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;-;将十进制的单价转换为二进制的单价子程序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:movword 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;-;屏幕上卷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;-disp_crlf procnear ; 显示回车换行符子程序leadx, crlfmovah, 09hint21hretdisp_crlfendp ; disp_crlf子程序结束; -endbegin ;汇编语言源程序结束3编写一个程序使用文件代号式读出并显示题2建立的文件。注意,要把二进制数表示的单价转换为ASCII码。参考源程序如下:TITLEHANDREAD.EXE;利用文件代号式顺序读并显示文件程序;Read disk records created by hancreat ; 文件代号式读出并显示文件;-.modelsmall.stack100h.dataendcdedb0;结束处理指示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, message;显示标题movah, 09hint21hincrowcallopenh;打开文件,设置DTAcmpendcde, 0;打开错误吗?jnza0;错误,转结束contin:callreadh;读磁盘记录cmpendcde, 0;读错误吗?jnza0;错误,转结束calldisph;没错,显示记录jmpcontina0:movax, 4c00h;退出程序,返回DOSint21hbeginendp;打开文件openhprocnearmovah, 3dhmoval, 0leadx, pathnameint21hjcbbb;打开错误吗?movhandle, ax;没有错,保存文件代号retbbb:movendcde, 01;打开错误,指示结束处理leadx, readmsgcallerrm;显示出错信息retopenhendp;读磁盘记录readhprocnearmovah, 3fhmovbx, handlemovcx, 19leadx, dtaint21hjcc1;读错误吗?cmpax, 0;文件已读完吗?jec2;读完,退出cmpdta, 1ah;文件结束符吗?Jec2retc1:leadx, opnmsg;读错误callerrm;显示出错信息c2:movendcde, 01;读错误或文件读完,指示结束处理retreadhendp;显示记录disphprocnearleadx, 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+15callbin_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;屏幕右下角int10hretscreenendp;设置光标cursprocnearmovah, 2;设置光标movbh, 0movdh, row;行号movdl, 0;列号int10hretcursendp;显示出错信息errmprocnearmovah, 40h;向标准输出设备(文件代号=01)写文件movbx, 01;标准输出设备的文件代号=01movcx, 20int21hreterrmendpdisp_crlfprocnear ;显示回车换行符子程序leadx, crlfmovah, 09hint21hretdisp_crlfendp ; disp_crlf子程序结束endbegin

    注意事项

    本文(汇编语言程序设计教学资料-7项目七答案.doc)为本站会员(rrsccc)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开