北华航天工业学院
课程设计报告(论文)
设计课题:代码转换
大小写字母转换
专业班级:电子信息工程
学生姓名:
指导教师:
设计时间: 2010-12-16
北华航天工业学院电子工程系
微机原理课程设计任务书
指导教师:教研室主任:
年月日
内容摘要
在课程设计之前,具备微机原理的理论知识和实践能力;熟悉汇编语言编程技术;熟悉80X86的CPU结构和指令系统;熟悉相关常用接口电路的设计使用方法是必不可少的。
因此原理部分重新温习并整理了相关知识。
课程设计要求进行大小写字母的转换。
其实字母大小写的区别在于他们的ASCII码范围,它们之间的转换其实就是加减相应的ASCII码值。
在判断输入的字母是大写的还是小写的(即判断输入符号ASCII码在41H~5AH还是在61H~7AH内)之后,决定判断是加上还是减去ASCII码值。
关键词:汇编代码转换大小写
目录
一、概述 (1)
二、方案设计与论证 (1)
1.汇编语言基础 (1)
2.方案设计 (2)
三、程序设计 (3)
1.程序设计流程图 (3)
2.程序代码 (4)
四、运行结果 (5)
五、心得体会 (6)
六、参考文献 (6)
一、概述:
在计算机系统中有多种数制和编码,常用的数制有二进制、八进制以及十六进制,常用的代码有BCD码、ASCll码和七段显示码等。
这些数制和编码根据其作用的不同,在存储形式上也有差异。
在实际应用中,它们也因使用的要求不同而有所差异。
在配备操作系统管理程序的计算机中,有些代码转换程序已在系统管理软件中编好。
还有些代码转换需要根据使用要求通过编程完成。
因此,代码转换是非数据处理中最常见的情况。
二、方案设计:
1、汇编语言基础
汇编:计算机不能直接识别和执行汇编语言程序,而要通过“翻译”把源程序译成机器语言程序(目标程序)才能执行,这一“翻译”工作称为汇编。
汇编有人工汇编和计算机汇编两种方法。
汇编语言是面向机器的,每一类计算机分别有自己的汇编语言。
汇编语言占用的内存单元少,执行效率高,广泛应用于工业过程控制与检测等场合。
汇编语言语句格式
标号:操作符操作数;注释
START: MOV A, 30H ;A←(30H)
标号用来标明语句地址,它代表该语句指令机器码的第一个字节的存储单元地址。
标号一般规定由1~8个英文字母或数字组成,但第一个符号必须是英文字母。
注释只是对语句或程序段的含义进行解释说明,以方便程序的编写、阅读和交流,简化软件的维护,一般只在关键处加注释。
伪指令:伪指令只用于汇编语言源程序中,对汇编过程起控制和指导的作用,不生成机器码。
汇编结束,自动消失。
汇编语言程序设计步骤
(1)分析问题。
(2)确定算法。
(3)设计程序流程。
(4)分配内存单元:分配内存工作单元,确定程序和数据区的起始地址。
(5)编写汇编语言程序。
(6)调试程序。
2、方案设计
模块1、实现小写字母向大写字母的转换,主要利用小写字母比大写字母大20H的关系。
模块2、实现大写字母向小写字母的转换,与模块2类似,将大写字母的ASCll值加上20H就可以转换成小写字母。
模块3、键盘输入,显示输出。
三、程序设计
1、程序设计流程图
2、程序代码
从键盘输入一串字符,若是小写字符则转换成大写字符在下一行输出,若是大写字符则转换成小写字符在下一行输出,若都不是则原样在下行输出。
data segment
p1 db 100
p2 db 0
array db 100h dup(?) ;置100个字节的缓冲区存放数据data ends
code segment ;代码段
assume cs:code,ds:data
begin:
lea bx,array ;将array的首地址给bx
mov ax,cs ;置cs-->ds
mov ds,ax
mov dx,offset p1 ;将p1的偏移量给dx
mov ah,0ah ;调用中断21的0a号功能从键盘接收字符
int 21h
mov bx,0
mov bl,p2
mov array[bx],'$' ;送'$'至字符串尾
mov di,0ffffh ;-1-->di
next: inc di ;di自加
cmp array[di],'$' ;比较
je exit ;相等,则跳到exit执行
cmp array[di],41h ;arrary[di]中的字符与A比较
jl next ;小于,则跳
cmp array[di],5ah ;与Z比较
jg next1 ;大于,则跳
add array[di],20h ;加20h,大写转小写
jmp next
next1:
cmp array[di],'$' ;比较
je exit ;相等,则跳到exit执行
cmp array[di],61h ; arrary[di]中的字符与a比较
jl next ;小于,则跳
cmp array[di],7ah ;与z比较
jg next ;大于,则跳
sub array[di],20h ;减20h,小写转大写
jmp next
exit: mov p1,0dh ;回车换行
mov p2,0ah
mov ah,09h
int 21h
mov ah,4ch ;程序结束
int 21h
code ends
end begin
四、运行结果:
当输入字母串abcdef67ABCDE后,按回车键转换为ABCDE67abcdef,结果如下图所示
五、心得体会:
一直以为自己微机原理的水平不错了,直到着手做课程设计才不得不承认,自己的理论知识并不扎实,对于许多指令和一些基本的编程方法都掌握不清晰。
于是,为了顺利完成课程设计,我又拿起课本,用心的阅读,重新掌握了相关的知识。
由此看来,知识只有在实践中才能真正掌握。
难怪人们说汇编语言编程必须在使用中慢慢理解。
因为本学期做了许多微机原理的实验,这次要用汇编语言来实现大小写字母的转换,所以自己一开始感觉这会非常的简单。
直到真正的理解相关原理,要编写程序实现的时候,才发现自己对汇编程序的了解确实还不够,尤其是编程方面的能力有待提高。
在不断地再次学习和理解过程中,我慢慢掌握了更多汇编语言的应用知识,最终在参考程序的辅助下顺利编写出了大小写字母转换的程序。
总结起来,自己发现,编程必须在应用过程中才会更加牢固。
想想自己大三上学期做过的上机实验也不少,个把月不用,就一下子生疏了,因此我感觉对于重要的知识,偶尔复习下还是很有必要的,正所谓温故而知新。
把编写好的程序输入软件时候,出现了许多小问题,比如句子没有加逗号,没有定义变量等等。
归纳起来都是因为编程掌握不牢固,写程序没有条理,加上自己粗心大意的恶习依旧没改正造成的,以后需要努力改正。
总的来说,这次课程设计,自己受益匪浅。
不但加固了微机原理部分知识的理解,而且加强了对汇编语言的应用能力。
六、参考文献:
[1] 微型计算机原理与接口技术张荣标编著机械工业出版社
电子工程系微机原理与接口技术课程设计成绩评定表专业:电子信息工程班级:学号:姓名:
年月日
11。