微机原理与单片机实验报告_第1页
微机原理与单片机实验报告_第2页
微机原理与单片机实验报告_第3页
微机原理与单片机实验报告_第4页
微机原理与单片机实验报告_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

北京联合大学信息学院北京联合大学信息学院 实验报告实验报告 课 程 名 称 微型计算机原理 学 号 姓 名 2012 年 6 月 9 日 目录目录 实验 1 EMU8086 模拟器的使用 2 实验 2 数据传送指令的使用 4 实验 3 多位十六进制加法运算实验 8 实验 5 循环程序实验 10 实验 6 由 1 到 100 求和实验 12 实验 7 求表中正数 负数 0 的个数实验 14 实验 8 数据排列实验 冒泡排序 16 实验 9 系统功能调用 大小写转换 18 实验 10 阶乘 递归运算 20 实验 11 ProteusIO 工程文件的建立 21 实验 12 IO 口读写实验 245 373 22 实验 13 8255 接口实验 24 实验 14 声光报警 25 实验总结 27 实验实验 1 EMU8086 模拟器的使用模拟器的使用 一 实验要求 利用 EMU8086 模拟器环境 完成创建源程序文件 运行调试 实验结果的查看 二 实验目的 熟悉 EMU8086 实验环境 三 EMU8086 环境 1 模拟器编辑窗口 2 模拟器调试窗口 四 实验内容 实验内容 1 新建文件 运行 emu8086 1 新建文件 单击 新建 按钮 选择 COM 模板 在模拟器编辑窗口中输入如下程序代码 MOVAX 1020H MOVBX 2030H MOV AX BX ADDAX BX MOV BX AX MOV 2032H AX HLT 2 编译 单击 编译 按钮 对程序段进行编译 3 保存 编译通过 单击 完成 按钮 将其以文件名 EXP1 保存在本地磁盘上 4 仿真 单击 仿真 按钮 打开模拟器调试窗口和源文件窗口 5 在模拟器调试窗口中的寄存器组区 查看数据寄存器 AX BX CX DX 段寄存器 CS ES SS DS 指令指针寄存器 IP 指针寄存器 SP BP 变址寄存器 SI DI 标志寄存器的 值 6 单击 单步前 按钮 单步执行程序 并观察每次单步执行后 相关寄存器值的变化 7 单击 重载 按钮 将程序重载 并调整指令运行步进时延为 400 毫秒 单击 全速 按钮 运行程序 8 程序运行之后 在程序调试窗口中 选择 view memory 查看模拟器环境中 内存单 元 0700 0100 开始的连续 10 个单元的内容 9 将 存储器 中的地址改为 0700 2030 查看开始的四个字节的内容 并思考其内容与程序 的关联 10 将 存储器 中地址改为 1000 0100 并将从其开始的连续 10 个单元的内容改为 55H 实验内容 2 运行范例 在模拟器编辑窗口中 1 点击典型范例 2 选择 hellow word 程序 编译 运行 观察结果 修改程序 不要改原有 DEMO 程序 输出学号 姓名 汉语拼音 或 英文名 pare numbers 程序 编译 运行 观察结果 修改程序 不要改原有 DEMO 程序 将比较对象改为 7 编译 运行 观察结果 4 欣赏其它 DEMO 范例 实验实验 2 数据传送指令的使用数据传送指令的使用 一 实验要求 编写程序代码 指令 注释 二 实验目的 熟练掌握数据传送类指令的格式 功能和应用 三 实验说明 emu8086 环境下自建工程文件 五 参考程序 1 运行以下 3 段程序 记录用到的 4 个通用寄存器的内容 1 mov ax 0abch dec ax and ax 00ffh mov cl 4 sal al 1 mov cl al add cl 78h push ax pop bx hlt 2 mov sp 2000h mov ax 3000h mov bx 5000h push ax push bx pop ax hlt 3 mov ax 1234h mov bx 5678h mov cx 9abch push ax push bx push cx pop di pop si pop dx hlt 2 运行以下程序 记录 AX 寄存器的内容 逐条注释指令 Mov 1000h 5566h mov ax 1000h lea ax 1000h hlt 六 编程 测试 记录程序运行结果 实验实验 3 多位十六进制加法运算实验多位十六进制加法运算实验 一 实验要求 编程实现多位十六进制数的加法运算 二 实验目的 1 熟悉实验系统的编程和使用 2 掌握使用加法类运算指令编程及调试方法 3 掌握加法类指令对状态标志位的影响 三 实验说明 由于本实验是三个十六位二制数相加运算 N4 为存放结果 其中 N1 为 1111H N2 为 2222H N3 为 3333H 所以结果应该为 6666H 四 实验程序流程图 五 参考程序 DATA SEGMENT NUM1DW 1111H N1 NUM2 DW 2222H N2 NUM3 DW 3333H N3 NUM4 DW 0000H N4 DATA ENDS CODE SEGMENT ASSUME CS CODE DS DATA BEG MOV AX DATA MOV DS AX MOV SI OFFSET NUM1 MOV AX 0 ADD AX SI 0 ADD AX SI 2 ADD AX SI 4 MOV SI 6 AX JMP CODE ENDS END BEG 六 编程 测试 记录程序运行结果 实验实验 5 循环程序实验循环程序实验 一 实验要求 练习编程建立 8086 的循环程序 二 实验目的 1 熟悉实验系统的编程和使用 2 掌握使用 LOOP 判断转移指令实验循环的方法 3 掌握使用 LOOP 与 CX 的组合 三 实验说明 由于本实验是通过给 CX 一个数值 再通过 LOOP 作一个判断 CX 1 是否为 0 的转移 实现程序的循环 循环的内容是执行 AX 1 所以结果应该为 AX 最后大小为开始时给定 CX 的大小 四 实验程序流程图 五 参考程序 CODE SEGMENT ASSUME CS CODE CON A EQU 25 CON B EQU 12 START MOV AX 0 MOV CX 5 INC AX NOP INC AX LOOP INC AX JMP CODE ENDS END START 六 编程 测试 记录程序运行结果 实验实验 6 由由 1 到到 100 求和实验求和实验 一 实验要求 编程实现 1 到 100 求和运算 二 实验目的 1 熟悉实验系统的编程和使用 2 掌握使用加法类运算指令编程及调试方法 3 掌握使用循环类指令编程及调试方法 三 实验说明 由于本实验是 1 到 100 的 100 个数想加 1 2 3 4 97 98 99 100 求和 四 实验程序流程图 五 参考程序 DATA SEGMENT total DW 0000H DATA ENDS CODE SEGMENT ASSUME CS CODE DS DATA BEG MOV AX DATA MOV DS AX MOV SI OFFSET total MOV CX 100 MOV AX 0 MOV BX 1 add 100 ADD AX BX INC BX LOOP add 100 MOV SI AX JMP CODE ENDS END BEG 六 编程 测试 记录程序运行结果 total 1 2 3 4 99 100 5050 13BA H 16 进制 验证结果是否正确 实验实验 7 求表中正数求表中正数 负数负数 0 的个数实验的个数实验 一 实验要求 程序中定义数组 编程实现统计数组中正数 负数与 0 的个数 二 实验目的 1 熟悉实验系统的编程和使用 2 掌握查表方法 三 实验说明 由于本实验是先在表中存放数据 其它有正数 负数和 0 通过程序对表的查询 统计表 中 包含正数 负数和 0 的个数 四 实验程序流程图 五 参考程序 DATA SEGMENT DBUF DB 1 2 3 4 5 1 2 3 4 5 7 正 3 负 为结束标志 PLUS DB 1 正数个数 MINS DB 1 负数个数 DATA ENDS STACK SEGMENT STACK DB 200 DUP 0 STACK ENDS CODE SEGMENT ASSUME DS DATA SS STACK CS CODE START MOV AX DATA MOV DS AX MOV PLUS 0 初始化 MOV MINS 0 MOV DI 0 BG CMP DBUF DI JE EN 遇到 结束 INC DI CMP DBUF DI 0 和 0 比较 JG L1 大于 JL L2 小于 L1 INC PLUS 正数个数加 1 JMP BG 继续循环 L2 INC MINS 负数个数加 1 JMP BG EN MOV AH 4CH INT 21H 六 编程 测试 记录程序运行结果 实验实验 8 数据排列实验 冒泡排序 数据排列实验 冒泡排序 一 实验要求 1 利用 PROTEUS 平台 编程实现 8086 的由小到大的数据排列 2 利用系统功能调用实现需要排序数据的输入和排序结果显示 二 实验目的 1 熟悉实验系统的编程和使用 2 了解排列的简单算法 3 了解 冒泡排序 法 三 实验说明 有序的数列更有利于查找 本程序用的是 冒泡排序 法 算法是将一个数与后面的数 相比较 如果比后面的数大 则交换 如此将所有数比较一遍后 最大的数就会在数列的 最 后面 再进行下一轮比较 找出第二大数据 如此下去 直到全部数据由小到大排列完成 四 实验程序流程图 五 参考程序 DATA SEGMENT ARRAY DB 25 46 3 75 5 30 COUNT EQU ARRAY DATA ENDS STACK SEGMENT PARA STACK STACK DB 60 DUP STACK ENDS CODE SEGMENT ASSUME CS CODE DS DATA SS STACK START MOV AX DATA MOV DS AX MOV DX COUNT 1 MOV BL 0FFH AGAINO CMP BL 0 JE DONE XOR BL BL MOV CX DX MOV SI COUNT 1 AGAIN1 MOV AL ARRAY SI CMP AL ARRAY SI 1 JAE UNCH EXCH XCHG ARRAY SI 1 AL MOV ARRAY SI AL MOV BL 0FFH UNCH DEC SI LOOP AGAIN1 DEC DX JNZ AGAINO DONE JMP CODE ENDS END START 六 编程 测试 记录程序运行结果 由于在 0040H 单元开始的 6 个字节 25 46 3 75 5 30 19H 2EH 03H 4BH 05H 1EH 所以由小到大排列后为 03H 05H 19H 1EH 2EH 4BH 实验实验 9 系统功能调用 大小写转换 系统功能调用 大小写转换 实验目的 1 掌握 DOS 调用的输入输出功能 2 掌握分支程序设计的方法 实验内容 1 每次从屏幕输入一个大写字母 并将其转换为相应的小写字母输出显示到屏幕上 然 后继续输入下一个字母 2 此转换一直进行到输入 号为止 3 若输入过程中输入了除大写字母和 以外的其他字符 则在屏幕上给出错误提示信息 ERROR 并继续进行下一个大写字母的输入 实验源程序 DATA SEGMENT ERR DB ERROR 0DH 0AH DATA ENDS STACK SEGMENT STACK DB 200 DUP 0 STACK ENDS CODE SEGMENT ASSUME DS DATA SS STACK CS CODE START MOV AX DATA MOV DS AX IPT MOV AH 1 键盘输入大写字母 INT 21H CMP AL JE EN JNE OPT OPT CMP AL A 转换为小写字母并输出 JB ERROR CMP AL Z JA ERROR ADD AL 20H MOV AH 2 MOV DL AL INT 21H JMP IPT ERROR MOV DX OFFSET ERR 输出 ERROR 并换行 MOV AH 9 INT 21H JMP IPT EN MOV AH 4CH INT 21H CODE ENDS END START 六 编程 测试 记录程序运行结果 实验实验 10 阶乘 递归运算 阶乘 递归运算 一 实验目的 设计型实验的完成过程 二 实验要求 利用汇编编写阶乘的算法 键盘输入数据 屏幕显示结果 程序最小可算到6 的阶乘 发挥过程中 应注意计算结果的数值范围和计算时间 三 编程 测试 记录程序运行结果 实验实验 11 ProteusIO 工程文件的建立工程文件的建立 一 实验要求 运行 Labcenter Electronics Proteus 7 Professional SAMPLES VSM for 8086 工程文件 创建 proteus 工程文件 工程 1 绘制按键和发光二极管 要求仿真状态下 按键能控制二极管的亮灭 工程 2 绘制原理图 二 实验目的 1 参考 proteus 仿真调试使用手册 doc 2 熟悉 proteus 实验环境 三 实验电路及连线 工程 1 工程 2 四 实验说明 工程 1 工程的创建 存盘 器件的寻找 器件的连接 电路仿真 工程 2 器件的寻找 总线方式的连接 仿真程序的加载 五 实验程序流程图 六 绘制原理图 编写测试程序 加载 运行和记录结果 实验实验 12 IO 口读写实验口读写实验 245 373 一 实验要求 使用 74HC245 74HC373 利用 3 总线扩展 I O 口 完成外部 8 路开关状态的检测和 8 路指示灯亮灭的控制 二 实验目的 1 了解 CPU 常用的端口连接总线的方法 2 掌握 74HC245 74HC373 进行数据读入与输出 三 实验电路及连线 Proteus 参考实验电路 四 实验说明 一般情况下 CPU 的总线会挂有很多器件 为了防止异常 CPU 的总线总线上 同一时间只允许接入一个设备 这些设备需要分时 工作时 接入 要使用一些总线隔离 器件 例如 74HC245 74HC373 其中 74HC245 是三态总线收发器 本实验用它做输入 设备 读入开关状态 74HC373 是数据锁存芯片 作为系统的输出设备 通过它作数据的 锁住输出 两个设备的端口地址依据原理图自行计算 五 实验程序流程图 六 实验步骤 1 Proteus 环境下绘制原理图 2 emu8086 环境下编写和编译程序 创建文件类型 exe 参考代码如下 OUT373 EQU 0E000H IN245EQU 0F000H MM1 MOV DX IN245 IN AL DX MOV DX OUT373 OUT DX AL JMP MM1 六 绘制原理图 编写测试程序 加载 运行和记录结果 实验实验 13 8255 接口实验接口实验 一 实验要求 1 利用 8255 可编程并行口芯片 实现输入 输出实验 实验中用 8255PA 口作读取开关状 态输入 8255PB 口作控制 7 段数码管输出 2 再此基础上利用 PC 口再外接一个 7 段数码管 重新定义四个按键功能 分两组 每组两个按键对应一个数码管 一个按键增 1 计数 一个按键减 1 计数 数值在数码管显示 计数范围 0 9 二 实验目的 1 了解 8255 芯片结构及编程方法 2 了解 8255 输入 输出实验方法 三 实验电路及连线 1 Proteus 实验电路 四 实验说明 8255 端口地址依据原理图自行计算 五 实验程序流程图 六 实验步骤 1 Proteus 环境下绘制原理图 2 emu8086 环境下编写和编译程序 创建文件类型 exe 参考代码如下 CT8255SET EQU 86H PORTA EQU 80H PORTB EQU 82H PORTC EQU 84H CTAIBO EQU 10010000B A IN B OUT MOV DX CT8255SET pc to 8255 control byte MOV AL CTAIBO control byte addr OUT DX AL G1 MOV DX ORTA IN AL DX MOV BL 0FFH SUB BL AL MOVAL BL MOV BX OFFSET LED XLAT PUSH CX MOV CX 40H DELAY LOOP DELAY POP CX MOV DX PORTB OUT DX AL JMP G1 LED DB 3fH 06H 5bH 4fH 66H 6dH 7dH 07H 7fH 6fH 77H 7cH 39H 5eH 79H 71H 共阴数码管段选码表 无小数点 六 绘制原理图 编写测试程序 加载 运行和记录结果 实验实验 14 声光报警声光报警 一 实验目的 设计一个基于 AT89c52

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论