ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:60.43KB ,
资源ID:7685100      下载积分:2 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7685100.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(微机原理课程设计大小写字母转换.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

微机原理课程设计大小写字母转换.docx

1、微机原理课程设计大小写字母转换目录摘要 IAbstract II1 原理 11.1 8086的内部结构 11.2 8086的指令系统 21.3汇编语言程序设计 61.4报警声音生成 72程序设计 92.1 程序设计流程图 92.2 程序代码 102.3 运行结果分析 133心得体会 14参考文献 15摘要在课程设计之前,具备微机原理的理论知识和实践能力;熟悉汇编语言编程技术;熟悉80X86的CPU结构和指令系统;熟悉相关常用接口电路的设计使用方法是必不可少的。因此原理部分重新温习并整理了相关知识。课程设计要求进行大小写字母的转换。其实字母大小写的区别在于他们的码范围,它们之间的转换其实就是加减

2、相应的码值。在判断输入的字母是大写的还是小写的(即判断输入符号码在41H5AH还是在61H7AH内)之后,决定判断是加上还是减去码值。另外如果输入的不是字母(输入字符对应码值不在41H5AH或61H7AH内),则需要报警提示,这不但涉及到用汇编语言实现发声的方法,而且对计算机硬件的了解也有要求,因此原理部分加入了部分有关声音产生的硬件知识。AbstractPrior to the course design, computer principles with theoretical knowledge and practical ability; familiar with assembly

3、language programming techniques; familiar with the 80X86 the CPU architecture and instruction; familiar with the use of common interface circuit design is essential. Therefore, some re-principle study and collate the relevant knowledge.Curriculum design, uppercase and lowercase letters requested con

4、version. In fact, the difference between the case of letters lies in their ASCII code range, the conversion between them is actually plus or minus the value of the corresponding ASCII code. In determining the input is uppercase or lowercase letters (that is to determine input symbols in the ASCII co

5、de 41H 5AH or 61H 7AH inside), the decision to determine a plus or minus the value of ASCII code. Also, if not the letter of the input (input characters corresponding to ASCII code value is not 41H 5AH or 61H 7AH inside), you need to alarm, not only related to using assembly language to achieve soun

6、d approach,But also have knowledge of computer hardware requirements, thus adding some of the principles of some of the sound generated by the hardware knowledge. 1 原理1.1 8086的内部结构80x86从功能上分执行单元EU(Execution Unit),和总线接口单元BIU(Bus Interface Unit),执行单元由算术逻辑单元(ALU)、标志寄存器、通用寄存器组和EU控制器等部件组成。指令执行部件EU由算术逻辑单元

7、、标志寄存器、通用寄存器和EU控制器等部件组成。主要功能是执行指令:一般顺序执行,EU不断地从指令队列中取指令连续执行,而省去访问存储器取指令的时间。需要访问存储器取操作数时,EU将访问地址送给BIU后,将要等待操作数到来后才能继续操作;遇到转移类指令时,要将指令队列中的后续指令作废,等待BIU重新从存储器取出目标地址中的指令代码进入指令队列后,EU才能继续执行指令。算术逻辑单元(ALU)完成16位或8位的二进制运算;16位暂存寄存器用来暂存参加运算的操作数。运算结果通过内部总线送到通用寄存器组或BIU的内部寄存器中等待写入存储器。经ALU运算后的结果特征置入标志寄存器中保存EU控制器负责从B

8、IU的指令队列中取指令,并对指令译码;根据指令要求向EU内部各部件发出控制命令以完成各条指令的功能。总线接口单元由地址加法器、专用寄存器组、指令队列缓冲器和总线控制电路等部件组成;主要功能是形成访问存储器的物理地址,负责与外部(存储器或I/O接口)打交道。正常情况下,BIU通过地址加法器形成指令的物理地址,从给定存储器地址中取出指令代码送指令队列缓冲器中等待执行(指令队列缓冲器中出现一个空字节,BIU将自动进行读指令的操作填满队列)。收到EU送来的操作数地址,BIU将立即形成操作数的物理地址,完成读/写操作数或运算结果功能。遇到转移类指令,BIU将指令队列缓冲器中的尚存指令作废,重新从存储器目

9、标地址中取指令送指令缓冲器中。 指令队列可存放6字节的指令代码。一般情况下指令队列中总是填满指令,使EU可不断地得到执行的指令。16位地址加法器专门用来完成由逻辑地址变换成物理地址的功能。实际上是进行一次地址加法,将两个16位的逻辑地址转换为20位的物理地址,以达到可寻址1M字节的存储空间。总线控制电路将8086CPU的内部总线与外部总线相连,是8086CPU与外部交换数据的必经之路。包括16条数据总线、20条地址总线和若干条控制总线。程序装载到内存中后通过16位数据线确定各个段地址,开始取出指令(内存中读字节),放到指令队列,队列出口通过EU控制器执行指令并同时影响IP(指令指针移动指令长度

10、,或通过指令执行后影响IP。1.2 8086的指令系统8086全部指令按功能可分成六大类 :数据传送类一般格式 MOV OPRD1,OPRD2MOV 是操作码,OPRD1和OPRD2分别是目的操作数和源操作数。功 能 完成数据传送。堆栈指令 包括入栈(PUSH)和出栈(POP)指令两类。仅能进行字运算。(操作数不能是立即数)(1) 入栈指令 PUSH一般格式 PUSH OPRD功 能 将数据压入堆栈(2) 出栈指令POP一般格式 POP OPRD功 能 将数据弹出堆栈累加器专用传送指令有三种,输入、输出和查表指令。前两种又称为输入输出指令。(1) IN 指令一般格式 IN AL,n ; B A

11、LnIN AX,n ; W AXn+1nIN AL,DX ; B ALDXIN AX,DX ; W AXDX+1DX功 能 从I/O端口输入数据至AL或AX。 (2) OUT 指令一般格式 OUT n,AL ; B ALn OUT n,AX ; W AXn+1n OUT DX,AL ; B ALDX OUT DX,AX ; W AXDX+1DX功 能 将AL或AX的内容输出至I/O端口。算术运算类加法指令 (Addition)(1) 一般形式 ADD OPRD1,OPRD2 ; 功 能 OPRD1OPRD1+OPRD2(2) 一般形式 ADC OPRD1,OPRD2;带进位的加法;功 能 OP

12、RD1OPRD1+OPRD2 +CF(3) 一般形式 INC OPRD ;功 能 OPRDOPRD+1减法指令(Subtraction)(1) 一般形式 SUB OPRD1,OPRD2 ;功 能 OPRD1OPRD1-OPRD2(2) 一般形式 SBB OPRD1,OPRD2 ;功 能 OPRD1OPRD1-OPRD2-CF (3) 一般形式 DEC OPRD ;功 能 OPRDOPRD-1-CF逻辑运算类逻辑运算指令(1) 一般格式 NOT OPRD功 能 对操作数求反,然后送回原处,操作数可以是寄存器或存储器内容。(2) 一般格式:AND OPRD1,OPRD2功 能 对两个操作数进行按位

13、的逻辑“与”运算,结果送回目的操作数。(3) 一般格式 TEST OPRD1,OPRD2 功 能 完成与AND指令相同的操作,结果反映在标志位上,但并不送回。通常使用它进行测试, (4) 一般格式 OR OPRD1,OPRD2功 能 对指定的两个操作数进行逻辑“或”运算。结果送回目的操作数。(5) 一般格式 XOR OPRD1,OPRD2功 能 对两个指定的操作数进行“异或”运算,结果送回目的操作数。串操作类重复指令前缀串指令程序转移类无条件转移、调用和返回指令 (1) 无条件转移指令JMP 分直接转移和间接转移两种。 一般格式: JMP OPRD ;OPRD是转移的目的地址直接转移的3种形式

14、为:短程转移 JMP SHORT OPRD ;IP=IP+8位位移量目的地址与JMP指令所处地址的距离应在-128127范围之内。近程转移 JMP NEAR PTR OPRD ;IP=IP+16位位移量 或 JMP OPRD ;NEAR可省略目的地址与JMP指令应处于同一地址段范围之内。远程转移 JMP FAR PTR OPRD ;IP=OPRD的段内位移量,CS=OPRD所在段地址。远程转移是段间的转移,目的地址与JMP指令所在地址不在同一段内。执行该指令时要修改CS和IP的内容。间接转移指令的目的地址可以由存储器或寄存器给出。段内间接转移 JMP WORD PTR OPRD ;IP=EA

15、(由OPRD的寻址方式确定)。JMP WORD PTRBX IP=(DS)*16+(BX)JMP WORD PTR BX IP=(BX)段间间接转移 JMP DOWRD PTR OPRD;IP=EA,CS=EA+2该指令指定的双字节指针的第一个字单元内容送IP,第二个字单元内容送CS。JMP DWORD PTR BX+SI(2) 调用和返回指令 CALL指令用来调用一个过程或子程序。由于过程或子程序有段间(即远程FAR)和段内调用(即近程NEAR)之分。所以CALL也有FAR和NEAR之分。因此RET也分段间与段内返回两种。调用指令一般格式为: 段内调用 CALL NEAR PTR OPRD

16、; 操 作 SP=SP-2,(SP)+1),(SP)=IP,IP=IP+16位位移量 CALL指令首先将当前IP内容压入堆栈。当执行RET指令而返回时,从堆栈中取出一个字放入IP中。段间调用 CALL FAR PTR OPRD ; 操 作 SP=SP-2,(SP)+1),(SP)=CS;SP=SP-2,(SP)+1),(SP)=IP;IP=EA;CS=EA+2CALL指令先把CS压入堆栈,再把IP压入堆栈。当执行RET指令而返回时,从堆栈中取出一个字放入IP中,然后从堆栈中再取出第二个字放入CS中,作为段间返回地址。返回指令格式有:RET ;SP=(SP+1),SP),SP=SP+2 RET

