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

上传人:bao****ty 文档编号:132376443 上传时间:2020-05-15 格式:DOC 页数:9 大小:52.50KB
返回 下载 相关 举报
汇编语言程序设计教学资料-项目七案例.doc_第1页
第1页 / 共9页
汇编语言程序设计教学资料-项目七案例.doc_第2页
第2页 / 共9页
汇编语言程序设计教学资料-项目七案例.doc_第3页
第3页 / 共9页
汇编语言程序设计教学资料-项目七案例.doc_第4页
第4页 / 共9页
汇编语言程序设计教学资料-项目七案例.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《汇编语言程序设计教学资料-项目七案例.doc》由会员分享,可在线阅读,更多相关《汇编语言程序设计教学资料-项目七案例.doc(9页珍藏版)》请在金锄头文库上搜索。

1、教学案例任务描述:企业要求员工编程实现以下功能: 课后习题2建立的文件按下面的要求编写程序:(1) 把所有的记录读入内存的数据缓冲区TABLE;(2) 显示字符串提示用户输入零(配)件号及其数量;(3) 按零件搜索TABLE;(4) 如果发现所要求的零件,用它的单价计算出总价(单价数量);(5) 显示零(配)件说明及总价值。参考源程序: TITLEREAD11.EXE;利用文件代号式读并计算显示程序;Read disk records created by hancreat;-.modelsmall.stack100h.dataendcdedb0;结束处理指示pathnamedbfilenam

2、e.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

3、 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;没错,输入零件号和

4、零件数量a0:movax, 4c00h;退出程序,返回DOSint21hbeginendp;-;打开文件openhprocnearmovah, 3dhmoval, 0leadx, pathnameint21hjcbbb;打开错误吗?movhandle, ax;没有错,保存文件代号retbbb:movendcde, 01;打开错误,指示结束处理leadx, opnmsgcallerrm;显示出错信息retopenhendp;-;读磁盘记录readhprocnearmovah, 3fhmovbx, handlemovcx, 19*100;准备读入的字节数leadx, tableint21h jcc

5、1;读错误吗?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;

6、显示提示信息,提示重新输入零件号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_P

7、art2jmpin_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,

8、 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: mova

9、l, 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;向标准输出设备

10、(文件代号=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, 09hint21hca

11、llbin_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, de

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号