欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    微机原理与汇编语言.docx

    • 资源ID:14253508       资源大小:147.87KB        全文页数:18页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

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

    微机原理与汇编语言.docx

    1、微机原理与汇编语言 JIANGSU TEACHERS UNIVERSITY OF TECHNOLOGY 微机原理与汇编语言课设报告 课设名称: 电话本管理系统 学 院: 计算机工程学院 专 业: 计算机科学与技术 班 级: 09计2Z 学 号: 09141238 姓 名: 卢宗峰 教师姓名: 傅中君 2011 年 11月电话本管理系统1.设计目的 通过电话本管理系统这个课程设计,能够对汇编语言有一个大体上的认识,领悟到汇编语言的特性,锻炼我们的编程能力以及调试能力 ,达到提高动手能力以及检验对微机原理课程学习和掌握的程度。让我们能够更好的认识到微机的工作原理,以及更好的为以后的课程学习做好铺垫

    2、。2.设计题目分析 我选的题目是电话本管理系统,这个题目看起来不新鲜,在其他语言课程设计或平时练习题目中经常会遇到,这次采用汇编语言进行开发,很具挑战,其主要就是对存储在内存中不定长字符串的处理,比如的字符串的增加、删除以及修改,以此来实现电话本的查询、增、删、改等等基本功能。 电话本主要实现功能如下: 程序能够建立一个可存放50条以上记录的电话号码本; 程序能够对记录进行增加、删除、修改操作; 个人信息字段包含姓名、电话; 通过姓名或电话查询记录并显示查询结果。(注:联系人的信息全部为英文)1程序执行后,首先显示功能选择界面,根据提示,输入要完成功能的标号,进入相应的子程序。2查询:显示选择

    3、菜单:1 按姓名查找;2 按电话查找。根据选项调用相关的子程序.3插入:检测联系人总数是否为50:是,电话本已满,拒绝插入,返回主程序;否,输入新的内容,将其插入到最后一个联系人后的存储单元中,提示添加成功。4显示:将内存中存储的全部联系人按插入顺序依次显示在屏幕上。5修改:调用修改子程序 ,先查找,输出相关提示信息,如果找不到,则建立新的联系人。6删除:将要删除的联系人在内存中置为07退出:返回DOS。 3.概要设计输入功能模块:要求能够输入50个电话号码,则必须定义足够大的空间,但是名字的长度不一定都一样,若是为名字都定义同样长度的空间,会造成空间浪费。可以定义当前输入的缓冲区NAMEBU

    4、F和NUMBERBUF,将每次缓冲区的内容移至存储区中,从而节省空间。查询功能模块:定义当前查询名字缓冲区,再与信息存储区进行比较查找。由于信息存储区的每个单元(名字+号码,下同)长度并不一样,要实现查询功能,判断比较复杂。基本思路是CHECKNAME缓冲区内容与存储区第一个单元比较,若不同则查找到“$”标志,再进行下一次判断,直至找到。显示功能模块:先调用查询模块,输入要删除的姓名,在内存中查找,若找不到给出找不到的提示信息,若找到,显示它的电话号码要用户进行确认,然后定位到名字起始位置,将该联系人的姓名和电话号码全部置为0.4.详细设计程序源代码分析:;堆栈段stack segmentdw

    5、 80 dup(?)stack ends;数据段data segment choices db 1.add your infomation 2.Check your infomation 3.Show your linkmans $ choices1 db4.Delete your linkman 5.Exit$ prompt db Please input your right choice(1/2/3/4/5): $ goonadd db Do you want to go on adding your linkman?(y or n):$ stored db Your infomatio

    6、n has stored in memory !$ error db Please input the right choice!$ warning db Please confirm to delete your linkman(y/n)?$ goondelet db Do you want go on deleting your linkman?(y/n)?$ prompt2 db Please decide to select with name or phonenumber ?(0/1):$ namestr db Please input your name:$ phonenumber

    7、str db Please input your phone number:$ elected dbThe linkman has selected ,his phonenumer as follows:$ goonselect db Do you want go on selecting your linkman?(y or n)$ failed db Sorry,the linkman is not find !$ choice db 2,0,2 dup(0) formstr db 0aH,0dH,$ namebuf db 11,0,11 dup(?) numberbuf db 11,0,

    8、11 dup(?) stress db 1500 dup(0) flag db 0 len db 0data endscode segmentassume cs:code,ds:data,ss:stacknewline macromov dx,offset formstrmov ah,09Hint 21Hendm;清屏功能start:call clear mov bx,offset stress sub ax,ax go1: ;call clear mov ax,data mov ds,ax ;显示提示信息hh: newline newline mov dx,offset choices;显示

    9、选择信息 mov ah,09H int 21H newline mov dx,offset choices1;显示选择信息 mov ah,09H int 21H newline mov dx,offset prompt;显示提示信息 mov ah,09H int 21Hinput:mov dx,offset choice;用户输入选择项 mov ah,0aH int 21H mov si,dx inc si inc si mov al,si cmp al,31H je A1 cmp al,32H je A2 cmp al,33H je A3 cmp al,35H je A5 cmp al,34

    10、H je A7 newline mov dx,offset error mov ah,09H int 21H mov dx,offset prompt mov ah,09H int 21Hjmp input newlineA7:jmp A4A1:call clear CALL enter newline mov dx,offset goonadd mov ah,09H int 21H mov ah,1H int 21H cmp al,y je A1 cmp al,n newline call clear jmp go1A5:jmp A8A3:jmp A9A2:call clear CALL c

    11、heck newline mov dx,offset goonselect mov ah,09H int 21H newline mov ah,1H int 21H cmp al,y je A2 cmp al,n call clear jmp go1A9:call clear call show jmp hhA8:MOV ah,4CH INT 21H A4:call clear call check cmp flag,1 je devv: lea dx,goondelet mov ah,09H int 21H mov ah,01H int 21H cmp al,y je A4 newline

    12、jmp go1 de:call delete jmp vv;enter 子程序enter proc newline mov ah,09H mov dx,offset namestr int 21H ;输入姓名 mov dx,offset namebuf mov ah,0aH int 21H newline mov dx,offset namebuf mov si,dx mov cl,si+1 n:mov al,si+2 mov bx,al inc bx inc siloop n mov byte ptrbx,$;输入号码 mov cl,0 mov ah,09H mov dx,offset ph

    13、onenumberstr int 21H mov dx,offset numberbuf mov ah,0aH int 21H mov si,dx mov cl,si+1 inc bxp: mov al,si+2 mov bx,al inc bx inc siloop p mov byte ptrbx,$ inc bx newline mov dx,offset stored mov ah,09H int 21H newlineretenter endpshow proc newlinemov si,offset stressdec siqq:inc sitt:cmp byte ptrsi,0

    14、je qqcmp si,bxjae out1 mov dx,simov ah,09Hint 21Haa:inc sicmp byte ptrsi,$jne aanewlineinc sicmp si,bxjb ttout1:retshow endp;check子程序check proc mov dx,offset formstr;换行格式输出mov ah,09Hint 21H;按姓名查找联系人信息inname:newline mov dx,offset namestr mov ah,09H int 21H mov dx,offset namebuf;输入姓名到姓名缓冲区 mov ah,0aH

    15、int 21H mov si,offset stress dec si b00:mov dx,offset namebuf mov di,dx inc dib0: inc di lin: inc si cmp byte ptrsi,0 je lin cmp byte ptr si,$ je b1 mov al,di cmp al,si je b0 cmp si,bx jl b2 jmp b3 b2:mov cx,2 dec si b20:inc si cmp byte ptr si,$jne b20loop b20jmp b00 ;查找到信息,输出信息b1:newline lea dx,sel

    16、ected mov ah,09H int 21H newline mov flag,1 mov dx,si inc dx mov ah,9 int 21h newlinejmp exit b3:mov flag,0newlinemov dx,offset failed mov ah,9int 21hnewlineexit:retcheck endp ;删除联系人子程序Delete proc newlinelea dx,warningmov ah,09Hint 21Hmov ah,01Hint 21Hcmp dl,yje deldel:xor cx,cxmov di,offset namebuf

    17、inc digg:inc di inc cl cmp byte ptrdi,0dHjne ggmov al,clmov len,alnewline mov cx,0 ee:inc si inc cl cmp byte ptrsi,$ jne ee add cl,len newline sub si,cl inc sidec cxnext:mov byte ptrsi,0inc si loop nextmov byte ptrsi,0newlineretDelete endpclear PROC NEAR;清屏子程序 PUSH AX PUSH BX PUSH CX PUSH DX MOV AH,

    18、2 MOV DH,0;行坐标 MOV DL,0;列坐标 INT 10H MOV AH,6;初始化屏幕(向上滚屏) MOV AL,0;滚动行数 MOV BH,7;空白区域的缺省值 MOV CX,0;左上角的位置 MOV DH,24;右下角位置(Y坐标) MOV DL,79;右下角位置(X坐标) INT 10H MOV DX,0 MOV BH,0 MOV AH,2 INT 10H POP DX POP CX POP BX POP AX RET clear ENDP mov ah,4cHint 21Hcode endsend start运行结果截图如下:显示主目录增加联系人查询联系人显示全部联系人删

    19、除联系人5.调试分析问题1及解决办法:程序写完后,只有一类语法错误,都是提示“Operand must have size”。解决方法:通过查书发现像MOV BX,$ 这种语句是不合法的,类型不明确,应该为MOV BYTE PTR BX,$ 。改正后,程序能顺利编译连接,没有语法错误。问题2及解决办法:生成EXE文件后运行,发现输入子程序并没有实现要求,在主菜单选择1输入后,出现如下状况,即0a号功能并没有完成输入的功能。问题3及解决办法:在调用dos中断的0a功能时,不知道它是从dx所指存储区域的第三个字节开始存储,在取数据时就出错了,后来查询了一下,就豁然开朗了。问题4及解决办法:在做数据

    20、的查询、显示以及删除时,容易定位错误,解决办法就是仔细推理内存中的存储字符以及指针所指的存储单元。6.课设体会及心得通过这次汇编语言的课程设计,我的收获颇大,一方面对汇编语言有了更加深入的认识,另一方面锻炼了自己的编程能力以及程序调试能力,从某种意义上来说锻炼了自己的意志。“工欲善其事,必先利其器”,在写程序之前,我便做了算法分析和资料的收集,比如汇编语言的教程以及各种中断调用的方法,在编程过程中,错误不断,挑战不断,每当我遇到错误时,总是很纠结,有时调试几遍都无法找到错误,但我绝不会气馁,必须冷静下来,自己分析内存存储的信息以及语法的问题,当问题得到解决,程序调试出来时,激动死了,那种心情真的很不错。7.附录


    注意事项

    本文(微机原理与汇编语言.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

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




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开