17、n ;SP=(SP+1),SP),SP=SP+2 SP=SP+nRET n指令要求n为偶数,当RET正常返回后,再做SP=SP+n操作。控制类循环控制指令loop1.3汇编语言程序设计汇编:计算机不能直接识别和执行汇编语言程序,而要通过“翻译”把源程序译成机器语言程序(目标程序)才能执行,这一“翻译”工作称为汇编。汇编有人工汇编和计算机汇编两种方法。汇编语言是面向机器的,每一类计算机分别有自己的汇编语言。汇编语言占用的内存单元少,执行效率高,广泛应用于工业过程控制与检测等场合。汇编语言语句格式标号: 操作符 操作数 ;注释 START: MOV A, 30H ;A(30H)标号用来标明语句地址

18、,它代表该语句指令机器码的第一个字节的存储单元地址。标号一般规定由18个英文字母或数字组成,但第一个符号必须是英文字母。注释只是对语句或程序段的含义进行解释说明,以方便程序的编写、阅读和交流,简化软件的维护,一般只在关键处加注释。伪指令:伪指令只用于汇编语言源程序中,对汇编过程起控制和指导的作用,不生成机器码。汇编结束,自动消失。汇编语言程序设计步骤(1)分析问题(2)确定算法(3)设计程序流程(4)分配内存单元:分配内存工作单元,确定程序和数据区的起始地址。(5)编写汇编语言程序(6)调试程序:1.4报警声音生成早期的PC系列机中有一个专门用于定时的集成电路,型号是8253/8254。它有三

