




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录目录 摘要 I Abstract II 1 原理 1 1 1 8086 的内部结构 1 1 2 8086 的指令系统 2 1 3 汇编语言程序设计 6 1 4 报警声音生成 7 2 程序设计 9 2 1 程序设计流程图 9 2 2 程序代码 10 2 3 运行结果分析 13 3 心得体会 14 参考文献 15 武汉理工大学 微机原理与通信接口 课程设计报告书 I 摘要 在课程设计之前 具备微机原理的理论知识和实践能力 熟悉汇编语言编 程技术 熟悉 80X86 的 CPU 结构和指令系统 熟悉相关常用接口电路的设计使 用方法是必不可少的 因此原理部分重新温习并整理了相关知识 课程设计要求进行大小写字母的转换 其实字母大小写的区别在于他们的 码范围 它们之间的转换其实就是加减相应的 码值 在 判断输入的字母是大写的还是小写的 即判断输入符号 码在 41H 5AH 还是在 61H 7AH 内 之后 决定判断是加上还是减去 码值 另外如果输入的不是字母 输入字符对应 码值不在 41H 5AH 或 61H 7AH 内 则需要报警提示 这不但涉及到用汇编语言实现发声的方法 而 且对计算机硬件的了解也有要求 因此原理部分加入了部分有关声音产生的硬 件知识 武汉理工大学 微机原理与通信接口 课程设计报告书 II Abstract Prior to the course design computer principles with theoretical knowledge and practical ability familiar with assembly 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 conversion 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 code 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 sound 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 1 8086 的内部结构 80 x86 从功能上分执行单元 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 内部各部件发出控制命令以完成各条指令的功能 总线接口单元由地址加法器 专用寄存器组 指令队列缓冲器和总线控制 电路等部件组成 主要功能是形成访问存储器的物理地址 负责与外部 存储器或 I O 接口 打交道 正常情况下 BIU 通过地址加法器形成指令的物理地址 从给定存储器地 址中取出指令代码送指令队列缓冲器中等待执行 指令队列缓冲器中出现一个 空字节 BIU 将自动进行读指令的操作填满队列 武汉理工大学 微机原理与通信接口 课程设计报告书 2 收到 EU 送来的操作数地址 BIU 将立即形成操作数的物理地址 完成读 写操 作数或运算结果功能 遇到转移类指令 BIU 将指令队列缓冲器中的尚存指令 作废 重新从存储器目标地址中取指令送指令缓冲器中 指令队列可存放 6 字节的指令代码 一般情况下指令队列中总是填满指令 使 EU 可不断地得到执行的指令 16 位地址加法器专门用来完成由逻辑地址变换成物理地址的功能 实际上 是进行一次地址加法 将两个 16 位的逻辑地址转换为 20 位的物理地址 以达 到可寻址 1M 字节的存储空间 总线控制电路将 8086CPU 的内部总线与外部总线相连 是 8086CPU 与外部 交换数据的必经之路 包括 16 条数据总线 20 条地址总线和若干条控制总线 程序装载到内存中后通过 16 位数据线确定各个段地址 开始取出指令 内存中 读字节 放到指令队列 队列出口通过 EU 控制器执行指令并同时影响 IP 指令指针移动指令长度 或通过指令执行后影响 IP 1 2 8086 的指令系统 8086 全部指令按功能可分成六大类 数据传送类 一般格式 MOV OPRD1 OPRD2 MOV 是操作码 OPRD1 和 OPRD2 分别是目的操作数和源操作数 功 能 完成数据传送 堆栈指令 包括入栈 PUSH 和出栈 POP 指令两类 仅能进行字运算 操作数不 能是立即数 1 入栈指令 PUSH 一般格式 PUSH OPRD 功 能 将数据压入堆栈 武汉理工大学 微机原理与通信接口 课程设计报告书 3 2 出栈指令 POP 一般格式 POP OPRD 功 能 将数据弹出堆栈 累加器专用传送指令 有三种 输入 输出和查表指令 前两种又称为输入输出指令 1 IN 指令 一般格式 IN AL n B AL n IN AX n W AX n 1 n IN AL DX B AL DX IN AX DX W AX DX 1 DX 功 能 从 I O 端口输入数据至 AL 或 AX 2 OUT 指令 一般格式 OUT n AL B AL n OUT n AX W AX n 1 n OUT DX AL B AL DX OUT DX AX W AX DX 1 DX 功 能 将 AL 或 AX 的内容输出至 I O 端口 算术运算类 加法指令 Addition 1 一般形式 ADD OPRD1 OPRD2 功 能 OPRD1 OPRD1 OPRD2 2 一般形式 ADC OPRD1 OPRD2 带进位的加法 功 能 OPRD1 OPRD1 OPRD2 CF 3 一般形式 INC OPRD 功 能 OPRD OPRD 1 减法指令 Subtraction 1 一般形式 SUB OPRD1 OPRD2 功 能 OPRD1 OPRD1 OPRD2 2 一般形式 SBB OPRD1 OPRD2 功 能 OPRD1 OPRD1 OPRD2 CF 3 一般形式 DEC OPRD 功 能 OPRD OPRD 1 CF 逻辑运算类 武汉理工大学 微机原理与通信接口 课程设计报告书 4 逻辑运算指令 1 一般格式 NOT OPRD 功 能 对操作数求反 然后送回原处 操作数可以是寄存器或存储器 内容 2 一般格式 AND OPRD1 OPRD2 功 能 对两个操作数进行按位的逻辑 与 运算 结果送回目的操作 数 3 一般格式 TEST OPRD1 OPRD2 功 能 完成与 AND 指令相同的操作 结果反映在标志位上 但并不送 回 通常使用它进行测试 4 一般格式 OR OPRD1 OPRD2 功 能 对指定的两个操作数进行逻辑 或 运算 结果送回目的操作数 5 一般格式 XOR OPRD1 OPRD2 功 能 对两个指定的操作数进行 异或 运算 结果送回目的操作数 串操作类 重复指令前缀 串指令 程序转移类 无条件转移 调用和返回指令 1 无条件转移指令 JMP 分直接转移和间接转移两种 一般格式 JMP OPRD OPRD 是转移的目的地址 直接转移的 3 种形式为 短程转移 JMP SHORT OPRD IP IP 8 位位移量 目的地址与 JMP 指令所处地址的距离应在 128 127 范围之内 近程转移 JMP NEAR PTR OPRD IP IP 16 位位移量 武汉理工大学 微机原理与通信接口 课程设计报告书 5 或 JMP OPRD NEAR 可省略 目的地址与 JMP 指令应处于同一地址段范围之内 远程转移 JMP FAR PTR OPRD IP OPRD 的段内位移量 CS OPRD 所在 段地址 远程转移是段间的转移 目的地址与 JMP 指令所在地址不在同一段内 执 行该指令时要修改 CS 和 IP 的内容 间接转移指令的目的地址可以由存储器或寄存器给出 段内间接转移 JMP WORD PTR OPRD IP EA 由 OPRD 的寻址方式 确定 JMP WORD PTR BX 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 操 作 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 2 CALL 指令先把 CS 压入堆栈 再把 IP 压入堆栈 当执行 RET 指令而返回时 从堆栈中取出一个字放入 IP 中 然后从堆栈中再取出第二个字放入 CS 中 作 武汉理工大学 微机原理与通信接口 课程设计报告书 6 为段间返回地址 返回指令格式有 RET SP SP 1 SP SP SP 2 RET n SP SP 1 SP SP SP 2 SP SP n RET n 指令要求 n 为偶数 当 RET 正常返回后 再做 SP SP n 操作 控制类 循环控制指令 loop 1 3 汇编语言程序设计 汇编 计算机不能直接识别和执行汇编语言程序 而要通过 翻译 把源 程序译成机器语言程序 目标程序 才能执行 这一 翻译 工作称为汇编 汇编有人工汇编和计算机汇编两种方法 汇编语言是面向机器的 每一类计算机分别有自己的汇编语言 汇编语言 占用的内存单元少 执行效率高 广泛应用于工业过程控制与检测等场合 汇编语言语句格式 标号 操作符 操作数 注释 START MOV A 30H A 30H 标号用来标明语句地址 它代表该语句指令机器码的第一个字节的存储单 元地址 标号一般规定由 1 8 个英文字母或数字组成 但第一个符号必须是英文字 母 注释只是对语句或程序段的含义进行解释说明 以方便程序的编写 阅读 和交流 简化软件的维护 一般只在关键处加注释 武汉理工大学 微机原理与通信接口 课程设计报告书 7 伪指令 伪指令只用于汇编语言源程序中 对汇编过程起控制和指导的作 用 不生成机器码 汇编结束 自动消失 汇编语言程序设计步骤 1 分析问题 2 确定算法 3 设计程序流程 4 分配内存单元 分配内存工作单元 确定程序和数据区的起始地址 5 编写汇编语言程序 6 调试程序 1 4 报警声音生成 早期的 PC 系列机中有一个专门用于定时的集成电路 型号是 8253 8254 它有三个通道 第一个通道用于控制系统时钟正常运转 第二个通道用于存储 器刷新 这两个通道与我们现在讨论的问题无关 第三个通道通过一组电路与 喇叭相联 定时器通道 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 则开关关闭 此时即使打开定时器也不能听到声音 武汉理工大学 微机原理与通信接口 课程设计报告书 8 PC 中的定时电路有三个通道 通道 3 用于发声 通道 1 用于控制系统内部 的时钟 大家都十分清楚用 DOS 的 TIME 命令可以观察并修改系统内部的一个 时钟 这个时钟之所以能连续运转主要依靠定时器的通道 1 通道 1 的工作方式和通道 3 一样 但是系统启动时设定其发出一个频率固定 为 18 2Hz 的信号 这个信号直接送到系统中的 中断控制器 每一个 Hz 都产 生一个硬件中断 一般称这个硬中断为 IRQ0 对应的中断号是 08H 也就是 说 当计算机启动后 我们的机器看上去十分平静 但实际上 CPU 非常忙碌 在定时器的控制下每隔 55 毫秒就要执行一个 08H 号中断 这个中断的主要工作 就是连续地计数 在内存 0040H 006CH 处有四字节的存储空间专门用于保存计数值 CPU 每 执行一次 08H 中断 这四字节的计数值就被加 1 不难算出这个计数值每增加 1091 后时间恰好过了 1 分钟 每增加 65454 后时间恰好过了 1 小时 系统内部 的时钟之所以能准确走时 靠得就是 08H 中断和这四字节的计数值 因此我们 要想精确的定时 必须依靠时钟计数值才行 武汉理工大学 微机原理与通信接口 课程设计报告书 9 2 程序设计 2 1 程序设计流程图 图 2 1 N Y 开始 array 首地址 bx 从键盘接受字符 输入字 母 大写转小写 小写转大写 回车换行输出 结束 报警 武汉理工大学 微机原理与通信接口 课程设计报告书 10 2 2 程序代码 从从键盘输入一串英文字符 若是小写字符则转换成大写字符在下一行输出 若是大写字符则转换成小写字符在下一行输出 若不是英文字符则显声响报警 实现英文字母的大小写转换 codecode segmentsegment 代码段 assumeassume cs codecode ds codecode org 100h 从100h开始 startstart jmp begin 跳到begin p1 dbdb 100 p2 dbdb 0 array dbdb 100h dupdup 置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 bx bx 将bx清零 mov bl p2 p2 bl mov array bx 送 至字符串尾 mov di 0ffffh 1 di 武汉理工大学 微机原理与通信接口 课程设计报告书 11 next 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 next next1 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 next disp loop next exit mov p1 0dh 回车换行 mov p2 0ah mov ah 09h int 21h jmp begin exit1 mov p1 0dh mov p2 0ah 武汉理工大学 微机原理与通信接口 课程设计报告书 12 call sound 调用发声子程序 call sound call sound call sound jmp begin mov ah 4ch 程序结束 int 21h sound procproc 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 ret sound endpendp codecode endsends endend begin 武汉理工大学 微机原理与通信接口 课程设计报告书 13 2 3 运行结果分析 当输入字母串ABCDEFabcdef后 按回车键转换为abcdefABC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年智能电子腰围尺项目规划申请报告模板
- 布洛芬专业知识培训课件
- 2025年特种作业类危险化学品安全作业化工自动化控制仪表作业-氟化工艺作业参考题库含答案解析
- 女儿一年级数学试卷
- 灵宝高三初三数学试卷
- 2025年建筑工程类注册安全工程师-安全生产专业实务(金属冶炼安全)参考题库含答案解析
- 历城二中二模数学试卷
- 南昌市八下数学试卷
- 2025年学历类自考公共课数论初步-计算机应用基础参考题库含答案解析
- 2025年学历类自考公共课政治经济学(财)-政治经济学(财)参考题库含答案解析
- 无诉讼仲裁承诺书(共7篇)
- 深圳福田狮岭小学谢非FRANKTHERAT
- 校园突发事件与应急管理
- 护理科研选题与论文写作
- GA 1301-2016火灾原因认定规则
- TTT培训师培训课件(-)
- 学校学生健康体检知识培训课件
- 重医大内科诊疗操作规范内科诊疗操作规范
- 脚手架作业安全管理培训
- 经颈静脉肝内门体分流术(TIPS)的护理课件
- (中职)VB程序设计电子课件(完整版)
评论
0/150
提交评论