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

    计算机组成原理与汇编语言课程设计字母与进制转换系统.docx

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

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

    计算机组成原理与汇编语言课程设计字母与进制转换系统.docx

    1、计算机组成原理与汇编语言课程设计字母与进制转换系统 课程设计报告课程名称:计算机组成原理与汇编语言报告题目:字母与进制转换系统学生姓名: 所在学院:信息科学与工程学院专业班级:指导教师: 2013 年 6月 26 日摘要汇编语言是计算机能够提供给用户使用的最快且最有效的语言,也是能够充分利用计算机所有硬件资源并能直接控制硬件的唯一语言。用汇编语言编制的程序同机器语言程序一一对应,它的目标代码短,运行速度快,在对程序的时间和空间要求很高的场合,往往需要采用汇编语言。本程序是用汇编语言编写的字母与进制转换系统,拥有三个子功能。分别为将大写字母转换为小写字母,将十进制数转换为十六进制数和将十六进制数

    2、转换为十进制数。通过此次课程设计,我们对汇编语言的大部分基本指令非常熟悉。分析问题,解决问题的能力将得到极大的提高。关键词:汇编;语言;进制;转换目录一、课题分析1二、需求分析21功能描述22. 功能模块分析 2 三、设计方案31系统流程图32子程序模块设计4 3. 详细设计44程序调试结果及分析11四、结论与心得12五、参考文献13一、课题分析根据要求我们做的是完成一个字母或数制之间的转化程序,主程序分别具有3种可选择的子功能,按相应的字母(X=功能1; Y=功能2; Z=功能3;)可分别进入相应的子功能并在屏幕上显示结果。3种可选择的子功能分别为:1)实现大写字母向小写字母的转换2)实现十

    3、进制数向十六进制数的转换3)实现十六进制数向十进制数的转换。当运行程序后,应该要出现一个主菜单界面,主界面应该要能进入三个子功能界面,即输入X,进入实现大写字母向小写字母的转换的子功能界面;输入Y,进入十进制数向十六进制数转换的子功能界面;输入Z,进入十六进制数向十进制数的转换。如:当选中了大写字母向小写字母转换的功能后,如果输入的不是大写字母,应要提示输入错误,请重新输入,直到输入正确为止。通过改变ASSIC码值,实现大写字母向小写字母的转换。显示转换后的字母后,跳转到主菜单,重新选择子功能。二、需求分析 1.功能描述 本程序共有三个功能,3种可选择的子功能分别为:1)实现大写字母向小写字母

    4、的转换2)实现十进制数向十六进制数的转换3)实现十六进制数向十进制数的转换。输入相应的字符即可分别进入相应的子功能并在屏幕上显示结果。 输入X:进入实现大写字母向小写字母的转换子功能模块。输入Y: 进入实现十进制数向十六进制数转换的子功能模块。输入Z:进入实现十六进制数向十进制数转换的子功能模块。如果用户输入X,即进入实现大写字母向小写字母转换的子功能模块,如果输入的不是大写字母,应要提示输入错误,请重新输入,直到输入正确为止。通过改变ASSIC码值,实现大写字母向小写字母的转换。显示转换后的字母后,跳转到主菜单,重新选择子功能。如果用户输入Y,即进入实现十进制向十六进制转换的子功能模块,十进

    5、制转十六进制数以二进制为中介,先将输入视为十进制,转换为二进制数保存在BX中。然后再将这个二进制数转换为十六进制数保存在之前设定的单元中并输出,然后跳转到主菜单。如果用户输入Z,即进入实现十六进制向十进制转换的子功能模块,十六进制转换为十进制数的主要思想是按权值展开再相加,转换输出后,跳转到主菜单。2.功能模块分析 本程序主要由四个模块构成。首先是主界面,将显示本程序拥有的所有的子功能。然后是三个子功能。分别拥有将大写字母转换成小写字母,将十进制数转换成十六进制数,将十六进制数转换成十进制数的功能。 主菜单:显示系统名称,显示各字母编号所对应的子功能。 大写字母转换成小写字母:当用户输入X编号

    6、时,便进入此子功能。提示输入一个大写字母,如果输入的不是大写字母则提示输入错误,请重新输入。通过改变ASSIC码值,实现大写字母向小写字母的转换。显示转换后的字母,然后跳转到主菜单。十进制数转换成十六进制数:当用户输入Y编号时,便进入此子功能。提示输入一个十进制数,十进制转十六进制数以二进制为中介,先将输入视为十进制,转换为二进制数保存在BX中。然后再将这个二进制数转换为十六进制数保存在预先准备的单元中,输出之后跳转到主菜单。 十六进制数转换成十进制数:当用户输入Z编号时,便进入此子功能。提示输入一个十六进制数,十六进制数转换成十进制的主要思想是,按权值展开再相加。首先是将输入的字符转换成相应

    7、的数字,通过设置相应的变量,依次进行累乘,直到十六进制数位数全部循环完毕,将每一位所得的数保存在寄存器中,每进行一次就实现一次求和运算。最后将转换成的十进制数输出,跳转到主菜单。三、设计方案1.系统流程图主菜单 开 始 其他 X Y Z Q N N N Y Y Y 2.子程序模块设计(1)大写字母转换成小写字母子程序当用户选择编号X,便选中了这一个子功能。通过判断标识符,程序跳转到标识符所在的位置。根据提示输入一个大写字母,会有一个判断输入是否合法的过程,若输入的是非大写字母,则会提示输入错误,请重新输入,直到输入正确为止。通过改变ASSIC码值,实现大写字母向小写字母的转换。显示转换后的字母

    8、,然后跳转到主菜单。(2)十进制数转换成十六进制数子程序 当用户选择编号Y,便选中了这一个子功能。通过判断标识符,程序跳转到标识符所在的位置。根据提示输入一个十进制数。总体来说是以二进制为中介,先将输入视为十进制,转换为二进制数保存在BX中,然后再将这个二进制数转换为十六进制数保存在之前定义好的的单元中并输出,然后跳转到主菜单。(3)十六进制数转换成十进制数子程序 当用户选择编号Z,便选择了这一个子功能。通过判断标识符,程序跳转到标识符所在的位置。根据提示输入一个十六进制数,此时会进行判断,若是输入字符串不符合十六进制数的要求,则提示输入错误,重新输入,直到输入正确为止。十六进制数转换成十进制

    9、的主要思想是,按权值展开再相加。首先是将输入的字符转换成相应的数字,通过设置相应的变量,在最低位上的权值是1,然后依次是16,256依次进行累乘,直到十六进制数位数全部循环完毕,将每一位所得的数保存在寄存器中,每进行一次就实现一次求和运算。最后将转换成的十进制数输出,跳转到主菜单。3.详细设计(1)主菜单设计include io32.inc .data m1 byte 字母与进制转换系统 ,13,10,0 ;菜单 m2 byte -,13,10,0 ;分割线 m3 byte 编号 操作 ,13,10,0 ma byte X 实现大写字母向小写字母的转换,13,10,0 mc byte Y 实现

    10、十进制向十六进制数的转换,13,10,0 me byte Z 实现十六进制向十进制数的转换,13,10,0 mq byte Q 退出,13,10,0 m_err byte 输入错误,请重新输入,13,10,0 m_meau byte 请输入菜单中的编号: ,0 m_inputl byte 请输入一个大写字母: ,0 m_outputl byte 对应的小写字母: ,0m_meau byte 请输入菜单中的编号: ,0 m_input1 byte 请输入一个十进制数: ,0 m_output1 byte 转换后的十六进制的数: ,0m_meau byte 请输入菜单中的编号: ,0 m_inpu

    11、t3 byte 请输入一个十六进制的数: ,0 m_output3 byte 转换后的十进制数: ,0 array byte 8 dup (0) ;用字符串数组保存十六进制数 sum dword ? ;十进制数变量 len byte ? ;字符串数组的长度 m byte ? array2 byte 100 dup (0) ;用来保存转换后的十六进制数 n dword ? k dword ? j dword ? .codestart: mov eax,offset m1 ;显示菜单中的内容 call dispmsg mov eax,offset m2 call dispmsg mov eax,o

    12、ffset m3 call dispmsg mov eax,offset mx call dispmsg mov eax,offset my call dispmsg mov eax,offset mz call dispmsg mov eax,offset mq call dispmsgmeau: mov eax,offset m_meau call dispmsg ;提示输入相应的菜单编号 call readc ;输入对应的编号 call dispcrlf ;换行 cmp al,x ;判断输入 jz a ;若输入x,则跳转到标识符a cmp al,y jz b ;若输入y,则跳转到标识符b

    13、 cmp al,z jz c ;若输入z,则跳转到标识符c cmp al,q jz q ;若输入q,则跳转到标识符q mov eax,offset m_err call dispmsg ;输入错误,提示错误的信息 jmp meau(2)大写字母转换为小写字母子程序设计 returna: mov eax,offset m_err call dispmsga: mov eax,offset m_inputl call dispmsg ;提示输入一个大写的字母 call readc ;获得字母 mov bl,al ;将输入的内容存储到bl中 call dispcrlf ;换行 cmp al,A ;判

    14、断输入的字母是否合法 jb returna ;如果比A小,则跳转到returna标识符 cmp al,Z ja returna ;如果比Z大,则跳转到returna标识符 call dispc ;显示字母 mov eax,offset m_outputl call dispmsg ;输入正确,则提示输出相应的小写字母 add bl,20h ;实现大写向小写的转换 mov al,bl call dispc ;显示转换后的字母 call dispcrlf ;换行 jmp meau (3)十进制数转换为十六进制数子程序设计 data segmentstr db 0ah,0dhnum db 4 dup

    15、(?),H$tab db 0123456789ABCDEFdata endscode segment assume cs:code,ds:databegin: mov ax,data mov ds,ax ;初始化代码段 xor bx,bx mov cx,10 ;进制next: mov ah,1 int 21h cmp al,0dh jz conv ;如果是回车,表示输入结束,转换开始 push ax ;保存输入值,和AH mov ax,bx mul cx mov bx,ax ;将先前的结果向上推一位 pop ax ;取回本次输入 and al,0fh ;屏蔽掉无用位,类SUB AL,30H x

    16、or ah,ah ;高位归零 add bx,ax ; 合并本次输入 jmp nextconv: mov ax,bx ; 开始转换 mov ch,4 lea bx,tab mov cl,4 lea si,numlopa: rol ax,cl ; 把高4位移到低4位 push ax and ax,000fh ; 取出低4位 mov si,al ;按地址由低到高的顺序将结果由高到底存放 inc si pop ax dec ch jnz lopa lea dx,str mov ah,9 int 21h ;回车换行 mov ah,4ch int 21h call dispcrlf jmp meau ;返

    17、回主菜单(4)十六进制数转换为十进制数子程序设计 mov m,al mov eax,offset m_input3 call dispmsg mov eax,offset array call readmsg mov len,al ;获得字符串长度 xor ecx,ecx ;异或清零 mov cl,len ;计数 dec cl ;自减1 xor eax,eax mov edx,1 ;初始权值again: cmp arrayecx,A jl shiliu_shi1 ;小于A,转向shiliu_shi1 cmp arrayecx,F jg shiliu_shi1 ;大于Z,转向shiliu_shi

    18、1 xor ebx,ebx mov bl,arrayecx ;相对寻址 sub bl,55 ;转换成相应的数字 imul ebx,edx add eax,ebx imul edx,16 ;改变权值 jmp shiliu_shi3shiliu_shi1: cmp arrayecx,0 jl shiliu_shi2 ;小于0,转向shiliu_shi2 cmp arrayecx,9 jg shiliu_shi2 ;大于9,转向shiliu_shi2 xor ebx,ebx ;临时寄存 mov bl,arrayecx sub bl,0 ;转换成相应的数字 imul ebx,edx add eax,e

    19、bx imul edx,16 ;改变权值 jmp shiliu_shi3 shiliu_shi2: mov eax,offset m_err call dispmsg ;提示输入错误 jmp zshiliu_shi3: dec ecx ;自减 cmp ecx,0 jnl again ;不小于0,转向again mov sum,eax cmp m,e jz ee ;直接输出ee: mov eax,offset m_output3 call dispmsg mov eax,sum ;数据输出 call dispuid call dispcrlf jmp meau ;返回主菜单(4)程序调试结果及分

    20、析 图4.1 主菜单界面 图4.2 大写字母转换为小写字母 图4.3 十进制数转换为十六进制数 图4.2 十六进制数转换为十进制数四、结论与心得 通过本次课程设计,我对汇编语言有了进一步的了解,对于编写汇编语言程序的能力有了很大的提高。在此次课程设计中,我更深层次的了解到了汇编的大部分基本的指令。经过几个星期的奋战,对代码进行了无数次的改进,在这个过程中,我的分析问题和解决问题的能力有了很大的提高。在对程序的不断调试中,不断的发现问题,并通过到网上以及图书馆查找相关的资料予以解决,有很大的成就感,提高了自己的自信心。 经过这次课程设计,我收获颇多,不仅仅是分析问题以及解决问题的能力有了很大的提

    21、高,更养成了良好的编程习惯。这对以后的工作是非常有益的。 在编写代码时,由于代码很多,一个小小的问题都将带来很大的麻烦,所以在编写代码时必须非常认真,这也是一种能力的提高。 当程序调试成功,那一份喜悦是无法用语言来描述的。不仅从中体会到了编程的乐趣,提高自己的自信心,更增强了自己对于计算机的兴趣,这是非常重要的。五、参考文献1 易小琳.计算机组成原理与汇编语言.北京:清华大学出版社,2009. 2 钱晓捷.新版汇编语言程序设计.北京:电子工业出版社,2008.3 唐朔飞.计算机组成原理.2版.北京:高等教育出版社,2008.4 洪志全,罗省贤.汇编语言程序设计教程.北京:电子工业出版社,20045 俸远祯,王正智,徐洁等.计算机组成原理与汇编语言程序设计.北京:电子工业出版社,1999.


    注意事项

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

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




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

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

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


    收起
    展开