19、个通道,第一个通道用于控制系统时钟正常运转;第二个通道用于存储器刷新;这两个通道与我们现在讨论的问题无关。第三个通道通过一组电路与喇叭相联。 定时器通道3的G端与61H端口的bit0位相联,如果将61H端口的bit0位置成1,那么定时器通道3就被启动,此时将有一组信号从OUT端输出,信号的频率可以用程序控制;若61H端口bit0位为0,则定时器被关闭,OUT端就会恒定为1 此电路用在这里相当一个可控开关,如果将61H端口的bit0、bit1位都置成1,则相当于既打开了定时器又打开了开关,这时候定时器产生的声音信号就会送到放大器推动喇叭发声;若将bit0位置0,则定时器关闭,此时OUT端为1,这

20、时候如果连续改变bit1位的状态,也可以从喇叭中听到声音若将bit1位置0,则开关关闭,此时即使打开定时器也不能听到声音。 PC中的定时电路有三个通道,通道3用于发声,通道1用于控制系统内部的时钟。大家都十分清楚用DOS的TIME命令可以观察并修改系统内部的一个时钟,这个时钟之所以能连续运转主要依靠定时器的通道1。 通道1的工作方式和通道3一样,但是系统启动时设定其发出一个频率固定为18.2Hz的信号,这个信号直接送到系统中的中断控制器。每一个Hz都产生一个硬件中断,一般称这个硬中断为IRQ0,对应的中断号是08H。也就是说,当计算机启动后,我们的机器看上去十分平静,但实际上CPU非常忙碌。在

21、定时器的控制下每隔55毫秒就要执行一个08H号中断,这个中断的主要工作就是连续地计数。 在内存0040H:006CH处有四字节的存储空间专门用于保存计数值,CPU每执行一次08H中断,这四字节的计数值就被加1,不难算出这个计数值每增加1091后时间恰好过了1分钟,每增加65454后时间恰好过了1小时。系统内部的时钟之所以能准确走时,靠得就是08H中断和这四字节的计数值。因此我们要想精确的定时,必须依靠时钟计数值才行。2程序设计2.1 程序设计流程图图2.1 N Y 2.2 程序代码从从键盘输入一串英文字符,若是小写字符则转换成大写字符在下一行输出,若是大写字符则转换成小写字符在下一行输出,若不

