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

上传人:风**** 文档编号:976008 上传时间:2024-03-19 格式:DOC 页数:16 大小:105.50KB
下载 相关 举报
计算机组成原理与汇编语言课程设计(字母与进制转换系统).doc_第1页
第1页 / 共16页
计算机组成原理与汇编语言课程设计(字母与进制转换系统).doc_第2页
第2页 / 共16页
计算机组成原理与汇编语言课程设计(字母与进制转换系统).doc_第3页
第3页 / 共16页
计算机组成原理与汇编语言课程设计(字母与进制转换系统).doc_第4页
第4页 / 共16页
计算机组成原理与汇编语言课程设计(字母与进制转换系统).doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

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

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

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

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

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

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

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

8、输入的是非大写字母,则会提示输入错误,请重新输入,直到输入正确为止。通过改变ASSIC码值,实现大写字母向小写字母的转换。显示转换后的字母,然后跳转到主菜单。(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 ;分割线

10、 m3 byte 编号 操作 ,13,10,0 ma byte X 实现大写字母向小写字母的转换,13,10,0 mc byte Y 实现十进制向十六进制数的转换,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 请输入一个十

11、进制数: ,0 m_output1 byte 转换后的十六进制的数: ,0m_meau byte 请输入菜单中的编号: ,0 m_input3 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,offs

12、et m1 ;显示菜单中的内容 call dispmsg mov eax,offset m2 call dispmsg mov eax,offset 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 dispcrl

13、f ;换行 cmp al,x ;判断输入 jz a ;若输入x,则跳转到标识符a cmp al,y jz b ;若输入y,则跳转到标识符b 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 ;提示输入一个大写的字母 c

14、all readc ;获得字母 mov bl,al ;将输入的内容存储到bl中 call dispcrlf ;换行 cmp al,A ;判断输入的字母是否合法 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 ;换行

15、 jmp meau (3)十进制数转换为十六进制数子程序设计 data segmentstr db 0ah,0dhnum db 4 dup(?),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 m

16、ov bx,ax ;将先前的结果向上推一位 pop ax ;取回本次输入 and al,0fh ;屏蔽掉无用位,类SUB AL,30H xor 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,st

17、r mov ah,9 int 21h ;回车换行 mov ah,4ch int 21h call dispcrlf jmp meau ;返回主菜单(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_sh

18、i1 ;小于A,转向shiliu_shi1 cmp arrayecx,F jg shiliu_shi1 ;大于Z,转向shiliu_shi1 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 eb

19、x,ebx ;临时寄存 mov bl,arrayecx sub bl,0 ;转换成相应的数字 imul ebx,edx add eax,ebx 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 mo

20、v eax,sum ;数据输出 call dispuid call dispcrlf jmp meau ;返回主菜单(4)程序调试结果及分析 图4.1 主菜单界面 图4.2 大写字母转换为小写字母 图4.3 十进制数转换为十六进制数 图4.2 十六进制数转换为十进制数四、结论与心得 通过本次课程设计,我对汇编语言有了进一步的了解,对于编写汇编语言程序的能力有了很大的提高。在此次课程设计中,我更深层次的了解到了汇编的大部分基本的指令。经过几个星期的奋战,对代码进行了无数次的改进,在这个过程中,我的分析问题和解决问题的能力有了很大的提高。在对程序的不断调试中,不断的发现问题,并通过到网上以及图书馆

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

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

当前位置:首页 > 学术论文 > 管理论文

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922