《微机原理与接口技术》课程设计说明书-英文字母大小写转换程序设计.doc_第1页
《微机原理与接口技术》课程设计说明书-英文字母大小写转换程序设计.doc_第2页
《微机原理与接口技术》课程设计说明书-英文字母大小写转换程序设计.doc_第3页
《微机原理与接口技术》课程设计说明书-英文字母大小写转换程序设计.doc_第4页
《微机原理与接口技术》课程设计说明书-英文字母大小写转换程序设计.doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

武汉理工大学微机原理与接口技术课程设计说明书课程设计任务书学生姓名: * 专业班级: 电信0801班 指导教师: * 工作单位: 信息工程学院 题 目:英文字母大小写转换程序设计初始条件:具备数字电路的理论知识;具备微机原理的理论知识和实践能力;熟悉汇编语言编程技术;熟悉80x86的cpu结构和指令系统;熟悉相关常用接口电路的设计使用方法。要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1、输入英文字母串,在回车后实现大小写转换2、按命令要求将字符串转换为全部大写或全部小写3、非英文字母不允许输入并声响报警4、程序采用汇编语言在pc机上完成5、完成符合学校要求的设计说明书时间安排:一周,其中2天程序设计,2天程序调试,1天完成课程设计报告书及答辩指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日目 录摘要i1 dos功能调用12总体方案论证43程序流程图及程序设计分析53.1主程序设计53.1.1流程图及其分析53.1.2程序设计63.2 chos字符串转换子程序设计83.2.1流程图及其分析.83.2.2程序设计93.3小写转大写子程序设计113.3.1流程图及其分析113.3.2程序设计123.4大写转小写子程序设计133.4.1流程图及其分析133.4.2程序设计144 总程序155 课程设计心得体会20参考文献21摘 要汇编语言是用指令的助记符、符号地址、标号等书写程序的语言,实际上是机器语言的一种符号表示,主要特点是可以使用助记符来表示机器指令的操作码和操作数,可以用标号和符号来代替地址、常量和变量。汇编语言是能够利用计算机所有硬件特性进而直接控制硬件的唯一语言。本次课程设计的任务是用汇编语言做一个英文字母大小写转换程序,按照用户的要求完成对输入数据的大写或者小写转换。先输入要转换的数据,再对数据进行检验判断其合法性,对不合法的数据进行警报并重新输入数据,对合法的数据按照要求进行大写或者小写转换,最后显示转换后的字符串。关键词:dos功能调用 大写英文 小写英文 转换 1 dos功能调用在进行设计之前,先要弄清楚int 21h软中断的dos功能调用。ms dos操作系统为程序设计者提供了可以直接调用的软中断处理程序,每一个中断处理程序完成一个特定的功能操作。依据编程需要选择适当的处理程序,编程者不需再重新编写程序,而是使用int n软中断指令。每执行一种不同类型码n的软中断指令,就执行一个中断处理程序,其主要功能如下。 磁盘的读/写控制。 内存管理、文件操作和目录管理。 基本输入/输出(对键盘、打印机和显示器等)控制,另外还有日期、时间管理等。 当类型码n05h1fh时,调用bios的中断处理程序;类型码n20h3fh时,调用dos的中断处理程序,这次课程设计使用的是dos中断处理程序。int 21h软中断是一个具有几十种功能的大型中断服务程序,给这些子功能程序分别予以编号,称为功能号。每个功能程序完成一种特定的操作和处理。对int 21h软中断指令对应的功能子程序的调用称为dos系统功能调用。调用系统功能子程序时,不必了解所使用设备的物理特性、接口方式及内存分配等,也不必编写繁琐的控制程序,这样给应用者带来了很大的方便。 应用int 21h系统功能调用的方法如下。 入口参数送指定的寄存器或内存。 功能号送ah中。 执行int 21h软中断指令。 有的子功能程序不需要入口参数,但大部分需要把参数送入指定位置。程序员只要给出这三方面的信息,不必关心程序具体如何执行,在内存中的存放地址如何,dos就会根据所给的参数信息自动转入相应的子程序去执行并产生相应结果。下面介绍常用的功能调用。(1) 键盘输入并显示(1号功能调用) 格式: mov ah, 01h int 21h 功能:按下任何键,将其对应字符的ascii码送入al中,并在屏幕上显示该字符。如果按下的是ctrlbreak组合键,则终止程序执行。1号功能调用无须入口参数,出口参数在al中。 (2) 键盘输入但不显示输入字符(8号功能调用) 格式: mov ah, 08h int 21h功能:同1号功能调用,但字符不在屏幕上显示。 (3) 屏幕显示一个字符(2号功能调用) 格式: mov dl, 字符 mov ah, 02h int 21h 功能:将置入dl寄存器中的字符在屏幕上显示输出。 (4) 打印输出(5号功能调用) 格式: mov dl, 字符 mov ah, 05h int 21h 功能:将置入dl寄存器中的字符送打印机接口,打印输出。 (5) 屏幕显示字符串(9号功能调用) 格式: mov dx, 字符串的偏移地址 mov ah, 09h int 21h功能:在屏幕上显示字符串。 在使用9号功能调用时,应当注意以下问题。 待显示的字符串必须先放在内存一数据区(ds段)中,且以$符号作为结束标志。 应当将字符串首地址的段基址和偏移地址分别存入ds和dx寄存器中。 (6) 字符串输入功能调用(0ah号功能调用) 格式: mov dx, 已定义缓冲区的偏移地址 mov ah, 0ah int 21h功能:从键盘接收字符,并存放到内存缓冲区。在使用0ah号功能调用时,应当注意以下问题。 执行前先定义一个输入缓冲区,缓冲区内第一个字节定义为允许最多输入的字符个数,字符个数应包括回车符0dh在内,不能为“0”值。第二个字节保留,在执行程序完毕后存入输入的实际字符个数。从第三个字节开始存入从键盘上接收字符的ascii码。若实际输入的字符个数少于定义的最大字符个数,则缓冲区其他单元自动清0。若实际输入的字符个数大于定义的字符个数,其后输入的字符丢弃不用,且响铃示警,一直到输入回车键为止。整个缓冲区的长度等于最大字符个数再加2。 应当将缓冲区首地址的段基址和偏移地址分别存入ds和dx寄存器中。 (7) 返回dos操作系统(4ch号功能调用) 格式: mov ah, 4ch int 21h功能:终止当前程序的运行,并把控制权交给调用的程序,即返回dos系统,屏幕出现dos提示符,如“c: ”,等待dos命令。 除了这几种功能调用,还有其他的,这里就不再一一介绍了。2总体方案论证该课程设计的任务是做一个英文字母大小写转换程序,完成对输入数据的大写或者小写转换。输入部分:在输入之前,先利用int 21h的9号功能调用输出显示输入字符串提示符please input the string:再利用int 21h的8号功能调用输入字符串(在屏幕上并不显示)。由于键盘输入的并不一定是英文字母,所以要对输入的每一个字符进行判别,如果输入的字符串都是英文字符则进行大小写转换,并将字符串存储到缓冲区,且将字符输出显示到屏幕上;如果输入的字符串中有非英文字符,则产生报警声并返回重新输入数据,直至输入的字符符合要求为止。转换部分:由于要求要有两种转换方式,即大写字母转换为小写字母或者由小写字母转换为大写字母,所以要求用户在进行转换前输入提示要转换的方法。为解决这个问题,先利用int 21h的9号功能调用输出显示转换方法选择提示符please choose the type to output(1or2): ,1为uppercase,2为lowercas。再利用int 21h的8号功能调用输入1或者2(在屏幕上并不显示)。如果此时输入为1,则进行字符串小写转大写的转换,如果此时输入为2,则进行字符串大写转小写的转换。输出部分:先利用int 21h的9号功能调用输出显示输出提示符the result is:,再利用int 21h的9号功能调用输出显示转换后的字符串。3程序流程图及程序设计分析3.1主程序设计3.1.1流程图及其分析主程序的流程图如图3-1所示.开始字符存储到buffer中发出警报声 字符输出 输入字符串输出字符串输入提示符 结束判断字符中是否为回车?n判断字符是否为az或者az?调用子程序chos完成字符大小写转换si增1转换结果输出换行输出输出结果提示符0赋值给si寄存器yny图3-1 主程序流程图首先在屏幕上输出显示字符串输入提示符,再进行字符串的输入,然后对输入的第一个字符进行判别。如果该字符不等于0dh,则继续判断该字符是否为英文字符。如果结果为否则产生报警声并返回重新输入数据,直至输入的字符符合要求为止;如果结果为是则将字符存储到缓冲区,并将字符输出显示到屏幕上。然后进行下一个字符的判别,直至出现一个字符等于0dh,此时字符串验证完毕,调用子程序chos进行字符串的大小写转换,转换完后结果输出显示到屏幕上,并结束程序。3.1.2程序设计程序如下:start: mov ax,data mov ds,ax mov ah,9 ;输出显示输入提示符:please input the string: lea dx,ms1 int 21h mov si,0 ;源串偏移地址si置0again: mov ah,8 ;输入字符串 int 21h cmp al,13 ;将al与0dh进行比较,若相等,则转移到change je change cmp al,41h ;将al与a进行比较,若al小于a,则转移到sing jb sing cmp al,5bh ;将al与z进行比较,若al小于等于z,则转移到chg jb chg cmp al,61h ;将al与a进行比较,若al小于a,则转移到sing jb sing cmp al,7bh ;将al与z进行比较,若al小于等于z,则转移到chg jb chgsing: ;输入为非英文字母,发出警报,并重新输入 mov ah,2 mov dl,07h int 21h jmp againchg: ;将英文字母存入缓冲区,并在屏幕中显示 mov buffer+si,al mov dl,al mov ah,2 int 21h inc sijmp againchange: ;转换过程 mov buffer+si,$ call chos ;调用chos子程序 mov ah,2 mov dl,10 ;回车 int 21h mov dl,13 ;换行 int 21h mov ah,9 ;输出显示输出提示符 lea dx,ms2 int 21h mov ah,9 lea dx,buffer ;屏幕显示转换结果 int 21h mov ah,1 int 21h mov ah,4ch ;结束程序 int 21h 3.2 chos字符串转换子程序设计3.2.1流程图及其分析chos字符串转换子程序的流程图如图3-2所示 开始 输入字符将ax,dx存入堆栈返回判断字符是否为1?判断字符是否为2调用子程序aa,完成字符由小写转为大写dx,ax内容出栈换行输出转换方法选择提示符:1为转换为大写,2为转换为小写调用子程序ba,完成字符由大写转为小写ynny图3-2 chos子程序流程图首先,应该把断点地址及一些寄存器的值压入堆栈,保护现场。在屏幕上输出转换方法选择提示符,用户根据需要输入数据1或者2。若输入的数据为1则调用子程序aa,完成字符串由小写转换为大写;若输入的数据是2则调用子程序ba,完成字符串由大写转换为小写。转换完了以后,把断点地址及一些寄存器的值弹出堆栈,最后返回主程序。3.2.2程序设计程序如下:chos proc ;chos子程序 push ax ;ax,dx入栈 push dx mov ah,2 mov dl,10 ;回车 int 21h mov dl,13 ;换行 int 21h mov ah,9 ;屏幕显示转换方法选择提示符 lea dx,ms3int 21hre: mov ah,8 ;输入数据1或者2,但不显示 int 21h cmp al,31h ;输入为1,程序转移至upje up cmp al,32h ;输入为2,程序转移至lo je lo mov ah,2 ;输入不为1也不为2时,发出警报,并重新输入数据 mov dl,7 int 21h jmp reup: call aa ;调用子程序aa jmp out1lo: call ba ;调用子程序baout1: pop dx ;dx,ax出栈 pop ax ret ;返回主程序chos endp3.3小写转大写子程序设计3.3.1流程图及其分析小写转大写子程序的流程图如图3-3所示 开始 将si的值赋给cx,将0赋给di将ax,cx,di存入堆栈返回判断字符是否为为大写?di的值增1将字符转化为大写,并存储取代原来的字符取buffer中的字符cx的值减1判断cx是否为0?yax,cx,di出栈ynn图3-3 小写转大写子程序aa的流程图首先,应该把断点地址及ax,cx,di寄存器压入堆栈,保护现场。再将si的值赋给cx,将0赋给di。取出buffer单元中的字符,并判断该字符是否为大写的英文字母,如果是,则不必进行转换;如果不是,则将小写字母转化为大写字母并替代原来的小写字母。循环判断其他的字符,直至cx的值为0,结束循环,返回主程序。3.3.2程序设计程序如下:aa proc ;子程序aa push ax ;ax,cx,di入栈 push cx push di mov cx,si ;cx=si mov di,0 ;di=0top1: mov al,buffer+di cmp al,61h ;将al与a进行比较,若al小于a,则程序转移到ne1 jb ne1 sub al,20h ;小写字母转换为大写字母 mov buffer+di,al ;保存转换后的大写字母ne1:inc di ;di增1loop top1 ;循环返回top1 pop di ;ax,cx,di出栈 pop cx pop ax ret ;返回aa endp3.4大写转小写子程序设计3.4.1流程图及其分析大写转小写子程序的流程图如图3-4所示 开始 将si的值赋给cx,将0赋给di将ax,cx,di存入堆栈返回判断字符是否为为小写?di的值增1将字符转化为小写,并存储取代原来的字符取buffer中的字符cx的值减1判断cx是否为0?nax,cx,di出栈yny图3-4 大写转小写子程序ba的流程图首先,应该把断点地址及ax,cx,di寄存器压入堆栈,保护现场。再将si的值赋给cx,将0赋给di。取出buffer单元中的字符,并判断该字符是否为小写的英文字母,如果是,则不必进行转换;如果不是,则将大写字母转化为小写字母并替代原来的大写字母。循环判断其他的字符,直至cx的值为0,结束循环,返回主程序。3.4.2程序设计程序如下:ba proc ;子程序ba push ax ;ax,cx,di入栈 push cx push di mov cx,si ;cx=si mov di,0 ;di=0top: mov al,buffer+di cmp al,5ah ;将al与z进行比较,若al大于z,则程序转移到ne ja ne add al,20h ;大写字母转换为小写字母 mov buffer+di,al ;保存转换后的小写字母ne: inc di ;di增1 loop top ;循环返回top pop di ;ax,cx,di出栈 pop cx pop ax ret ;返回ba endp4总程序总程序如下:data segment ms1 db please input the string:,10,13,$ ms2 db the result is:,10,13,$ ms3 db please choose the type to output(1or2):,10,13 db 1.uppercase,9,2.lowercase$ buffer db 200 dup (0)data endsstack segment db 200 dup (?)stack endscode segment assume cs:code,ds:data,ss:stackstart: mov ax,data mov ds,ax mov ah,9 lea dx,ms1 int 21h mov si,0 again: mov ah,8 int 21h cmp al,13 je change cmp al,41h jb sing cmp al,5bh jb chg cmp al,61h jb sing cmp al,7bh jb chgsing: mov ah,2 mov dl,07h int 21h jmp againchg: mov buffer+si,al mov dl,al mov ah,2 int 21h inc si jmp againchange: mov buffer+si,$ call chos mov ah,2 mov dl,10 int 21h mov dl,13 int 21h mov ah,9 lea dx,ms2 int 21h mov ah,9 lea dx,buffer int 21h mov ah,1 int 21h mov ah,4ch int 21h ;= chos proc push ax push dx mov ah,2 mov dl,10 int 21h mov dl,13 int 21h mov ah,9 lea dx,ms3 int 21hre: mov ah,8 int 21h cmp al,31h je up cmp al,32h je lo mov ah,2 mov dl,7 int 21h jmp reup: call aa jmp out1lo: call baout1: pop dx pop ax retchos endp;= ba proc push ax push cx push di mov cx,si mov di,0top: mov al,buffer+di cmp al,5ah ja ne add al,20h mov buffer+di,al ne: inc di loop top pop di pop cx pop ax retba endp;=aa proc push ax push cx push di mov cx,si mov di,0top1: mov al,buffer+di cmp al,61h jb ne1 sub al,20h mov buffer+di,al ne1: inc di loop top1 pop di pop cx pop ax retaa endpcode endsend start5 课程设计心得体会经过这几天的微机原理课程设计,我觉得学习像微机原理与接口技

温馨提示

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

评论

0/150

提交评论