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

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

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

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

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

    教学案例任务描述:企业要求员工编程实现以下功能: 课后习题2建立的文件按下面的要求编写程序:(1) 把所有的记录读入内存的数据缓冲区TABLE;(2) 显示字符串提示用户输入零(配)件号及其数量;(3) 按零件搜索TABLE;(4) 如果发现所要求的零件,用它的单价计算出总价(单价数量);(5) 显示零(配)件说明及总价值。参考源程序: TITLEREAD11.EXE;利用文件代号式读并计算显示程序;Read disk records created by hancreat;-.modelsmall.stack100h.dataendcdedb0;结束处理指示pathnamedbfilename.lst, 0in_mes1db请输入3位数的零件号Part#:, $in_mes2db请输入该零件的数量:, $out_mes1db输入的不是数字!请重新输入数字:, $out_mes2db输入的零件号不存在!请重新输入3位数的零件号Part#:, $in_bufferdb6, ?, 6 dup(20h);输入缓冲区messagedb Part# Description Sum_Price, 0dh, 0ah,$tacklinedb | $sum_price dw0, 0decimaldb10 DUP(0), $crlfdb0dh, 0ah, $handledw?tabledb19*100 DUP( );table,足够大errcdedb0 ;错误处理指示opnmsgdb*open error*, 0dh, 0ahreadmsgdb*read error*, 0dh, 0ah;-.codebeginprocfarmovax, datamovds, axmoves, axmovax, 0600hcallscreen;清屏callcurs;设置光标callopenh;打开文件,设置TABLEcmpendcde, 0;打开错误吗?jnza0;错误,转结束callreadh;读磁盘记录cmpendcde, 0;读错误吗?jnza0;错误,转结束callin_Part;没错,输入零件号和零件数量a0:movax, 4c00h;退出程序,返回DOSint21hbeginendp;-;打开文件openhprocnearmovah, 3dhmoval, 0leadx, pathnameint21hjcbbb;打开错误吗?movhandle, ax;没有错,保存文件代号retbbb:movendcde, 01;打开错误,指示结束处理leadx, opnmsgcallerrm;显示出错信息retopenhendp;-;读磁盘记录readhprocnearmovah, 3fhmovbx, handlemovcx, 19*100;准备读入的字节数leadx, tableint21h jcc1;读错误吗?cmpax, 0;文件已读完吗?jec2;读完,退出cmptable, 1ah;文件结束符吗?Jec2movbp, ax;读成功则在AX中返回实际读入的字节数存入bpretc1:leadx, readmsg;读错误callerrm;显示出错信息c2:movendcde, 01;读错误或文件读完,指示结束处理retreadhendp;-;输入零件号和零件数量in_Partprocnearleadx, in_mes1;显示提示信息,提示输入零件号in_Part1:callinput;输入数据cmpin_buffer+1, 3;输入的零件号个数是3位吗?leadx, out_mes2;显示提示信息,提示重新输入零件号jnein_Part1cldmovax, bp;取实际读入文件的字节数movcl, 19;每个记录的长度为19个字符divcl;计算实际读取的记录数在al中movbl, almov bh, 0;从第0个记录开始顺序查找in_Part2:leasi, in_buffer+2;查找零件号对应的零件leadi, tablemoval, 19mulbhadddi, ax;计算某个记录的首地址movword ptr decimal, di;保存首地址movcx, 3repecmpsbjein_Part3;找到对应的零件incbh;找下一个记录cmpbh, bljbin_Part2jmpin_Part1;未找到对应的零件重新输入in_Part3:leadx, in_mes2;显示提示信息,提示输入零件数量callinput;输入数据calldec_bin;将输入数据转换为二进制数,在bx中movdi, word ptr decima;di指向该记录的首地址movax, di+15;取单价mulbx;总价格在(dx),(ax)中movsum_price, axmovsum_price+2, dxcalldisp_rec;显示信息retin_Partendp;-;输入数据inputprocnearinput1:movah, 09h;显示字符串int21hmovah, 0ah;输入字符串leadx, in_bufferint21hleadx, out_mes1;显示提示信息movcl, in_buffer+1cmpcl, 0;输入的数字个数为0吗?jzinput1movch, 0movbx, 2input2:moval, in_bufferbx;输入的是数字09吗?cmpal, 0jbinput1cmpal, 9jainput1incbxloopinput2retinputendp;-;将十进制数转换为二进制数子程序dec_binprocnearmovbx, 0movsi, 2movcl, in_buffer+1movch, 0transfer: moval, in_buffersi;从十进制的高位到低位取数andal, 0fh;将ascii码转换为十进制数mov ah, 0pushcxxchgax, bx;十进制数高位10+低位 = 二进制数movcx, 10mulcxaddbx, ax;转换的二进制数在(bx)中popcxincsilooptransferretdec_bin endp;-;显示记录disp_recprocnearcalldisp_crlfleadx, message;显示标题movah, 09hint21hleadx, tackline;显示输出“ | ”movah, 09hint21hmovah, 40h;向标准输出设备(文件代号=01)写文件movbx, 01;标准输出设备的文件代号=01movcx, 3;显示3位数的零件号movdx, word ptr decima;dx指向该记录的首地址int21hleadx, tackline;显示输出“ | ”movah, 09hint21hmovah, 40h;向标准输出设备(文件代号=01)写文件movbx, 01;标准输出设备的文件代号=01movcx, 12;显示12位的零件说明movdx, word ptr decima;dx指向该记录的首地址adddx, 3int21hleadx, tackline;显示输出“ | ”movah, 09hint21hcallbin_dec;总价格转换为十进制数显示leadx, tackline;显示输出“ | ”movah, 09hint21hcalldisp_crlfretdisp_recendp;-;4字节二进制数转换为10进制子程序bin_decprocnearmovbx, 0;10字节的bcd码单元清0movcx, 10bin_dec1:movdecimalbx, 0incbxloopbin_dec1movcx, 4*8;4字节二进制数共4*8=32位bin_dec2:movbx, 10-1;计算(a31*2+a30)*2+a29).)*2+a0shlword ptr sum_price,1;4字节二进制数左移1位rclword ptr sum_price +2,1pushcxmovcx, 10bin_dec3:moval, decimalbx;计算(.)*2+ai,ai由进位位带入adcal, alaaa;非压缩bcd码加法调整movdecimalbx, aldecbxloopbin_dec3popcxloopbin_dec2calldispretbin_decendp;-dispprocnear;显示输出子程序movcx, 10movbx, 0disp1:adddecimalbx, 30h;变为ascii码incbxloopdisp1movcx, 10;下面5条指令是为了不显示数据左边的“0”cldleadi, decimalmoval, 30h;30h为“0”的ascii码repescasbdecdimovdx, dimovah, 09hint21hretdispendp;disp子程序结束;-;屏幕上卷screenprocnear;入口参数为axmovbh, 1eh;设置颜色movcx, 0;屏幕左上角movdx, 184fh;屏幕右下角int10hretscreenendp;-;设置光标cursprocnearmovah, 2;设置光标movbh, 0movdh, 0;行号movdl, 0;列号int10hretcursendp;-;显示出错信息errmprocnearmovah, 40h;向标准输出设备(文件代号=01)写文件movbx, 01;标准输出设备的文件代号=01movcx, 20int21hreterrmendp;-disp_crlfprocnear ;显示回车换行符子程序leadx, crlfmovah, 09hint21hretdisp_crlfendp ; disp_crlf子程序结束; -endbegin

    注意事项

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

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




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

    三一文库
    收起
    展开