22、是英文字符则显声响报警;-; 实现英文字母的大小写转换;-code segment ;代码段 assume cs:code,ds:code org 100h ;从100h开始start:jmp begin ;跳到beginp1 db 100 p2 db 0array db 100h dup(?) ;置100个字节的缓冲区存放数据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 xor

23、 bx,bx ;将bx清零 mov bl,p2 ;p2-bl mov arraybx,$ ;送$至字符串尾 mov di,0ffffh ;-1-di next: inc di ;di自加 cmp arraydi,$ ;比较 je exit ;相等,则跳到exit执行 cmp arraydi,41h ;(AZ-41h-5ah az-61h-7ah)与A比较 jl exit1 ;小于,则跳 cmp arraydi,5ah ;与Z比较 jg next1 ;大于,则跳 add arraydi,20h ;加20h,大写转小写 jmp next next1: cmp arraydi,$ ;比较 je ex

24、it ;相等,则跳到exit执行 cmp arraydi,61h ;(AZ-41h-5ah az-61h-7ah)与a比较 jl next ;小于,则跳 cmp arraydi,7ah ;与z比较 jg exit1 ;大于,则跳 sub arraydi,20h ;减20h,小写转大写 jmp next disp: loop nextexit: mov p1,0dh ;回车换行 mov p2,0ah mov ah,09h int 21h jmp beginexit1: mov p1, 0dh mov p2, 0ah call sound ;调用发声子程序 call sound call soun

25、d call sound jmp begin mov ah,4ch ;程序结束 int 21h sound proc push ax push dx mov dx, cx in al,61h and al,11111100b ;使第0,1位为0 trig: xor al,2 ;使第1位翻转 PB的低两位为3,即使输出有效 out 61h,al mov cx,bx delay:loop delay dec dx jne trig pop dx pop ax retsound endpcode ends end begin2.3 运行结果分析:当输入字母串ABCDEFabcdef后,按回车键转换为

26、abcdefABCDEF,结果如下图2.2所示图2.2当输入非英文字母时,按下回车键后发出滴滴的报警声,实现程序功能。3心得体会一直以为自己微机原理的水平不错了,直到着手做课程设计才不得不承认,自己的理论知识并不扎实,对于许多指令和一些基本的编程方法都掌握不清晰。于是,为了顺利完成课程设计,我又拿起课本,用心的阅读,重新掌握了相关的知识。由此看来,知识只有在实践中才能真正掌握。难怪人们说汇编语言编程必须在使用中慢慢理解。因为本学期做了许多微机原理的实验,这次要用汇编语言来实现大小写字母的转换,所以自己一开始感觉这会非常的简单。直到真正的理解相关原理,要编写程序实现的时候,才发现,自己对汇编程序

27、的了解确实还不够,尤其是编程方面的能力有待提高。在不断地再次学习和理解过程中,我慢慢掌握了更多汇编语言的应用知识,更为值得骄傲的是,自己在参考程序的辅助下顺利编写出了大小写字母转换的程序。总结起来,自己发现,编程必须在应用过程中才会更加牢固。想想自己大三上学期做过的上机实验也不少,个把月不用,就一下子生疏了,因此我感觉对于重要的知识,偶尔复习下还是很有必要的,正所谓温故而知新。把编写好的程序输入软件时候,出现了许多小问题,比如句子没有加逗号,没有定义变量等等。归纳起来都是因为编程掌握不牢固,写程序没有条理,加上自己粗心大意的恶习依旧没改正造成的,以后需要努力改正。总的来说,这次课程设计,自己受益匪浅。不但加固了微机原理部分知识的理解,而且加强了对汇编语言的应用能力。参考文献1 姚燕南,薛钧义主编.微型计算机原理.第四版.西安:西安电子科技大学出版社,20032 潘峰主编.微型计算机原理与汇编语言.第三版.西安: 电子工业出版社,20033 雏逢兴编著.计算机硬件技术基础.北京:高等教育出版社,19984 王永山等编著.微型计算机原理与应用.西安:西安电子科技大学出版社,19995 舒贞权等编著.Intel 8086/8088系列微型计算机原理.西安:西安交通大学出版社,1993

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1