版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目 录摘 要 . . I1 原理 . . 11.1 8086简介 . . 11.2汇编程序设计简介 . 21.3报警设计 . 22程序设计 . 42.1 程序设计流程图 . 42.2 从键盘接受字符程序段 . 52.3大写字母转换成小写字母程序段 . 52.4小写字母转换成大写字母程序段 . 62.5 报警程序段 . 72.6 总程序代码 . 83 运行结果分析 . . 114心得体会 . 12参考文献 . . 13摘 要在课程设计之前,具备微机原理的理论知识和实践能力;熟悉汇编语言编程技术;熟悉80X86的CPU 结构和指令系统;熟悉相关常用接口电路的设计使用方法是必不可少的。因此原理部分重
2、新温习并整理了相关知识。课程设计要求进行大小写字母的转换。其实字母大小写的区别在于他们的ASCII 码范围,它们之间的转换其实就是加减相应的ASCII 码值。在判断输入的字母是大写的还是小写的(即判断输入符号ASCII 码在41H5AH还是在61H7AH内)之后,决定判断是加上还是减去ASCII 码值。另外如果输入的不是字母(输入字符对应ASCII 码值不在41H5AH或61H7AH内),则需要报警提示,这不但涉及到用汇编语言实现发声的方法,而且对计算机硬件的了关键词:8086 大小写字母转换 报警1 原理1.1 8086简介Intel 8086拥有四个16位的通用寄存器,也能够当作八个8位寄
3、存器来存取,以及四个16位索引寄存器(包含了堆栈指标 。资料寄存器通常由指令隐含地使用,针对暂存值需要复杂的寄存器配置。它提供64K 8 位元的输出输入(或32K 16 位元 ,以及固定的向量中断。大部分的指令只能够存取一个内存位址,所以其中一个操作数必须是一个寄存器。运算结果会储存在操作数中的一个。Intel 8086有四个内存区段(segment 寄存器,可以从索引寄存器来设定。区段寄存器可以让 CPU 利用特殊的方式存取1 MB内存。8086 把段地址左移 4 位然后把它加上偏移地址。大部分的人都认为这是一个很不好的设计,因为这样的结果是会让各分段有重叠。尽管这样对组合语言而言大部分被接
4、受(也甚至有用 ,可以完全地控制分段,使在编程中使用指针 (如C 编程语言 变得困难。它导致指针的高效率表示变得困难,且有可能产生两个指向同一个地方的指针拥有不同的地址。更坏的是,这种方式产生要让内存扩充到大于 1 MB 的困难。而 8086 的寻址方式改变让内存扩充较有效率。 80X86从功能上分执行单元EU(Execution Unit ,和总线接口单元BIU(Bus Interface Unit ,执行单元由算术逻辑单元(ALU )、标志寄存器、通用寄存器组和EU 控制器等部件组成。指令执行部件EU 由算术逻辑单元、标志寄存器、通用寄存器和EU 控制器等部件组成。 主要功能是执行指令:一
5、般顺序执行,EU 不断地从指令队列中取指令连续执行,而省去访问存储器取指令的时间。需要访问存储器取操作数时,EU 将访问地址送给BIU 后,将要等待操作数到来后才能继续操作;遇到转移类指令时,要将指令队列中的后续指令作废,等待BIU 重新从存储器取出目标地址中的指令代码进入指令队列后,EU 才能继续执行指令。算术逻辑单元(ALU )完成16位或8位的二进制运算;16位暂存寄存器用来暂存参加运算的操作数。运算结果通过内部总线送到通用寄存器组或BIU 的内部寄存器中等待写入存储器。经ALU 运算后的结果特征置入标志寄存器中保存EU 控制器负责从BIU 的指令队列中取指令,并对指令译码;根据指令要求
6、向EU 内部各部件发出控制命令以完成各条指令的功能。总线接口单元由地址加法器、专用寄存器组、指令队列缓冲器和总线控制电路等部件组成;主要功能是形成访问存储器的物理地址,负责与外部(存储器或I/O接口)打交道。1.2汇编程序设计简介汇编:计算机不能直接识别和执行汇编语言程序,而要通过“翻译”把源程序译成机器语言程序(目标程序)才能执行,这一“翻译”工作称为汇编。汇编有人工汇编和计算机汇编两种方法。汇编语言是面向机器的,每一类计算机分别有自己的汇编语言。汇编语言占用的内存单元少,执行效率高,广泛应用于工业过程控制与检测等场合。汇编语言语句格式标号: 操作符 操作数 ;注释START: MOV AX
7、 , 50H ;AX (50H )标号用来标明语句地址,它代表该语句指令机器码的第一个字节的存储单元地址。 标号一般规定由18个英文字母或数字组成,但第一个符号必须是英文字母。注释只是对语句或程序段的含义进行解释说明,以方便程序的编写、阅读和交流,简化软件的维护,一般只在关键处加注释。伪指令:伪指令只用于汇编语言源程序中,对汇编过程起控制和指导的作用,不生成机器码。汇编结束,自动消失。汇编语言程序设计步骤:分析问题;确定算法;设计程序流程;分配内存单元:分配内存工作单元,确定程序和数据区的起始地址;编写汇编语言程序;调试程序;1.3报警设计 8253/8254是早期的PC 系列机中有一个专门用
8、于定时的集成电路,定时器通道3的G 端与61H 端口的bit0位相联,如果将61H 端口的bit0位置成1,那么定时器通道3就被启动,此时将有一组信号从OUT 端输出,信号的频率可以用程序控制;若61H 端口bit0位为0,则定时器被关闭,OUT 端就会恒定为1此电路用在这里相当一个" 可控开关" ,如果将61H 端口的bit0、bit1位都置成1,则相当于既打开了定时器又打开了开关,这时候定时器产生的声音信号就会送到放大器推动喇叭发声;若将bit0位置0,则定时器关闭,此时OUT 端为1,这时候如果连续改变bit1位的状态,也可以从喇叭中听到声音若将bit1位置0,则开关
9、关闭,此时即使打开定时器也不能听到声音。PC 中的定时电路有三个通道,通道3用于发声,通道1用于控制系统内部的时钟。大家都十分清楚用DOS 的"TIME" 命令可以观察并修改系统内部的一个时钟,这个时钟之所以能连续运转主要依靠定时器的通道1。通道1的工作方式和通道3一样,但是系统启动时设定其发出一个频率固定为18.2Hz 的信号,这个信号直接送到系统中的" 中断控制器" 。每一个"Hz" 都产生一个硬件中断,一般称这个硬中断为"IRQ0" ,对应的中断号是08H 。也就是说,当计算机启动后,我们的机器看上去十分平静
10、,但实际上CPU 非常忙碌。在定时器的控制下每隔55毫秒就要执行一个08H 号中断,这个中断的主要工作就是连续地计数。在内存"0040H :006CH" 处有四字节的存储空间专门用于保存计数值,CPU 每执行一次08H 中断,这四字节的计数值就被加1,不难算出这个计数值每增加1091后时间恰好过了1分钟,每增加65454后时间恰好过了1小时。系统内部的时钟之所以能准确走时,靠得就是08H 中断和这四字节的计数值。因此我们要想精确的定时,必须依靠时钟计数值才行。2程序设计2.1 程序设计流程图 图2.1流程图2.2 从键盘接受字符程序段本程序段要求能够从键盘接受字符,从而做出
11、下面的判断是字母还是其他字符。程序段如下:lea bx ,arraymov ax , csmov ds , axmov dx ,offset p1mov ah , 0ahint 21h程序段中的一些指令功能:MOV :数据传送指令。将源操作数传送到目的操作数中。OFFSET :取源操作数首地址。int 21h:结束该程序段先将array 的首地址给bx ,将cs 付给ax ,再将ax 传到ds 中,将pl 的偏移量给dx ,接着调用中断21的0a 号功能从键盘接收字符。2.3大写字母转换成小写字母程序段本程序段要求实现大写字母转换成小写字母的设计,可以根据AZ的ASCII 码来进行程序设计,若
12、小于A 的ASCII 码41h 则跳至报警程序,若大于Z 的ASCII 码5ah 则跳至小写转换成大写字母程序,若在41h5ah范围内,则将其ASCII 码加20h ,从而实现大写字母转换成小写字母。程序段如下: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
13、 ,20h ; 加20h, 大写转小写该程序段中的一些指令功能:INC:自动加1指令。执行后操作数自动加1。CMP :比较指令。将源操作数和目的操作数相减,结果不存储。影响标志位。JE :条件跳转指令。相等则跳转。JL :条件跳转指令。小于则跳转。JG :条件跳转指令。大于则跳转。ADD:算术加法指令。将两操作数相加,结果放目的操作数。该程序段中,cmp arraydi,41h表示将输入的字符与大写字母A (41h )进行比较。jl exit1,表示若小于41h 则跳到报警程序发出错误报警。add arraydi,20h,表示将输入字符的ASCII 码加上20h ,从而实现大写转换成小写。2.
14、4小写字母转换成大写字母程序段本程序段要求实现小写字母转换成大写字母的设计,可以根据az的ASCII 码来进行程序设计,若小于a 的ASCII 码61h 则跳至小写转换成大写字母程序,若大于z 的ASCII 码7ah 则跳至报警程序,若在61h7ah范围内,则将其ASCII 码加20h ,从而实现小写字母转换成大写字母。程序段如下:next1: cmp arraydi ,'$' ; 比较je exit ; 相等,则跳到exit 执行cmp arraydi ,61h ;(AZ->41h-5ah az->61h-7ah与a 比较 jl next ; 小于, 则跳cmp
15、arraydi ,7ah ; 与z 比较jg exit1 ; 大于, 则跳sub arraydi ,20h ; 减20h, 小写转大写jmp next该程序段中的一些指令功能:CMP :比较指令。将源操作数和目的操作数相减,结果不存储。影响标志位。JE :条件跳转指令。相等则跳转。JL :条件跳转指令。小于则跳转。JG :条件跳转指令。大于则跳转。SUB:算术减法指令。将目的操作数减源操作数,结果送目的操作数。JMP :无条件转移指令。该程序段中,sub arraydi,20h,表示将输入字符的ASCII 码减去20 从而实现建小写字母转换成大写。jmp next,无条件转移到next 程序段
16、,从而实现程序的循环,对输入的字符串中的下一个字符进行判断。2.5 报警程序段该程序段为调用程序,要求能够实现错误报警。当输入的字符为非大小写字母时能够报警发声。此程序断可以根据字符的ASCII 码来进行判断。此程序断可以用堆栈来进行设计。程序设计如下:sound procpush axpush dxmov dx , cxin al , 61hand al , 11111100b ; 使第0,1位为0trig: xor al , 2 ; 使第1位翻转 PB的低两位为3,即使输出有效 out 61h , almov cx , bxdelay:loop delaydec dxjne trigpop
17、 dxpop axret该程序段中的一些指令功能:PUSH:将源操作数内容压栈,同时自动修改栈顶指针。POP:从堆栈弹出数据,实现与PUSH 相反的操作。LOOP:循环指令。每执行一次循环次数自动减一。IN :传送指令。从I/O端口输入数据至AL 或AX 。OUT :传送指令。将AL 或AX 的内容输出至I/O端口。2.6 总程序代码从从键盘输入一串英文字符,若是小写字符则转换成大写字符在下一行输出,若是大写字符则转换成小写字符在下一行输出,若不是英文字符则显声响报警。;- ; 实现英文字母的大小写转换;- code segment ; 代码段assume cs :code , ds :cod
18、eorg 100h ; 从100h 开始start :jmp begin ; 跳到beginp1 db 100p2 db 0array db 100h dup (? ; 置100个字节的缓冲区存放数据begin:lea bx ,array ; 将array 的首地址给bxmov ax , cs ; 置cs->dsmov ds , axmov dx ,offset p1 ; 将p1的偏移量给dxmov ah , 0ah ; 调用中断21的0a 号功能从键盘接收字符 int 21hxor bx , bx ; 将bx 清零mov bl ,p2 ;p2->blmov arraybx ,
19、39;$' ; 送'$'至字符串尾mov di , 0ffffh ;-1->dinext:inc di ;di 自加cmp arraydi ,'$' ; 比较je exit ; 相等,则跳到exit 执行cmp arraydi ,41h ;(AZ->41h-5ah az->61h-7ah与A 比较 jl exit1cmp arraydi ,5ahjg next1add arraydi ,20hjmp nextnext1:cmp arraydi ,'$'je exitcmp arraydi ,61hjl nextcmp a
20、rraydi ,7ahjg exit1sub arraydi ,20hjmp nextdisp:loop nextexit:mov p1,0dhmov p2,0ahmov ah , 09hint 21hjmp beginexit1:; 小于, 则跳 ; 与Z 比较 ; 大于, 则跳 ; 加20h, 大写转小写 比较 相等,则跳到exit 执行 与a 比较 小于, 则跳 与z 比较 大于, 则跳 减20h, 小写转大写 ; 回车换行 ; ; ;(AZ->41h-5ah az->61h-7ah; ; ; ;mov p1, 0dhmov p2, 0ahcall sound ; 调用发声子
21、程序call soundjmp beginmov ah , 4ch ; 程序结束int 21hsound procpush axpush dxmov dx , cxin al , 61hand al , 11111100btrig: xor al , 2out 61h , almov cx , bxdelay:loop delaydec dxjne trigpop dxpop axretsound endpcode endsend begin; 使第0,1位为0 使第1位翻转 PB的低两位为3,即使输出有效 ;3 运行结果分析当输入字母串ABCDEFabcdef 后,按回车键转换为abcdefABCDEF, 结果如下图3.1所示:图3.1 运行结果当输入非英文字母时,按下回车键后发出滴滴的报警声,无法转换大小写,光标指向错误字符。结果如下图3.2所示:图3.2 错误运行结果 4心得体会通过这一个星期微机原理的课程设计,我
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国学导读考试试题及答案
- 2026八年级下语文古诗爱国手法鉴赏
- 公司安保巡逻制度
- 2026二年级数学下册 图形的运动深度学习
- 2026九年级上语文我看语言特色体会
- 2026三年级数学上册 时间单位的素养测评
- 2026三年级数学上册 乘法的综合应用
- 优莎娜奖金制度
- 企业文件制度
- 办公楼垃圾分类奖惩制度
- 《跨学科实践:潜艇》(教学设计)-2024-2025学年教科版(2024)初中物理八年级下册标签标题
- 诊所负责人聘用合同
- 统编版(2025)七年级下册道德与法治第一课《青春正当时》教案(3课时)
- CNAS-GL042-2019 测量设备期间核查的方法指南
- 工厂隐患排查培训
- 装饰装修工程安全施工方案
- 新教科版小学1-6年级科学需做实验目录
- 自控仪表安装工程施工过程记录用表格
- 预应力空心方桩打桩工程监理实施细则
- 统编版语文三年级上册第三单元快乐读书吧:伊索寓言 导读课 课件
- 数字华容道-1课时
评论
0/150
提交评论