微机实验报告_第1页
微机实验报告_第2页
微机实验报告_第3页
微机实验报告_第4页
微机实验报告_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1 / 13 微机实验报告 微机原理与接口技术 实验报告 姓名:张楠乔 学号: 10213030 班级:自动化 1004 指导教师:周永华 实验一交通灯控制实验 一、实验目的 通过并行接口 8255 实现十字路口交通灯的模拟控制,进一步掌握对并行口的使用。 二、实验内容 实验内容,如图 1 连接电路, L7、 L6、 L5 作为南北路口的交通灯与 PC7、 PC6、 PC5 相连, L2、 L1、 L0作为东西路口的交通灯与 PC2、 PC1、 PC0相连,编程使六个灯按交通灯变化规律亮灭。 红 黄绿红 黄 绿 L7 L6L5 L2 L1 L0 图 1 连接图 要求: 十字路口交通灯的变化规律要求: 南北路口的绿灯、东西路口的红灯同时亮 30秒左右。 南北路口的黄灯闪烁若干次,同时东西路口的红灯2 / 13 继续亮。 南北路口的红灯、东西路口的绿灯同时亮 30秒左右。 南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁若干次。 转重复。 三、实验流程图 图 2 流程图 四、试验程序: DATA SEGMENT PC EQU 0C40AH PD EQU 0C40BH DATA ENDS STACK1 SEGMENT STACK DW 100HDUP STACK1 ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1 START: MOV DX,DATA MOV DS,DX;初始化 MOV AL,80H MOV DX,PD S: MOV AL,24H 3 / 13 MOV DX,PC OUT DX,AL CALL DELAY3 ;南北绿灯亮、东西红灯亮 3秒 MOV CX,6 Y1: MOV AL,44H OUT DX,AL CALL DELAY1 MOV AL,04H OUT DX,AL CALL DELAY1 LOOP Y1 ;南北绿灯灭,南北黄灯闪,东西红灯亮 MOV AL,81H OUT DX,AL CALL DELAY3;东西红灯灭,南北红灯、东西绿灯亮 3秒 MOV CX,6 Y2: MOV AL,82H OUT DX,AL CALL DELAY1 MOV AL,80H OUT DX,AL CALL DELAY1 4 / 13 LOOP Y2;东西绿灯灭,东西黄 灯闪,南北红灯亮 MOV DL,0FFH MOV AH,6 INT 21H JZ S MOV AH,4CH INT 21H;查询是否有键按下 DELAY3 PROC;延时 3秒子程序 PUSH CX PUSH AX MOV CX,0AFFFH T1: MOV AX,0FFFFH T2: DEC AX JNZ T2 LOOP T1 POP AX POP CX RET DELAY3 ENDP DELAY1 PROC ;延时半秒子程序 PUSH CX MOV CX,1D55H 5 / 13 T3: MOV AX,0FFFFH T4: DEC AX JNZ T4 LOOP T3 POP AX POP CX RET DELAY1 ENDP CODE ENDS END START 五、实验步骤 将 PC总线接口卡插在任意扩展槽中。 用 50芯线扁平电缆线连接接口卡和实验台。 如图 1所示连接线路。 打开实验箱电源,启动 TCP-XX实验系统软件环境。 测试 8255、 LED 和串口是否完好。 六、实验现象: 南北路口的绿灯、东西路口的红灯同时亮 3 秒左右,然后南北路口的黄灯闪烁若干次,东西路口的红灯继续亮,接着南北路口的红灯、东西路口的绿灯同时亮 3秒左右,然后南北路口的红灯继续亮、同时东西路口 的黄灯亮闪烁若干次。如此循环。结果与实验要求相符。 6 / 13 七、实验心得 本实验的重要一部分就是延时子程序,编写程序时候要根据流程图,这样就从一定程度上简化了实验,还有就是实验的调试过程,一定要细心又有耐心 微型计算机原理实验报告 班级: 姓名: 学号: 2016 年 1月 14日 实验一、数据传送、算术运算、循环程序结构 【实验目的】 1熟悉 8086 汇编语言源程序的框架结构,并掌握汇编语言程序的编写、汇编 、连接、执行的过程,并利用 Turbo Debugger调试汇编程序。 2熟悉 8086 指令系统的数据传送指令,掌握寻址方式。 3熟悉 8086 指令系统的算术运算指令。掌握循环结构汇编语言程序的编制。 【实验内容】 教材 P121,第 14、 15题。 教材 P195,第 6、 12 题。 实验: P121,第 14题 设有两个 8个字节长的 BCD码数据 BCD1及 BCD2。 BCD17 / 13 数以 1000H为首地址在内存中顺序存放; BCD2 数以 2000H 为首地址在内 存中顺序存放。要求相加后结果顺序存放在以2000H为首地址的内存区中。 【实验原理】 考虑两个 8 个字节长的 BCD 码相加,首先根据地址要求将数据放在对应的地址单元中,然后做加法, BCD 码相加要用到调整指令,结果才为正确的 BCD 数 【程序框图】 【程序源代码】 DATAS SEGMENT ORG 1000H 1000H BCD1 DB ORG 2000H BCD2 DB 11H,12H,13H,14H,15H,16H,17H,18H;起始地址为 2000HDATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS START: MOV AX,DATAS MOV DS,AX MOV BX,0 MOV CX,8 ;设置循环次数 8 次 CLC ;清进位 CF标志 AGAIN:MOV AL,BX+1000H ADC BX+2000H,AL;结果放在 2000H 开始的单元内 DAA INC BX 8 / 13 LOOP AGAIN;没完成则转 AGAIN 循环 MOV AH,4CH INT 21H CODES ENDS END START 运行: BCD1 DB 01H,02H,03H,04H,05H,06H,07H,88H BCD2 DB 11H,12H,13H,14H,15H,16H,17H,18H 结果如下:DS:2000H为首地址的连续八个字节单元中 实验: P121,第 15题 设从 2000H 为首地址的内存中,存放着 10个带符号的字节数据,试编写找出其中最大的数,并存 入 2000H 单元中的程序。 【实验原理】 首先把十个带符号数放在要求的的存储单元中,然后再进行比较,有符号数的比较用 JL,JC,JNG,等指令,首先设计一个最小带符号数 80H作为比较初值,用 2000H 单元中的数分别与其它进行比较,若大于则把该单元的数存入 2000H 单元,否则不予处理。 对于该题,我采用的是字符串指令,由于是隐含寻址,把 2000H中的数作为字符串源操作数,其它进行一次循环则依次放入 AL中,注意的是当 CX为 10时, DL=80H。 【 程序框图】 【程序源代码】 DATASEGMENT ORG 2000H;数据存放在 2000H 开始的单元 9 / 13 BCD DB 10H,28H,49H,78H,0A4H,0B3H,93H,29H,45H,02H DATAENDS CODESEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATAMOV DS,AX MOV SI,2000H;地址指针指向单元首地址 MOV CX,10 MOV DL,80H;设置最小符号数 L1: LODSB CMP AL,DL;比较带符号数 JNG L2 ;大则跳转 L2 MOV DL,AL;DL 指向内容小则交换 L2: LOOP L1 MOV DS:2000H,DL;最大数存放在 2000H单元 MOV AH,4CH INT 21H CODE ENDS END START 运行: BCD DB 10H,28H,49H,78H,0A4H,0B3H,93H,29H,45H,02H 结果为 78H 实验: P195,第 6题 试编制一程序,用乘法指令实现 32位二进制数与 16位二进制数相乘。 【实验原理】 首先把被乘数第八位和高八位分别与乘数相乘,高八位乘得结果左移 16位与第八位乘得结果相加即为结果。 【程序框图】 微机原理实验报告 实验二 10 / 13 班 级: 2016级信息工程班姓 名: 学 号: 序 号: 评阅分数: 微机实验二 一、实验目的 1、熟悉 80X86基本指令集。 2、掌握汇编语言源程序的编写。 3、掌握结构化程序设计三大结构的程序设计。 4、掌握汇编程序的动态调试。 二、开发环境 未来汇编、 debug 三、实验题目 1、编程将以 $结束的字符串中的小写字母改为大写字母。 已知数据段的定义: data segmentorg 2000h str1 db Aedc123!*sdeDIO71$ count equ$-str1org 3000h str2 db count dupdata ends 画流程图 代码: data segmentorg 2000h str1 db Aedc123!*sdeDIO71$ count equ $-str1org 3000h str2 db count dupdata ends STACK SEGMENT PARA STACK STACK DB 100 DUP STACK ENDS CODESEGMENT 11 / 13 ASSUME CS:CODE,DS:DATA START PROC FARPUSH DSMOV AX,0PUSH AX MOV AX,DATAMOV DS,AX LEA SI,str1;取 str1 首地址 LEA DI,str2;取 str2首地址 MOV CX,count AA: MOV AL,SI CMP AL,61H ;判断是否为小写字母 JB next CMP AL,7AHJA next SUB AL,20H ;将小写字母转换为大写 MOV DI, AL ;将非小写字母放入 str2 中 next: MOV DI, ALINC SIINC DILOOP AARET START ENDP CODEENDS END START 结果: debug调试:修改 str1字符串的值,运行看结果。 结果: 问题: 1.未注意到 LOOP循环的结束条件是 CX为 0,故设计时应该用 MOVE CX, COUNT 这样的语句,执行一次自减一,直到 CX为 0 不执行循环。 12 / 13 循环中 出现问题,应该把 INC SI 和 INC DI 放在循环中比较语句后 3.比较后直接写的 next 语句,忘记还要执行一个 MOV DI, AL,从而导致输出一直为 0. 2、有一个字节型数组,求最大值、最小值和平均值:1)作为无符号数, 2)作为带符号。 已知数据段的定义: data segmentorg 2000h num db 12h,95h,0f1h,0c2h,82h,2h,10h,34hcount db$-num org 3000h res1 db 3 dup ;store unsigned org 4000h res2db3 dup ;store signeddata ends 代码: data seg

温馨提示

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

评论

0/150

提交评论