微机原理与接口技术课程设计--四则运算.doc_第1页
微机原理与接口技术课程设计--四则运算.doc_第2页
微机原理与接口技术课程设计--四则运算.doc_第3页
微机原理与接口技术课程设计--四则运算.doc_第4页
微机原理与接口技术课程设计--四则运算.doc_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

课设报告题 目: 四则运算班 级: 姓 名: 学 号: 指导老师: 日 期: 年 月 日 目录1、 设计目的 12、 概要设计.2 2.1 系统总体分析22.2 主模块框图及说明 33、详细设计 43.1 主模块及子模块概述 43.2 各模块详细设计 44、程序调试 9 4.1 运行界面分析94.2 调试过程与分析115、心得体会 125.1 设计体会125.2 系统改进12附录14参考文献4041设计目的进行程序设计方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平,对自身的学习从理论到实践的应用,加深对汇编语言的认识。概要设计2.1 系统总体分析1. 可以任意输入十进制数进行运算。2. 进行的运算是加、减、乘和除的独立运算。3.运算时,当输入十进制数时,首先默认的是加法运算,通过回车得到加法运算结果。若要进行同样数的减法,乘法和除法的运算可用鼠标点击sub,mul和div进行运算。若不想则通过reload重新输入。4. 程序可以重复进行运算,这就要求每次运算后置零数据存储区,通过reload清零。5. 由于运算的结果位数不确定,要设计一个能显示结果的输出程序,通过窗口实现。开始2.2 主模块框图及说明输入数据定义数据段初始化寄存器鼠标初始化窗口初始化是否是否在范围内通过鼠标选择并运算不运算输出结果详细设计3.1 主模块及子模块概述 主模块主要是四则运算部分,就是进行运算的模块,包括加减乘除为实现运算而进行的模块,程序的中心部分。其他子模块包括用鼠标选择的何种运算的模块,通过鼠标选择加法运算或者其他的运算等等。以及窗口模块,主要是进行数据的显示。还有就是菜单模块,就是鼠标选择运算的模块,通过选择加减或者乘除来实现运算。以及鼠标引入模块,实现鼠标的选择操作。输出模块和清零数据重新运算模块。3.2 各模块详细设计3.2.1主要是数据的初始化data segment Notice db (Notice: 0=NumberaxSubInterger proc nearpush si push bx lea si,Number1 mov ax,si lea si,Number2 mov bx,si sub ax,bx pop bx pop siretSubInterger endp;MulInterger;参数:无;返回:end-axMulInterger proc nearpush si push bx lea si,Number1 mov ax,si lea si,Number2 mov bx,si mul bx pop bx pop siretMulInterger endp;DivInterger;参数:无;返回:end-axDivInterger proc nearpush dxpush si push bx lea si,Number1 mov ax,si lea si,Number2 mov bx,si xor dx,dx div bx pop bx pop si pop dxretDivInterger endp;GetInterger;参数:bx;返回:interger-bx ;注意:0=interger=32767GetInterger proc near push cx push dx push bx xor ax,ax xor bx,bx xor cx,cx xor dx,dx reget:mov ah,8 int 21h cmp al,0 jb sign cmp al,9 ja reget cmp cl,5 je reget jmp getInt sign:cmp al,0dh je enter cmp al,8h je backspace jmp reget getInt:mov dl,al mov ah,2 int 21h and ax,0fh xchg ax,bx push bx mov bx,10 mul bx pop bx xchg ax,bx add bx,ax inc cx jmp reget backspace:cmp cl,0 je reget xchg ax,bx push bx mov bx,10 div bx pop bx xchg ax,bx dec cx mov ah,2 mov dl,08h int 21h mov dl,20h int 21h mov dl,08h int 21h xor dx,dx jmp reget enter:mov ax,bx pop bx mov bx,ax pop dx pop cx ret GetInterger endp ;CleanFinally;参数:无;返回:光标位置Finally输出框CleanFinally proc nearpush axpush bxpush cxpush dxmov ah,2mov bh,0mov dx,080ahint 10hmov cx,6mov dl, clean:int 21hloop cleanmov dx,080ahint 10hpop dxpop cxpop bxpop axretCleanFinally endpcode ends end start程序调试4.1 运行界面分析加法运算:减法运算: 乘法运算: 除法运算: 4.2 调试过程与分析 进行运算首先是进行加法运算,运算玩呈现的是加法运算的结果。可进行相应值的其他运算,并得到相应的结果。若计算其他值则需重新输入,要先通过reload清零后再输入。可输入多位值运算。心得体会5.1 设计体会 我们这学期初步地学习了汇编语言程序设计,一开始觉得该门课程相对于C语言比较难,汇编语言是利用一个又一个寄存器来实现。而写代码的时候,经常会因为一些符号,或者字长的失误,完全是无心之失而导致程序无法执行。本次课程设计对我们的成长有很大的帮助。是对我们对汇编语言的掌握与运用能力的一次检验。这次的课程设计老师给我们降低了难度,只要能进行加减乘除四则运算就行了。了解课题内容后,我们进行了分工合作,先查阅了相关资料,然后开始源代码的编写,最后是调试结果,直到符合课题要求。这次课程设计中遇到了不少麻烦,这也是由于之前理论课上学得不够扎实所导致的,所以我们进行了更深入的讨论,并积极地向老师和同学请教,最终顺利地完成了任务。5.2 系统改进存在的改进地方是不能同时进行多种运算,就是进行加减乘除同时运行的运算。不能进行小数运算,加减乘除都不能进行小数的运算。同样也是不能进行负数的运算,无法输入负数。界面上还不够完整,在不同的系统中可能需要进行改进。另外各种数的计算的范围太小,不能做到面面俱到。附录data segment Notice db (Notice: 0=NumberaxAddInterger proc near push si push bx lea si,Number1 mov ax,si lea si,Number2 mov bx,si add ax,bx pop bx pop si retAddInterger endp;SubInterger;参数:无;返回:end-axSubInterger proc nearpush si push bx lea si,Number1 mov ax,si lea si,Number2 mov bx,si sub ax,bx pop bx pop siretSubInterger endp;MulInterger;参数:无;返回:end-axMulInterger proc nearpush si push bx lea si,Number1 mov ax,si lea si,Number2 mov bx,si mul bx pop bx pop siretMulInterger endp;DivInterger;参数:无;返回:end-axDivInterger proc nearpush dxpush si push bx lea si,Number1 mov ax,si lea si,Number2 mov bx,si xor dx,dx div bx pop bx pop si pop dxretDivInterger endp;GetInterger;参数:bx;返回:interger-bx ;注意:0=interger=32767GetInterger proc near push cx push dx push bx xor ax,ax xor bx,bx xor cx,cx xor dx,dx reget:mov ah,8 int 21h cmp al,0 jb sign cmp al,9 ja reget cmp cl,5 je reget jmp getInt sign:cmp al,0dh je enter cmp al,8h je backspace jmp reget getInt:mov dl,al mov ah,2 int 21h and ax,0fh xchg ax,bx push bx mov bx,10 mul bx pop bx xchg ax,bx add bx,ax inc cx jmp reget backspace:cmp cl,0 je reget xchg ax,bx push bx mov bx,10 div bx pop bx xchg ax,bx dec cx mov ah,2 mov dl,08h int 21h mov dl,20h int 21h mov dl,08h int 21h xor dx,dx jmp reget enter:mov ax,bx pop bx mov bx,ax pop dx pop cx ret GetInterger endp ;OutInterger;参数:ax;返回:无OutInterger proc near push cx push dx cmp ax,8000h jb r3 push ax mov ah,2 mov dl,- int 21h pop ax sub ax,1 not ax r3:xor cx,cx r4:xor dx,dx push bx mov bx,10 div bx pop bx add dl,30h push dx inc cx cmp ax,0 jnz r4 mov ah,2 r5:pop dx int 21h loop r5 pop dx pop cx retOutInterger endp;ReloadExe;参数:无;返回:无ReloadExe proc nearpush axpush bxpush cxpush dxmov ah,2mov bh,0mov dx,080ahint 10hmov cx,6mov dl, clean1:int 21hloop clean1mov dx,060ahint 10hmov cx,6mov dl, clean2:int 21hloop clean2mov dx,040ahint 10hmov cx,6mov dl, clean3:int 21hloop clean3mov ah,2;获取Number1和Number2的数值 mov bh,0 mov dx,040ahint 10hmov bx,offset Number1call GetIntergermov ah,2mov bh,0mov dx,060ahint 10hmov bx,offset Number2call GetIntergercall AddIntergerpush axmov ah,2mov bh,0mov dx,080ahint 10hpop axcall OutIntergerpop dxpop cxpop bxpop axretReloadExe endp;CleanFinally;参数:无;返回:光标位置Finally输出框CleanFinally proc nearpush axpush bxpush cxpush dxmov ah,2mov bh,0mov dx,080ahint 10hmov c

温馨提示

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

评论

0/150

提交评论