logo资料库

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

第1页 / 共18页
第2页 / 共18页
第3页 / 共18页
第4页 / 共18页
第5页 / 共18页
第6页 / 共18页
第7页 / 共18页
第8页 / 共18页
资料共18页,剩余部分请下载后查看
摘要
Abstract
1 原理
1.1 8086的内部结构
1.2 8086的指令系统
1.3汇编语言程序设计
1.4报警声音生成
2程序设计
2.1 程序设计流程图
2.2 程序代码
3心得体会
参考文献
目录 摘要................................................................................................................................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
武汉理工大学《微机原理与通信接口》课程设计报告书 摘要 在课程设计之前,具备微机原理的理论知识和实践能力;熟悉汇编语言编程 技术;熟悉 80X86 的 CPU 结构和指令系统;熟悉相关常用接口电路的设计使用方 法是必不可少的。因此原理部分重新温习并整理了相关知识。 课程设计要求进行大小写字母的转换。其实字母大小写的区别在于他们的A SCII码范围,它们之间的转换其实就是加减相应的ASCII码值。在判断 输入的字母是大写的还是小写的(即判断输入符号ASCII码在 41H~5AH 还是 在 61H~7AH 内)之后,决定判断是加上还是减去ASCII码值。另外如果输入 的不是字母(输入字符对应ASCII码值不在 41H~5AH 或 61H~7AH 内),则需 要报警提示,这不但涉及到用汇编语言实现发声的方法,而且对计算机硬件的了 解也有要求,因此原理部分加入了部分有关声音产生的硬件知识。 I
武汉理工大学《微机原理与通信接口》课程设计报告书 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. II
武汉理工大学《微机原理与通信接口》课程设计报告书 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 内部各部件发出控制命令以完成各条指令的功能。 总线接口单元由地址加法器、专用寄存器组、指令队列缓冲器和总线控制电 路等部件组成; 主要功能是形成访问存储器的物理地址,负责与外部(存储器或 I/O 接口) 打交道。 正常情况下,BIU 通过地址加法器形成指令的物理地址,从给定存储器地址 中取出指令代码送指令队列缓冲器中等待执行(指令队列缓冲器中出现一个空字 节,BIU 将自动进行读指令的操作填满队列)。 1
武汉理工大学《微机原理与通信接口》课程设计报告书 收到 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 功 能 将数据压入堆栈 (2) 出栈指令 POP 2
武汉理工大学《微机原理与通信接口》课程设计报告书 一般格式 POP OPRD 功 能 将数据弹出堆栈 累加器专用传送指令 有三种,输入、输出和查表指令。前两种又称为输入输出指令。 (1) IN 指令 一般格式 IN IN IN IN AL,n ; B AL←[n] AX,n ; W AX←[n+1][n] AL,DX ; B AL←[DX] 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 ③逻辑运算类 逻辑运算指令 3
武汉理工大学《微机原理与通信接口》课程设计报告书 (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 位位移量 或 JMP OPRD ;NEAR 可省略 目的地址与 JMP 指令应处于同一地址段范围之内。 远程转移 JMP FAR PTR OPRD ;IP=OPRD 的段内位移量,CS=OPRD 所在 4
武汉理工大学《微机原理与通信接口》课程设计报告书 段地址。 远程转移是段间的转移,目的地址与 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 中,作为 段间返回地址。 返回指令格式有: RET ;SP=((SP+1),SP),SP=SP+2 5
分享到:
收藏