微机原理课程设计 汇编语言 ——将键盘输入的小写字母转换成大写字母的设计
- 格式:pdf
- 大小:61.46 KB
- 文档页数:3
《微机原理与接口技术》课程设计(学年论文)说明书课题名称:代码转换程序设计(A3-2)学生学号:专业班级:学生姓名:学生成绩:指导教师:***课题工作时间: 2011-6-13 至 2011-6-18武汉工程大学教务处制填写说明:1. 一、二、三项由指导教师在课程设计(学年论文)开始前填写并交由学生保管;2. 四、五两项由学生在完成课程设计后填写,并将此表与课程设计一同装订成册交给指导教师;3. 成绩评定由指导教师按评定标准评分。
4. 此表格填写好后与正文一同装订成册。
课程设计评审标准(指导教师用)代码转换程序设计说明书1、方案论证(1)大小写字母、二进制与十六进制、十六进制与十进制的转换方法在计算机系统中有多种数制和编码,常用的有二进制,八进制以及16进制。
这些数制和编码虽然在储存形式上各有差异,但彼此也相互联系。
大小写转换,主要利用小写字母比大小字母大20H的关系,将小写字母减20H就转换为大写字母,将大写字母加20H就转换为小写字母。
二进制,十进制以及16进制,主要利用0到9的数值等于相应ASCALL码减30H,而A到F的数值等于相应ASCALL码减37H,这样即可利用移位,除十取余取整等方法实现其相互转换。
(2)宏汇编程序设计要点宏是源程序中的一段有独立功能的程序代码。
宏指令,用户自定义的指令。
编程序时候,将多次使用的功能用一条宏指令来代替。
汇编包括指令,伪指令,宏指令。
前两个都是规定的,最后一个是自己设计的。
好处是用起来方便定义,但是要先定义,后调用,其优点是可以随时随地的调用宏汇编程序。
2、程序设计(1)总体设计对“实现从键盘输入16位二进制数,转换成4位十六进制数显示出来。
”的分析处理。
首先将键盘输入的二进制数以二进制形式储存起来:每次输入,将其ASCALL码值将减去30H,然后左移一位,在然后与下个输入的减30H的数相加,这样就将键盘输入的值以二进制形式储存在寄存器中.二进制转换为16进制数输出:用循环指令左移四位,取出最低4位,利用16进制所对应的ASCALL码值比其本身大30H或37H的关系,将低位转换成对应的ASCALL码值,再调用DOS系统显示字符功能,将转换后的字符显示出来,如此循环四次即可.程序总流程图:(2)程序设计二进制转十六进制流程图:程序代码及注释:;PUBLIC XPEXTRN INFO4:BYTE,INFO1:BYTE,INFO2:BYTECODE SEGMENTXP PROC FARASSUME CS:CODECALL DEC2BIN ;调用将键盘输入的ASCALL值转换为二进制数LEA DX,INFO2MOV AH,9INT 21H ;显示提示信息CALL BIN2HEX;调用将储存的二进制转换为16进制函数MOV DL,'H'MOV AH,2INT 21HRETCAL: MOV DL,0DHMOV AH,2INT 21HMOV DL,0AHMOV AH,2INT 21HLEA DX,INFO4MOV AH,9INT 21H;输入非二进制数,显示错误DEC2BIN PROC NEARLEA DX,INFO1MOV AH,9INT 21H;显示提示信息XOR BX,BX ;BX清零NEWCHAR: MOV AH,1INT 21H ;键盘输入,存放在AL中CMP AL,0DHJE RE;如果输入回车键,键盘输入结束SUB AL,30HJL CALCMP AL,1JG CAL ;输入为非二进制数,显示错误并退出CBWXCHG AX,BXMOV CX,2MUL CXXCHG AX,BXADD BX,AXJMP NEWCHAR;将键盘输入的制转换为二进制数,存放在BX中,并且每输入一个值,先将BX左移一位再相加. RE: MOV DL,'B'MOV AH,2INT 21HRETDEC2BIN ENDPBIN2HEX PROC NEARMOV C H,4ROTATE: MOV CL,4ROL BX,CL ;BX每左移4位输出,四位二进制表示一位十六进制MOV A L,BLAND A L,0FHADD A L,30HCMP A L,3AHJL PRINTIT ;结果若为0到9的数,则加30H后直接输出ADD AL,07H ;结果若为A到F的数,则加30H后再加07H直接输出PRINTIT: MOV DL,ALMOV AH,2INT 21HDEC CHJNE ROTATERETBIN2HEX ENDPCRLF PROC NEARMOV DL,0DHMOV AH,2INT 21HMOV DL,0AHMOV AH,2INT 21H ;回车换行RETCRLF ENDPXP ENDPCODE ENDSEND3、程序调试步骤与结果(1)编辑源程序(2)汇编源程序(3)连接程序(4)在TD中调试程序(5)程序运行结果结果说明:当输入小写字母(如a)时,就转换成相应的大写字母(如A),反之亦然;当如入二进制(如1011B),,就转换成相应的十六进数(000BH),反之亦然;如果输入的字母或数字不符合要求,就会显示“INPUT ERROR”4、结论。
设计 6、将键盘输入的小写字母变换成大写字母的设计1.实验要求:为认识小写字母和大写字母在计算机内的表示方法,并学习怎样进行变换。
编写程序,接收键盘字符,并将此中的小写字母转变成大写字母,而后显示在屏幕上。
2.参照流程:进口段存放器和货仓初始化BX 指向字符行缓冲区首址偏移指针 SI 清 0INT 21H 的 01H 号子功能接收键入字符Y是 ctrl+c 键?NY是回车键?NN是小写字母?Y小写字母的ASCII 码值转变成大写字母的ASCII 码值存入字符缓冲区[BX+SI] 单元SI 加 1 指向下一单元显示变换后的字符行缓冲区内容返回 DOS3. 程序清单:DATA SEGMENTDATA1DB20 DUP(?)DISPP1DB 'please input letters, end with enter, exit with ctrl-c',0DH,0AH,'$'DISPP2DB 'the inverted litter is:', 0DH, 0AH,'$'DISPP3DB0DH,0AH,'$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV SI,00HMOV BX,OFFSET DATA1LEA DX,DISPP1MOV AH,9INT 21HL1:MOV AH,1INT 21HCMP AL,03HJZ L4CMP AL,0DHJZ L3CMP AL,61HJZ L2SUB AL,20HJMP L2L2: MOV[BX+SI],ALINC SIJMP L1L3:LEA DX,DISPP3MOV AH,9INT 21HLEA DX,DISPP2MOV AH,9INT 21HMOV [BX+SI],ALMOV AL,0AHMOV [BX+SI+1],ALMOV AL,'$'MOV [BX+SI+2],ALMOV DX,BXMOV AH,9INT 21HLEA DX,DISPP3MOV AH,9INT 21HJMP L4L4:MOV AH,4CHINT 21HCODE ENDSEND START4.运转结果显示:。
物理与电气工程学院课程实践报告用汇编语言对字母大小写转换姓名** ***********专业电气工程及其自动化班级电气工程及其自动化1班年级2000级指导教师00 00成绩日期0000.6.20一.概述在计算机系统中有多种数制和编码,常用的数制有二进制、八进制以及十六进制,常用的代码有BCD 码、ASCll码和七段显示码等。
这些数制和编码根据其作用的不同,在存储形式上也有差异。
在实际应用中,它们也因使用的要求不同而有所差异。
在配备操作系统管理程序的计算机中,有些代码转换程序已在系统管理软件中编好。
还有些代码转换需要根据使用要求通过编程完成。
因此,代码转换是非数据处理中最常见的情况。
二.设计要求完成一个字母或数制之间的转化程序,主程序分别具有可选择的子功能,按相应的字符,可分别进入相应的子功能并在屏幕上显示结果。
可选择的子功能分别为:(1)实现小写字母向大写字母的转换(2)实现大写字母向小写字母的转换三.设计思想与工作原理小写字母的ASC码比大写字母的ASC码大20H,因此,大写转小写就是将大写字母的ASC码加20H,反之,将小写字母的ASC码减20H。
大小写字母转换功能,是通过调用子函数input实现对字符串的输入,然后调用宏gaixie来实现对大小写的转换,其中宏是通过参数的传递来确定是小写转换成大写,还是大写转换成小写的。
从而决定是对操作数进行加或减20H。
80x86从功能上分执行单元EU(Execution Unit),和总线接口单元BIU(Bus Interface Unit),执行单元由算术逻辑单元(ALU)、标志寄存器、通用寄存器组和EU控制器等部件组成。
指令执行部件EU由算术逻辑单元、标志寄存器、通用寄存器和EU控制器等部件组成。
主要功能是执行指令:一般顺序执行,EU不断地从指令队列中取指令连续执行,而省去访问存储器取指令的时间。
需要访问存储器取操作数时,EU将访问地址送给BIU后,将要等待操作数到来后才能继续操作;遇到转移类指令时,要将指令队列中的后续指令作废,等待BIU重新从存储器取出目标地址中的指令代码进入指令队列后,EU才能继续执行指令。
微机原理课程设计设计一:从键盘输入十六进制数并显示出二进制值设计二:字符串匹配设计设计三:字符和数据显示的设计设计四:键盘输入小写字母转换成大写字母设计五:计算N!的设计2011-7-6设计一:从键盘输入十六进制数并显示出二进制值实验目的:掌握接收键盘数据的方法,并了解数据显示时须转换为ASCII码的原理。
实验内容:将键盘接收到的4位十六进制数据转换为等值的二进制数,再显示在屏幕终端上。
流程图:程序源代码:CRLF MACROMOV AH,02HMOV DL,0DHINT 21HMOV AH,02HMOV DL,0AHINT 21HENDMDA TA SEGMENTMARK DB ?MESS DB 'INPUT THE NUMBER! Press Enter to Transition,Press Space to Exit!',0DH,0AH,'Input:$'ERROR DB 0DH,0AH, 'Input Error!',0DH,0AH,'$'DA TA ENDSSTACK SEGMENTSTA DW 32 DUP(?)TOP DW ?STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART: MOV AX,DATAMOV DS,AXMOV ES,AXMOV SP,TOPHEAD: CRLFMOV MARK,0MOV AH,09HLEA DX,MESSINT 21H ;显示提示输入的信息CALL GETNUM ;接收键入数值送DXCMP MARK,01HJE HEADMOV CX,0010H ;16位MOV BX,DXTTT: ROL BX,1 ;循环左移1位MOV DL,BLAND DL,01H ;屏蔽掉高7位ADD DL,30HMOV AH,02HINT 21H ;显示二进制位对应的ASCII字符LOOP TTTJMP HEADFINI: MOV AH,4CHINT 21H ;返回DOSGETNUM PROC NEAR ;子程序,接收键入数值送DX PUSH CXXOR DX,DXGGG: MOV AH,01HINT 21HCMP AL,0DH ;输入为回车,则进行转换JE PPPCMP AL,20H ;输入为空格,则退回DOSJE FINICMP AL,30HJB KKKSUB AL,30HCMP AL,0AHJB GETSCMP AL,11HJB KKKSUB AL,07HCMP AL,0FHJBE GETSCMP AL,2AHJB KKKCMP AL,2FHJA KKKSUB AL,20HGETS: MOV CL,04SHL DX,CLXOR AH,AHADD DX,AXJMP GGGKKK: MOV AH,09HMOV DX,OFFSET ERRORINT 21HMOV MARK,01HPPP: PUSH DXCRLFPOP DXPOP CXRETGETNUM ENDPCODE ENDSEND START运行结果设计二:字符串匹配设计实验内容:编写程序实现两个字符串比较。
《微机原理及接口技术》复习总结综合版——简答题第一篇:《微机原理及接口技术》复习总结综合版——简答题综合版—简答题欢迎使用KNKJ2012DXZY系统《微机原理及接口技术》学科复习综合版—简答题1、微型计算机由那些基本功能部件组成?微处理器、主存储器、系统总线、辅助存储器、输入/输出(I/O)接口和输入/输出设备2、什么是(计算机)总线?在计算机中,连接CPU与各个功能部件之间的一组公共线路,称为总线3、微型计算机系统的基本组成?微型计算机,系统软件,应用软件,输入输出设备4、简述冯.诺依曼型计算机基本组成。
冯.诺依曼型计算机是由运算器,控制器,存储器,输入设备和输出设备组成的。
其中,运算器是对信息进行加工和运算的部件;控制器是整个计算机的控制中心,所以数值计算和信息的输入,输出都有是在控制器的统一指挥下进行的;存储器是用来存放数据和程序的部件,它由许多存储单元组成,每一个存储单元可以存放一个字节;输入设备是把人们编写好的程序和数据送入到计算机内部;输出设备是把运算结果告知用户。
5、什么是机器数?什么是机器数的真值?数在机器内的表示形式为机器数。
而机器数对应的数值称为机器数的真值。
6、8086与8088这两个微处理器在结构上有何相同点,有何主要区别?相同点:(1)内部均由EU、BIU两大部分组成,结构基本相同。
(2)用户编程使用的寄存器等功能部件均为16位。
(3)内部数据通路为16位。
区别 :(1)对外数据总线8086:16位,8088:8位。
(2)指令队列8086:6级,8088:4级。
7、8086CPU内部由哪两部分组成?各完成什么工作?在8086内部由BIU和EU两大部分组成,BIU主要负责和总线打交道,用于CPU与存储器和I/O接口之间进行数据交换;EU主要是将从指令队列中取得的指令加以执行。
8、简述8086内部分为EU和BIU两大功能的意义。
这两部分分开可以在执行指令的同时,从存储器中将将要执行的指令取到指令队列,使两部分并行工作,提高CPU的速度。
将小写字母转化为大写字母的程序在计算机领域中,有一项很基础但却很重要的任务就是字符的转换。
其中最常见的任务之一就是将小写字母转换为大写字母。
这个任务似乎很简单,但是在实现这个功能的程序中,却有很多细节需要注意。
在编写将小写字母转换为大写字母的程序时,我们需要考虑以下几个方面:1. ASCII 码表ASCII 码表是计算机中常用的字符编码表,它将常见的字符映射到一个 8 位二进制数上。
在 ASCII 码表中,大写字母和小写字母是按照字母表的顺序排列的,其中大写字母的编码从 65 开始,小写字母的编码从 97 开始。
因此,我们可以通过将小写字母的 ASCII 码值减去 32 来得到对应的大写字母的 ASCII 码值。
2. 输入和输出在实现将小写字母转换为大写字母的程序时,我们需要考虑输入和输出。
在大多数情况下,我们可以通过从键盘读取用户输入的字符,然后将其转换为大写字母后输出到屏幕上。
但是,在某些特殊情况下,我们需要从文件或其他来源读取字符,并将转换后的字符写入到文件或其他目标中。
3. 处理特殊字符除了大小写字母之外,输入中可能还包含其他字符,如数字、标点符号、空格等。
在处理这些特殊字符时,我们需要决定是否将它们保留为原样,或者将它们转换为大写字母的等价形式。
这个决定取决于具体的需求,例如在处理邮件地址时,我们需要保留小写字母和特殊字符,而在处理密码时,我们需要将所有字符转换为大写字母。
4. 错误处理在编写程序时,我们需要考虑各种可能的错误情况,并采取相应的措施来避免或处理这些错误。
例如,在读取输入时,可能会发生输入缓冲区溢出的情况,或者输入包含无法识别的字符。
在输出时,可能会发生输出缓冲区溢出的情况,或者输出到错误的目标位置。
为了避免这些错误,我们需要仔细检查输入和输出的长度,并对不符合要求的输入和输出进行严格的处理和过滤。
5. 程序性能在实际应用中,程序的性能也是一个重要的考虑因素。
在处理大量数据或高并发情况下,程序需要具备较高的性能和稳定性,以确保程序能够快速、准确地完成任务。
微机原理课程设计大小写一、教学目标本节课的教学目标是让学生掌握微机原理中的大小写转换知识点。
知识目标包括:了解大小写转换的原理和方法,理解ASCII码表的应用,掌握字符串处理的基本技巧。
技能目标:能够运用大小写转换原理,对字符串进行正确的大小写转换。
情感态度价值观目标:培养学生对计算机科学的兴趣,提高学生分析问题和解决问题的能力。
二、教学内容本节课的教学内容主要包括以下几个部分:第一部分,介绍ASCII码表的基本概念和应用;第二部分,讲解大小写转换的原理和方法;第三部分,通过实例演示和练习,让学生掌握大小写转换的操作技巧;第四部分,总结本节课所学内容,并进行拓展训练。
三、教学方法为了达到本节课的教学目标,我将采用以下几种教学方法:首先,采用讲授法,为学生讲解ASCII码表的基本概念和大小写转换的原理;其次,采用讨论法,引导学生探讨大小写转换的方法,并通过小组合作完成练习题;再次,采用案例分析法,分析实际应用中大小写转换的问题,培养学生解决问题的能力;最后,采用实验法,让学生亲自动手进行大小写转换的实践操作,巩固所学知识。
四、教学资源为了支持本节课的教学内容和教学方法的实施,我将准备以下教学资源:首先,教材《微机原理与应用》,作为学生学习的基础资料;其次,参考书《ASCII码表解析与应用》,为学生提供更多的学习资源;再次,多媒体教学课件,用于直观展示大小写转换的原理和方法;最后,实验设备,如计算机、编程软件等,为学生提供动手实践的机会。
五、教学评估为了全面、客观、公正地评估学生在微机原理课程中大小写转换知识的学习成果,我将采用以下几种评估方式:1.平时表现:通过学生在课堂上的参与度、提问回答、小组讨论等表现,评估其对大小写转换知识的理解和应用能力。
2.作业:布置相关的大小写转换练习题,要求学生在规定时间内完成,通过作业的完成质量评估学生的掌握程度。
3.考试:在课程结束后,安排一次考试,涵盖大小写转换的知识点,通过考试分数评估学生的学习成果。
汇编将小写字母转换为大写字母《神奇的字母变身魔法》嘿,朋友们!你们有没有想过,那些小小的字母就像一群调皮的小精灵,总是能变出各种各样的花样?今天我就想跟你们聊聊把小写字母变成大写字母这个神奇的事儿!比如说,“a”这个小家伙,平时看起来普普通通的,小小的,一点儿也不起眼。
可一旦它变成了“A”,哇塞,就好像瞬间长大了,变得威风凛凛的!这就好像一个小不点儿突然穿上了帅气的铠甲,一下子变得超级有气势!咱们再看看“b”,它小小的、弯弯的,就像一个害羞的小朋友躲在角落里。
可变成“B”之后,那简直就是挺直了腰板,大大方方地站在那里,好像在说:“看我,多神气!”这难道不像一个胆小的孩子突然变得勇敢起来了吗?“c”呢,小小的它就像一轮弯弯的月牙儿。
可变成“C”之后,就像是一个大大的圆圈,把好多东西都能装进去。
这不就跟一个小小的口袋变成了一个大大的背包一样吗?还有“d”,小小的它像个小勺子。
变成“D”之后,就像一个大大的盾牌,感觉能挡住所有的攻击!你们说这是不是特别神奇?我有时候就在想,这些字母是不是有魔法呀?有一次,我在写作业的时候,不小心把小写字母写成了大写字母,被老师批评了。
我当时心里可难受了,就好像被乌云遮住了阳光。
我暗暗下定决心,一定要把这个字母变身的魔法掌握好!后来,我就每天练习,和字母们“打交道”。
我对着课本,一个一个地写,一个一个地念。
爸爸妈妈也会在旁边鼓励我,“加油,宝贝,你一定行!”我同桌也会和我一起比赛,看谁写得又快又准。
他总是说:“嘿,咱俩比比,看谁能先把这一堆字母都变对!”经过一段时间的努力,我终于能熟练地把小写字母变成大写字母啦!那种感觉,就像是解开了一个超级难的谜题,心里别提多高兴了!我觉得呀,学习就像一场冒险,每个小小的知识点都是一个关卡,而掌握小写字母转大写字母就是我闯过的一个重要关卡。
虽然过程中会有困难,会有挫折,但是只要我们坚持下去,就一定能成功!所以朋友们,别害怕学习中的困难,就像面对这些字母一样,勇敢地去挑战,去探索,我们一定能发现其中的乐趣和奥秘!我的观点就是:只要用心,再小的事情也能变得了不起,就像小写字母变成大写字母一样,会带来大大的惊喜!。
将小写字母转换为大写字母一、教学目标:1. 学生能够理解小写字母和大写字母的概念。
2. 学生能够掌握将小写字母转换为大写字母的方法。
3. 学生能够在实际操作中正确地将小写字母转换为大写字母。
二、教学内容:1. 小写字母和大写字母的概念介绍。
2. 转换小写字母为大写字母的规则讲解。
3. 实际操作练习。
三、教学方法:1. 讲授法:讲解小写字母和大写字母的概念,以及转换规则。
2. 实践法:学生实际操作练习,教师指导。
四、教学步骤:1. 引入:讲解小写字母和大写字母的概念,让学生了解它们之间的区别。
2. 讲解:讲解转换小写字母为大写字母的规则,让学生理解并掌握。
3. 练习:学生实际操作练习,教师巡回指导,纠正错误。
4. 总结:总结本节课所学内容,强调重点和难点。
五、课后作业:1. 请学生完成练习题,巩固所学知识。
2. 请学生总结本节课的收获,并在下一节课分享。
教学评价:1. 课后作业的完成情况。
2. 学生实际操作的正确率。
3. 学生分享总结的完整性。
六、教学资源:1. PPT课件:包含小写字母和大写字母的例子,以及转换规则。
2. 练习题:包括不同难度的小写字母转换为大写字母的题目。
3. 答案sheet:用于核对学生的练习结果。
七、教学重点与难点:1. 教学重点:让学生掌握小写字母和大写字母的转换规则,能够正确地进行转换。
2. 教学难点:引导学生理解小写字母和大写字母之间的区别,以及转换规则的应用。
八、教学过程:1. 课堂导入:通过PPT展示小写字母和大写字母的例子,引导学生注意它们的区别。
2. 知识点讲解:讲解小写字母和大写字母的概念,以及转换规则。
3. 课堂练习:学生根据PPT上的练习题进行练习,教师巡回指导。
4. 练习讲解:针对学生的练习情况,进行讲解和答疑。
5. 课堂总结:总结本节课所学内容,强调重点和难点。
九、教学反思:1. 教师需要反思课堂的讲解是否清晰易懂,学生是否能够理解和掌握。
2. 教师需要关注学生的练习情况,对学生的错误进行纠正和指导。
汇编语言课程设计任务书一、课程设计目的1. 掌握汇编语言与高级语言的接口方法,正确编写混合语言程序,掌握混合语言程序的调试和运行;2. 掌握DOS、BIOS系统功能调用,掌握基本的显存读写技术;进一步了解汇编接口的功能和用法,掌握利用定时器产生声音的方法;3. 学会用汇编语言编写一个较完整的实用程序,培养自己的动手操作能力;4. 学习汇编语言项目设计的基本思路和方法,编程、调试、撰写报告等。
二、任务内容:任务一:混合编程,将内存中的一个字符串的小写字母转换为大写并输出。
也可根据自己兴趣自定题目。
要求:1.分别运用混合编程的两种方法:嵌入式编程、C程序调用汇编函数模块完成该任务;2.也可根据兴趣自定题目,如排序、求阶乘和等。
任务二:以下题目二选一1. 显示系统日期和时间要求:1.在屏幕特定位置显示当前系统日期和时间;2.显示的日期和时间要求即时更新,即设计为跳动的时钟;3.可自定义电子钟的显示区域、显示位置、背景和前景色或以图形化方式显示。
4.当按下某个键,如“Q”时,程序返回DOS,数字钟消失。
2. 利用PC扬声器演奏乐曲要求:1.在屏幕特定位置显示乐曲名称;2.循环演奏乐曲(自选);3.当按下某个键,如“Q”时,音乐停止,程序返回DOS。
三、课程设计报告的要求1.本次课程设计每位同学必须认真、独立的完成课程设计的编程和调试。
2.课程设计报告要求使用A4纸打印,必须有目录。
封面提供,内容要认真独立完成。
3.课程设计报告内容一般应包含如下部分:①课程设计目的、内容;②每个任务的程序流程图③程序清单④调试结果及分析;⑤收获、体会和建议。
4.课程设计结束同时上交课程设计报告,不得拖延。
四、成绩的评定1.考勤(20分)2.调试验收(30分)3.随机回答指导教师的问题(20分)4.课程设计报告(30分)5.课程设计态度不认真,超过1/3时间不到者,不予及格。
6.完全拷贝他人,对设计内容一无所者或知之甚少者,一经发现,不予及格。
[应用]汇编语言编程键盘输入的小写字母换成大写汇编语言编程键盘输入的小写字母换成大写用汇编语言编程,要求键盘输入的小写字母换成大写我这个程序如果输入小写,则转换成大写输出;如果输入大写,则转换成小写输出。
cseg segmentassume cs:cseg begin:mov ah,1int 21hxor al,20hmov dl,almov ah,2int 21hmov ah,4chint 21h cseg endsend begin……BUF DB "please input:$"……start: mov ax,datamov ds,axlea dx,BUFmov ah,9int 21hlopa: mov ah,10 ;10号调用输入字符串int 21hmov dl,alcmp dl,'a'jb Lcmp dl,'z'ja Lsub dl,20hL: mov ah,2int 21hEXIT: mov ah,4chint 21h……汇编程序:从键盘输入一串小写字母转换成大写 2007年12月04日星期二12:44 ;从键盘输入一行字符把其中的小写字母转换成大写字符输出,其它字符原样输出data segmentchars db 200 dup(?) ;开辟200字节的缓冲区 data ends;--------------------------------- code segmentassume cs:code,ds:datastart :push dsmov ax,0push axmov ax,datamov ds,axlea bx ,charsmov si,0mov ch,0;----------------------输入字符子程序 scanf:mov ah,1int 21hcmp al,0dhjz crtcmp al,61hjnb alsub ;al>='a' mov [bx],alinc bxinc chjmp scanf;-------------------------- ;-----------------------输出字符crt:mov dl,chars[si] mov ah,2int 21hinc sidec chjz exitjmp crt;---------------------- exit:mov ah,4chint 21h;---------------------- alsub:cmp al,7ah ;al<='z'jbe alsub20hmov [bx],alinc bxinc chjmp scanf;--------------------- alsub20h:sub al,20hmov [bx],alinc bxinc chjmp scanf;---------------------code endsend start汇编语言编程问题:用键盘输入一个字符串,含有若干大小写字母,数字,要求统计出三种类型各有多少个,并显示浏览次数:465次悬赏分:10 | 解决时间:2010-11-1 11:14 | 提问者:木易秋心这是微机原理课程上的一道上机实验题,所知道的解题思路为:需要分析其输入与输出的内容,根据ASC码进行比较来确定各类型的数量,最后显示出来使用的是2号功能调用。
摘要在课程设计之前,具备微机原理的理论知识和实践能力;熟悉汇编语言编程技术;熟悉80X86的CPU结构和指令系统;熟悉相关常用接口电路的设计使用方法是必不可少的。
因此原理部分重新温习并整理了相关知识。
课程设计要求进行大小写字母的转换。
其实字母大小写的区别在于他们的ASCII码范围,它们之间的转换其实就是加减相应的ASCII码值。
在判断输入的字母是大写的还是小写的(即判断输入符号ASCII码在41H~5AH还是在61H~7AH内)之后,决定判断是加上还是减去ASCII码值。
另外如果输入的不是字母(输入字符对应ASCII码值不在41H~5AH或61H~7AH内),则需要报警提示,这不但涉及到用汇编语言实现发声的方法,而且对计算机硬件的了解也有要求,因此原理部分加入了部分有关声音产生的硬件知识。
关键词:汇编语言,ASCII码,大小写转换1.原理简介1.1 8086的内部结构80x86从功能上分执行单元EU(Execution Unit),和总线接口单元BIU(Bus Interface Unit),执行单元由算术逻辑单元(ALU)、标志寄存器、通用寄存器组和EU控制器等部件组成。
指令执行部件EU由算术逻辑单元、标志寄存器、通用寄存器和EU控制器等部件组成。
主要功能是执行指令:一般顺序执行,EU不断地从指令队列中取指令连续执行,而省去访问存储器取指令的时间。
需要访问存储器取操作数时,EU将访问地址送给BIU后,将要等待操作数到来后才能继续操作;遇到转移类指令时,要将指令队列中的后续指令作废,等待BIU重新从存储器取出目标地址中的指令代码进入指令队列后,EU才能继续执行指令。
算术逻辑单元(ALU)完成16位或8位的二进制运算;16位暂存寄存器用来暂存参加运算的操作数。
运算结果通过内部总线送到通用寄存器组或BIU的内部寄存器中等待写入存储器。
经ALU运算后的结果特征置入标志寄存器中保存EU控制器负责从BIU的指令队列中取指令,并对指令译码;根据指令要求向EU内部各部件发出控制命令以完成各条指令的功能。
青海师范大学课程设计报告2010~2011学年第二学期目录1 、课程设计的目的 (3)2 、课程设计的要求 (3)3、题目 (3)4、设计思路 (3)5、程序流程图 (4)6、设计源程序 (5)7、动画示意图 (8)8、总结 (8)9、‘参考文献 (8)大小写字母转换一、课程设计的目的《汇编语言课程设计》是软件工程专业集中实践性环节之一,是学习完《汇编语言》课程后进行的一次全面的综合练习。
其目的是:培养学生熟练掌握汇编语言指令系统,深化和巩固指令系统和编程方法,提高学生的编程应用能力。
为将来从事专业工作打下基础,培养良好的职业道德和严谨的工作作风。
二、课程设计的要求1)具备初步的独立分析和解决问题的能力;2)初步掌握问题分析、系统设计、程序编码、测试等基本方法和技能;3)提高综合运用所学的理论知识和方法的能力;4)训练用系统的观点和软件开发一般规范进行软件开发,培养科学的工作方法和作风;5)设计的题目要求达到一定工作量,并具有一定的深度和难度;6)编写出课程设计说明书。
三、题目输入大写字母,转换成小写字母;输入小写字母转换成大写字母;非字母,发出警告声。
四、课程设计报告内容设计思路:课程设计要求进行大小写字母的转换。
其实字母大小写的区别在于他们的ASCII码范围,它们之间的转换其实就是加减相应的ASCII码值。
在判断输入的字母是大写的还是小写的(即判断输入符号ASCII码在41H~5AH还是在61H~7AH内)之后,决定判断是加上还是减去ASCII码值。
另外如果输入的不是字母(输入字符对应ASCII码值不在41H~5AH或61H~7AH内),则需要报警提示,这不但涉及到用汇编语言实现发声的方法,而且对计算机硬件的了解也有要求,因此原理部分加入了部分有关声音产生的硬件知识。
五、 程序设计流程图1N Y图2-1程序流程图开始array 首地址→bx从键盘接受字符输入字母大写转小写 小写转大写 回车换行输出结束 报警退出六、设计源程序code segment;代码段assume cs:code,ds:codeorg 100h;从100h开始start: jmp begin ;跳到beginp1 db100p2 db0array db100h dup(?) ;置100个字节的缓冲区存放数据begin:lea bx,array ;将array的首地址给bxmov ax,csmov ds,ax ;置cs-->dsmov dx,offset p1 ;将p1的偏移量给dxmov ah,0ah;调用中断21的0a号功能从键盘接收字符int21hxor bx,bx;将bx清零mov bl,p2 ;p2-->blmov array[bx],'$' ;送'$'至字符串尾mov di,0ffffh;-1-->dinext: inc di;di自加cmp array[di],'$' ;比较je exit ;相等,则跳到exit执行cmp array[di],41h;(A~Z-->41h-5ah a~z-->61h-7ah)与A比较 jl exit1 ;小于,则跳cmp array[di],5ah;与Z比较jg next1 ;大于,则跳add array[di],20h;加20h,大写转小写jmp nextnext1: cmp array[di],'$' ;比较je exit ;相等,则跳到exit执行cmp array[di],61h;(A~Z-->41h-5ah a~z-->61h-7ah)与a比较 jl next ;小于,则跳cmp array[di],7ah;与z比较jg exit1 ;大于,则跳sub array[di],20h;减20h,小写转大写jmp nextdisp: loop nextexit: mov p1,0dh;回车换行mov p2,0ahmov ah,09hint21hjmp beginexit1: mov p1, 0dhmov p2, 0ahcall sound ;调用发声子程序call soundcall soundcall soundjmp beginmov ah,4ch;程序结束int21hsound procpush axpush dxmov dx, cxin al,61hand al,11111100b;使第0,1位为0trig: xor al,2;使第1位翻转 PB的低两位为3,即使输出有效out61h,almov cx,bxdelay:loop delaydec dxjne trigpop dxpop axretsound endpcode endsend begin七、运行结果分析:当输入字母串ABCDEFabcdef后,按回车键转换为abcdefABCDEF,结果如下图所示:图2-2 程序运行结果当输入非英文字母时,按下回车键后发出滴滴的报警声,实现程序功能。
汇编完成“输⼊⼩写字母,输出⼤写字母”data segmentdata_a db 'a' ;左边界标志data_z db 'z' ;右边界标志info db 'please input the right letter $' ;输⼊错误后提⽰信息data endsstack segmentstack endscode segmentassume cs:code,ds:data,ss:stackstart:mov ax,datamov ds,axmov ah,01h ;调⽤系统输⼊单字符功能int 21hcmp al,data_a ;如果⼩于 'a' 则提⽰错误信息jb errorcmp al,data_z ;如果⼤于 'z' 则提⽰错误信息ja errorsub al,20h ;⼩写字母⽐⼤写字母的ascii值⼤20hmov dl,al ;系统显⽰单字符功能缓冲区为dlmov ah,02h ;调⽤dos的2号功能-显⽰指定单字符int 21hjmp exit ;退出,jmp为⽆条件转移指令error:mov ah,09hmov dx,offset info ;求得错误提⽰信息的变量地址并⽤dx寄存器指定(09号功能显⽰的是dx指定数据的内容) int 21hjmp exitexit:mov ah,4ch ;退出int 21hcode endsend start完善版:data segmentdata_a db 'a'data_z db 'z'data_space db '------$'info db 'please input the right letter $' data endsstack segmentstack endscode segmentassume cs:code,ds:data,ss:stack start:mov ax,datamov ds,axmov ax,00hmov ah,01hint 21hcmp al,data_ajb errorcmp al,data_zja errorcall spacesub al,20hmov dl,almov ah,02hint 21hjmp exiterror:call spacemov ah,09hmov dx,offset infoint 21hjmp exitspace:mov ah,09hmov dx,offset data_spaceint 21hretexit:mov ah,4chint 21hcode endsend start。
1、试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来. 答案:abc: mov ah,1int 21hcmp al,'a'jb stopcmp al,'z'ja stopsub al,20hmov dl,almov ah,2int 21hjmp abcstop: ret2、编写程序,比较两个字符串STRING1和STRING2所含字符是否完全相同,若相同则显示"MATCH",若不同则显示"NO MATCH".答案:datarea segmentstring1 db 'asfioa'string2 db 'xcviyoaf'mess1 db 'MATCH','$'mess2 db 'NO MATCH','$'datarea endsprognam segmentmain proc farassume cs:prognam,ds:datareastart:push dssub ax,axpush axmov ax,datareamov ds,axmov es,axbegin:mov cx,string2-string1mov bx,mess1-string2cmp bx,cxjnz dispnolea dx,addrlea si,string1lea di,string2repe cmpsbjne dispnolea dx,mess1int 21hretdispno:mov ah,9lea dx,mess2int 21hretmain endpprognam endsend start3、试编写程序,要求从键盘输入3个16进制数,并根据对3个数的比较显示如下信息:(1)如果3个数都不相等则显示0;(2)如果3个数中有2个数相等则显示2;(3)如果3个数都相等则显示3.答案:data segmentarray dw 3 dup( )data endscode segmentmain proc farassume cs:code,ds:datastart:push dssub ax,axpush axmov ax,datamov ds,axmov cx,3lea si,arraybegin:push cxmov cl,4mov di,4mov dl,' 'mov ah,02int 21hmov dx,0input:mov ah,01int 21hshl dx,clor dl,aldec dijne inputmov [si],dxadd si,2pop cxloop begincomp:lea si,arraymov dl,0mov ax,[si]mov bx,[si+2]cmp ax,bxjne next1add dl,2next1:cmp [si+4],axjne next2add dx,2next2:cmp [si+4],bxjne numadd dl,2num:cmp dx,3jl dispmov dl,3disp:mov ah,2add dl,30hint 21hretmain endpcode endsend start4、已知整数变量A和B,试编写完成下述操作的程序:(1)若两个数中有一个是奇数,则将该奇数存入A中,偶数存入B中;(2)若两个数均为奇数,则两数分别加1,并存回原变量;(3)若两个数均为偶数,则两变量不变.答案:dseg segmenta dwb dwdseg endscseg segmentmain proc farassume cs:cseg,ds:dsegstart: push dssub ax,axpush axmov ax,dsegmov ds,axbegin: mov ax,amov bx,bxor ax,bxtest ax,0001jz classtest bx,0001jz exitxchg bx,amov b,bxjmp exitclass: test bx,0001jz exitinc binc aexit: retmain endpcseg endsend start5、把0~10010之间的30个数,存入首地址为GRAD的字数组中,GRAD+i表示学号为i+1的学生成绩.另一个数组RANK是30个学生的名次表,其中RANK+I 的内容是学号为i+1的学生的名次.试编写程序,根据GRAD中的学生成绩,将排列的名次填入RANK数组中(提示:一个学生的名次等于成绩高于这个学生的人数加1).答案:dseg segmentgrade dw 30 dup( )rank dw 30 dup( )dseg endscseg segmentmain proc farassume cs:cseg,ds:dseg,es:dsegstart: push dssub ax,axpush axmov ax,dsegmov ds,axmov es,axbegin: mov di,0mov cx,30loop1: push cxmov cx,30mov si,0mov ax,grade[di]mov dx,0loop2: cmp grade[si],axjbe go_oninc dxgo_on: add si,2loop loop2pop cxinc dxmov rank[di],dxsdd di,2loop loop1retmain endpcseg endsend start6、分析下列程序的功能,写出堆栈最满时各单元的地址及内容. SSEG SEGMENT 'STACK' AT 1000H ; 堆栈的段地址为1000H DW 128 DUP( )TOS LABEL WORDSSEG ENDS; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - DSEG SEGMENTDW 32 DUP( )DSEG ENDS; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CSEG SEGMENTMAIN PROC FARASSUME CS:CSEG,DS:DSEG,SS:SSEGSTART: MOV AX,SSEGMOV SS,AXMOV AX,DSEGMOV DS,AXMOV AX,4321HCALL HTOARETN: MOV AH,4CHINT 21HMAIN ENDP; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - HTOA PROC NEARCMP AX,15JLE B1PUSH AXPUSH BPMOV BP,SPMOV BX,[BP+2]AND BX,0FHMOV [BP+2],BXPOP BPMOV CL,4SHR AX,CLCALL HTOAB1: POP AXB2: ADD AL,30HJL PRTADD AL,07PRT: MOV DL,ALMOV AH,2INT 21HRETHTOA ENDPCSEG ENDS; ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - END START答案:1000:0F2HB11000:0F4H31000:0F6HB11000:0F8H21000:0FAHB11000:0FCH1RETN1000:100H7、写出分配给下列中断类型号在中断向量表中的物理地址.(1) INT 12H (2) INT 8答案:(1) 00048h(2) 00020h8、试编写程序,它轮流测试两个设备的状态寄存器,只要一个状态寄存器的第0位为1,则与其相应的设备就输入一个字符;如果其中任一状态寄存器的第3位为1,则整个输入过程结束.两个状态寄存器的端口地址分别是0024和0036,与其相应的数据输入寄存器的端口则为0026和0038,输入字符分别存入首地址为BUFF1和BUFF2的存储区中.答案:mov si,0mov di,0test12: in al,0024htest al,08jnz exitin al,0036htest al,08jnz exitdev1: in al,0024htest al,01jz dev2in al,0026hmov buffer[si],alinc sidev2: in al,0036htest al,01jz test12in al,0038hmov buff2[di],alinc dijmp test12exit: ret9、给定(SP)=0100,(SS)=0300,(FLAGS)=0240,存储单元的内容为(00020)=0040,(00022)=0100,在段地址为0900及偏移地址为00A0的单元中有一条中断指令INT 8,试问执行INT 8指令后,SP,SS,IP,FLAGS的内容是什么栈顶的三个字是什么答案:(SS) = 0300(IP) = 0040(FLAGS) = 0040堆栈内容:00A1H0900H0240H10、编写一个程序,接收从键盘输入的10个十进制数字,输入回车符则停止输入,然后将这些数字加密后(用XLAT指令变换)存入内存缓冲区BUFFER.加密表为;输入数字: 0,1,2,3,4,5,6,7,8,9密码数字: 7,5,9,1,3,6,8,0,2,4答案:scode db 7,5,9,1,3,6,8,0,2,4buffer db 10 dup( ); ……mov si,0mov cx,10lea bx,scodeinput: mov ah,01int 21hcmp al,0ahjz exitand al,0fhxlatmov buffer[si],alinc siloop inputexit: ret。