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