北京理工大学微机原理实验报告
微机原理实验报告册(3篇)
第1篇一、实验目的1. 理解和掌握微机的基本组成和工作原理;2. 熟悉微机硬件设备和实验仪器的使用方法;3. 提高动手实践能力,培养解决实际问题的能力;4. 深入理解微机原理课程内容,为后续课程学习奠定基础。
二、实验内容1. 微机系统认识实验2. 微机硬件组成实验3. 微机指令系统实验4. 微机寻址方式实验5. 微机程序设计实验6. 微机接口技术实验三、实验仪器与设备1. 微机原理实验箱2. 示波器3. 数字万用表4. 计算机一台5. 实验指导书四、实验步骤与内容1. 微机系统认识实验(1)观察实验箱的结构,了解各个模块的功能;(2)熟悉实验箱的电源、复位、运行等按钮的使用方法;(3)学习微机系统的工作流程,包括加电、复位、启动等过程;(4)观察微机系统启动后的运行状态,了解各个模块的协同工作。
2. 微机硬件组成实验(1)观察实验箱的CPU、内存、I/O接口等硬件模块;(2)学习CPU的内部结构,包括寄存器、控制单元、运算单元等;(3)学习内存的存储原理,了解ROM、RAM等存储器的特点;(4)学习I/O接口的工作原理,了解中断、DMA等传输方式。
3. 微机指令系统实验(1)学习微机指令系统的基本格式,包括操作码、地址码等;(2)掌握微机指令系统的寻址方式,包括立即寻址、直接寻址、间接寻址等;(3)编写简单的汇编语言程序,实现加、减、乘、除等运算;(4)学习微机中断处理过程,了解中断向量表、中断服务程序等概念。
4. 微机寻址方式实验(1)学习微机寻址方式的基本概念,包括直接寻址、间接寻址、寄存器寻址等;(2)编写程序,实现不同寻址方式下的数据访问;(3)观察不同寻址方式对程序执行速度的影响。
5. 微机程序设计实验(1)学习汇编语言程序设计的基本方法,包括数据定义、指令编写、程序结构等;(2)编写简单的程序,实现数据交换、排序等操作;(3)学习微机程序的调试方法,包括单步执行、断点设置等。
6. 微机接口技术实验(1)学习微机接口技术的基本概念,包括并行接口、串行接口等;(2)观察实验箱中的并行接口、串行接口等模块,了解其工作原理;(3)编写程序,实现数据在并行接口、串行接口之间的传输;(4)学习微机中断处理在接口技术中的应用。
微机原理的实验报告
一、实验目的1. 理解微机的基本组成和各部件的功能;2. 掌握微机的工作原理和指令系统;3. 熟悉汇编语言程序设计的基本方法;4. 提高动手能力和实际操作技能。
二、实验内容1. 微机系统组成实验(1)实验目的:了解微机的基本组成和各部件的功能。
(2)实验内容:观察并记录微机系统的各个部件,如CPU、内存、硬盘、主板等,并了解它们的功能。
(3)实验步骤:①观察微机系统各个部件的连接情况;②了解各个部件的功能和作用;③分析微机系统的整体结构。
2. 微机工作原理实验(1)实验目的:掌握微机的工作原理。
(2)实验内容:观察并记录微机工作过程中的各个阶段,如指令的取指、译码、执行等。
(3)实验步骤:①观察微机工作过程中的各个阶段;②了解各个阶段的功能和作用;③分析微机工作原理。
3. 指令系统实验(1)实验目的:熟悉汇编语言指令系统。
(2)实验内容:学习汇编语言的基本指令,如数据传送指令、算术运算指令、逻辑运算指令等。
(3)实验步骤:①学习汇编语言的基本指令;②编写简单的汇编语言程序,实现数据传送、算术运算、逻辑运算等功能;③调试程序,观察程序运行结果。
4. 汇编语言程序设计实验(1)实验目的:提高汇编语言程序设计能力。
(2)实验内容:编写一个汇编语言程序,实现以下功能:①计算两个数的和;②判断一个数是否为偶数;③输出程序运行结果。
(3)实验步骤:①编写汇编语言程序,实现上述功能;②调试程序,观察程序运行结果;③分析程序运行过程,确保程序正确性。
三、实验结果与分析1. 微机系统组成实验:通过观察和记录微机系统的各个部件,了解了微机的基本组成和各部件的功能。
2. 微机工作原理实验:通过观察微机工作过程中的各个阶段,掌握了微机的工作原理。
3. 指令系统实验:通过学习汇编语言的基本指令,熟悉了汇编语言指令系统。
4. 汇编语言程序设计实验:通过编写汇编语言程序,提高了汇编语言程序设计能力。
四、实验心得通过本次微机原理实验,我对微机的基本组成、工作原理和指令系统有了更深入的了解。
北京理工大学微机原理实验报告二
本科实验报告实验名称:利用中断方式设计数字时钟课程名称:实验时间:任课教师:实验地点:实验教师:实验类型:□原理验证■综合设计□自主创新学生姓名:学号/班级:组号:学院:同组搭档:专业:成绩:实验二利用中断方式设计数字时钟一、实验目的1、掌握PC 机中断处理系统的基本原理。
2、熟悉定时/计数器8254 工作原理及其编程方法。
3、利用实验板上的8254 定时器为中断源发中断申请,中断请求用IRQ3(系统总线区的IRQ)。
4、熟悉数码管显示原理,掌握数码管显示接口技术。
5、学习数字时钟原理,实现数字时钟。
6、掌握中断控制器8259 管理。
二、实验内容与步骤接线:三、实验原理1、PC 机用户可使用的硬件中断只有可屏蔽中断,由8259 中断控制器管理。
中断控制器用于接收外部的中断请求信号,经过优先级判别等处理后向CPU 发出可屏蔽中断请求。
IBMPC、PC/XT 机内有一片8259 中断控制器对外可以提供8 个中断源:中断源中断类型号中断功能IRQ0 08H 时钟IRQ1 09H 键盘IRQ2 0AH 保留IRQ3 0BH 串行口2IRQ4 0CH 串行口1IRQ5 0DH 硬盘IRQ6 0EH 软盘IRQ7 0FH 并行打印机8 个中断源的中断请求信号线IRQ0~IRQ7 在主机的62 线ISA 总线插座中可以引出,系统已设定中断请求信号为“边沿触发”,普通结束方式。
对于PC/AT 及286 以上微机内又扩展了一片8259 中断控制,IRQ2 用于两片8259 之间级连,对外可以提供16 个中断源:中断源中断类型号中断功能IRQ8 070H 实时时钟IRQ9 071H 用户中断IRQ10 072H 保留IRQ11 073H 保留IRQ12 074H 保留IRQ13 075H 协处理器IRQ14 076H 硬盘IRQ15 077H 保留实验系统总线区的IRQ 接到了3 号中断IRQ3 上,即进行中断实验时,所用中断类型号为0BH。
北理工 自动化 微机原理实验一
微型计算机原理与接口技术软件实验报告(一)班级:学号:姓名:2012.11一、实验题目1、学习并掌握IDE86集成开发环境的使用;2、参考书例4-8,以单步形式观察程序的执行过程;3、修改该程序,求出10个数中的最大值和最小值。
以单步形式观察如何求出最大值、最小值。
二、实验目的1、熟悉IDE86集成开发环境的使用。
2、通过编程、上机调试,进一步理解汇编语言的设计思路与执行过程。
3、锻炼动手编程,独立思考的能力。
三、实验内容3.1题目2设计思路及流程图3.1.1设计思路为实现求和的功能,首先将十个数存入内存中,设定AX为计算结果存储单元,CX为计数器,随后建立循环,将每个数依次加到AX上,直至CX=O,最后将AX中存储的结果移动到SUM存储单元中,结束程序。
3.1.2程序流程图题目2的程序流程图如图1所示:图1题目2的程序流程图3.2题目3设计思路及流程图3.2.1设计思路为实现求取最大值最小值的功能,首先将十个数存入内存中,设定CX为计数器,将第一个数分别存入到MAX与M1N储存单元中,随后建立循环,将每个数依次与MAX(MIN)相比较,如果有大于(小于)MAX(MIN)中的,移入相应存储单元,直至CX=0。
最后将MAX和MIN中存储的数据打印在屏幕上,返回DoS系统,结束程序。
3.2.2程序流程图题目3的程序流程图如图2所示:图2题目3的程序流程图4.1题目2源程序DATA SEGMENT ;定义数据段TAB1E DB12H,23H,34h,45h,56h ;10个加数DB67H,78H z89H z9AH z0FDHSUM DW?DATA ENDSCODE SEGMENT ;定义代码段ASSUMECS:CoDE,DS:DATA,ES:DATASTART: MOVAX z DATAMOVDS,AX ;初始化DSMOVES,AX ;初始化ES1EASUAB1E ;SI指向TAB1EMOVCX,10 ;循环计数器XORAX z AX ;AX为中间结果NEXT: ADDA1z[SI] ;把一个数加到A1中ADCAH z O ;若有进位,则加到AH中INCSI ;指向下一个数1OOPNEXT ;若未加完,继续循环MOVSUM Z AX ;若结束,存结果于SUMH1T ;结束CODE ENDS ;代码段结束END START ;汇编结束DATA SEGMENT ;定义数据段TAB1E DB12H,23H,34h,45h,56h;十个待比较数DB67H,78H,89H,9AH,0FDHMAX DB?MIN DB?A DB,MaxOS ;屏幕提示字符串B DBoDH,0AH「Min:,SDATA ENDSCODE SEGMENT;定义代码段ASSUMECS:CoDE,DS:DATA,ES:DATASTART: MOVAX z DATAMOVDS,A× ;初始化DSMOVES,AX ;初始化ES1EASIJAB1E ;SI指向TAB1EMOVCX z IO ;循环计数器XORAX z AX ;清空AXC1D ;清方向标志DF1ODSB ;A1存入一个8位数MOVMAX z A1 ;将该数送MAXMOVMIN Z A1 ;将该数送MINDECCX ;计数器减一NEXT: 1ODSB ;取下一个数CMPA1Z MAX ;与MAX比较JA1ARGERCMPA1Z MIN JBSMA11ERJMPGOON1ARGER:M0VMAX,A1JMPGOONSM A11ER:MOVMIN z A1GO ON:1OOPNEXT1EADX,AMOVAH z09HINT21HMOVA1z MAXCA11DISP1AY1EADX,BMOVAH z09HINT21HMOVA1z MINCA11DISP1AYMOVAH z4CHINT21H DISP1AYPROCPUSHBXPUSHCX ;若大于转1ARGER;否则与MIN比较;若小于转SMA11ER ;否则转GOON;A1的值存入MAX;转到GOON;A1的值存入MIN;CX-1,若CXWO转NEXT ;获取A的首地址;调用字符串显示功能;MAX值存入A1;调用显示子程序;获取B的首地址;调用字符串显示功能;MIN值存入A1;调用显示子程序;调用返回DoS功能;十六进制显示子程序;保持BX内容;保持CX内容MOVBH z A1MOV CH,2 ;设置循环计数器ROT: MOV C1,4 ;移位次数RO1 BX z C1MOV A1B1AND A1z OFH ;清空A1高四位ADD A1,30H ;0-9转换ASCII码CMP A1z3AHJ1 PRITADD A1,7H ;A-F转换ASCII码PRIT: MOV D1,A1MOV AH,2 ;调用字符显不功能INT 21HDEC CH ;计数器-1JNZ ROT ;CHW0,继续循环POPCX 丁恢复CX内容POPBX 丁恢复BX内容RET ;返回D ISP1AYENDPCODEENDS ;代码段结束END START ;结束五、实验运行结果5.1题目2运行结果前五个数运算结束后寄存器状态:图3 其中ax 值为图4前五个数计算后AX 的值故此时前五个数之和为0104Ho 前八个数运算结束后寄存器状态:×0000图6前八个数计算后AX 的值故此时前八个数之和为026CH o 全部运算结束后,ax 的值为:图7计算结束后AX 的值故十个数的和为0403H 。
北理工微机原理实验3
北理工微机原理实验3实验三串行通信一、实验目的1、了解串行通信的基本原理。
2、掌握串行接口芯片8251 的工作原理和编程方法。
2、掌握串行接口芯片8250 的工作原理和编程方法。
3、掌握对串行接口芯片的初始化编程;学会串行通信半双工和全双工的编程技巧。
二、实验内容及步骤1、利用PC 机系统的串行通信接口实现与实验系统的双机通信,PC 机的串行通信接口的端口地址为3F8H,并画出三线连接,七线连线通信接口的连线图,接口为标准RS――232插座。
图1 七线连线通信接口的连线图2、按图1连接好电路,其中8254计数器用于产生8251 的发送和接收时钟,TXD 和RXD 连在九针接口处。
3、接线。
CLK0 /8254 接1M时钟CLK /8251 接1M时钟GATE0 /8254 接+5V0UT0 /8254 接TX/RXCLK /8251 CS /8254 接Y0 /IO 地址CS /8251 接Y7 /IO 地址RXD /8251 接TXD /九针接口TXD /8251 接RXD /九针接口4、8254 计数器的计数初值=时钟频率/(波特率×波特率因子),这里的时钟频率接1MHz,波特率若选1200,波特率因子若选16,则计数器初值为52。
5、设串行通信的波特率为1200、偶校验、数据位为7 位、一位停止位,利用查询方式实现单工通信。
要求发送方将任一文件传送到收方,收方收到后将源程序写入磁盘。
分别编写收方和发方的通信程序。
6、上述参数不变,用中断方式实现半双工通信,编写程序。
7、PC 机寄存器的端口地址如下表所示。
PC 机寄存器的端口地址PC 机寄存器的端口地址I/O 端口IN/OUT 3F8* OUT 3F8* IN 3F8** OUT 3F9** OUT 3F9* OUT 3FB OUT 3FA IN 3FC OUT 3FD IN 3FE IN * 线路控制寄存器第七位DLAB=0 ** 线路控制寄存器第七位DLAB=1 波特率和除数因子对照表因子值波特率波特率单位HZ 单位HZ MSB LSB 50 09 00 1800 75 06 00 2000 110 04 17 2400 03 59 3600 150 03 00 4800 600 00 C0 9600 1200 00 60 寄存器名称发送保持寄存器接收数据寄存器波特率因子波特率因子(MSB) 中断允许寄存器线路控制寄存器中断标志寄存器MODEM 控制寄存器线路状态寄存器MODEM 状态寄存器因子值MSB 00 00 00 00 00 00 LSB 40 3A 30 20 18 0C 三、程序实现对于整个程序的实现,可以分为几个步骤。
北理工微机原理实验三--使用8251A的串行接口应用实验
北理工微机原理实验三--使用8251A的串行接口应用实验本科实验报告实验名称:实验三使用8251A的串行接口应用实验课程名称:计算机原理与应用实验实验时间:任课教师:实验地点:实验教师:实验类型:□原理验证■综合设计□自主创新学生姓名:学号/班级:组号:学院:同组搭档:专业:成绩:1. 实验目的1) 掌握串行通信原理及半双工和全双工的编程方法;2) 掌握用8251A接口芯片实现微机间的同步和异步通信;3) 掌握8251A芯片与微机的接口技术和编程方法。
2. 实验原理和内容8251A是一种可编程的同步/异步串行通信接口芯片,具有独立的接收器和发送器,能实现单工、半双工、双工通信。
1) 8251A内部结构8251A通过引脚D0~D7和系统数据总线直接接口,用于和CPU传递命令、数据、状态信息。
读写控制逻辑用来接收CPU的控制信号、控制数据传送方向。
CPU对8251A的读写操作控制表如表3-4所示。
表3-4 CPU对8251A的读写操作控制表2) 8251A的方式控制字和命令控制字方式控制字确定8251A的通信方式(同步/异步)、校验方式(奇校/偶校/不校)、字符长度及波特率等,格式如图3-10所示。
命令控制字使8251A处于规定的状态以准备收发数据,格式如图3-11所示。
方式控制字和命令控制字无独立的端口地址,8251A 根据写入的次序来区分。
CPU对8251A初始化时先写方式控制字,后写命令控制字。
3) 状态寄存器8251状态寄存器用于寄存8251A的状态信息,供CPU查询,定义如图3-12所示。
TXRDY位:当数据缓冲器空时置位,而TXRDY引脚只有当条件( 数据缓冲器空•/CTS•TXE)成立时才置位。
溢出错误:CPU没读走前一个字符,下一个字符又接收到,称为溢出错误。
帧错误:在字符结尾没检测到停止位,称为帧错误。
4) PC机寄存器的端口地址其中:线路控制寄存器第七位:DLAB=0;线路控制寄存器第七位:DLAB=1。
北京理工大学ZHZH
北京理工大学微机原理与接口技术实验报告实验内容:微机原理综合设计组别:姓名:班级:学号:一、实验目的1.利用所学知识设计简单计算器。
二、实验内容利用8255控制试验箱上的键盘,实现2位十进制数以内的加减乘除运算,将运算结果通过8250发送到上位机。
键盘为10个数字键0-9,六个功能键 +、-、*、/、=、复位。
三、实验方法1.设计思路⑴.根据题目要求首先应该实现试验箱上的键盘扫描功能,计算按下键码的键值(键值检测中应该加入相应的延时程序以达到精确扫描的目的)。
再进行加减乘除算数运算,通过8250芯片发送到上位机,利用串口小助手实现算数。
2.实验程序流程图。
四、实验源程序(必要的文字注释)初始化按键闭合? 开始按键扫描保存键值 进行算数运算按键恢复? 输出结果结束NN Y Y1.简单计算器程序。
ASSUME CS:CODECODE SEGMENTORG 100HSTART: MOV DX,04A6H ;控制寄存器地址MOV AX,90H ;设置为A口输入,;B口输出,C输出OUT DX,AX ;8255初始化MOV AX,0MOV DS,AXAAA: MOV DI,2000HMOV CX,10CCC1: MOV DS:[DI],0INC DILOOP CCC1MOV DI,2000HMOV DX,486HMOV AX,80HOUT DX,AXMOV DX,480HMOV AX,12OUT DX,AXMOV DX,482HMOV AX,0OUT DX,AXMOV DX,486HMOV AX,7OUT DX,AXMOV DX,482HMOV AX,0OUT DX,AXMOV DX,48AHIN AX,DXMOV DX,480HIN AX,DXCHECK0: ;CHECK0检测是否有健被按下MOV AX,OOH ;C口的PC0、PC1、PC2作为行选择线MOV DX,04A4H ;C口地址OUT DX,AX; 写入C口内容00H,即令所有行为低电平MOV DX,04A0H ;A口地址IN AX,DX ;读入A口的内容CMP AL,OFFH ;判定是否有列线为低电平JE CHECK0 ;没有,无闭合键,则循环等待MOV CX,05FFH ;延迟常数,可以修改来改变延时时间DELAY:LOOP DELAY ;有,则延迟清除抖动,当cx=0时则停止该循环行扫描键盘和列扫描键盘,确定被按键的行值和列值MOV CL,3 ;行数MOV AH,0MOV AL,0FBH ; 0fbh=1111 1011BCONTIN: PUSH AL ;将ax的内容(0fbh)入栈保存MOV DX,04A4H ;C口地址OUT DX,AL ;写入C口内容0fbh=1111 1011B,即将第三行置为低电平MOV DX,04A0H ;A口地址IN AL,DX ;读入A口的内容MOV AH,AL ;将A口的内容送入ahCMP GH,0FFH ;判断是否有列线为低电平JNE NEXT ;比较结果不等于0则转移,即有列线为低电平POP AX ; 比较结果等于0,即没有列线为低电平,(ax)=00fbhROR AL,1 ; fbh(1111 1011B)循环右移,(al)=1111 1101检测下一行LOOP CONTIN ;循环扫描下一行,确定行JMP CHECK0 ;若所有行都没有被按下,则返回check0重新检测NEXT: MOV CH,CL ;保存行值至chMOV CL,7 ;列值从0开始编号0-7BEGIN0: SHL AH,1 ; ah为A口的内容,逻辑左移1位,末位补0 JNC GOON ;无进位则转移,即可确定列LOOP BEGIN0 ;继续循环,确定列JMP CHECK0GOON: ;计算显示码在discode中的位置:(行数-1)*8 +列值MOV BL,CL ;保存列值至BLDEC CH ;行数减1MOV CL,3SHL CH,CL ;左移三位即相当于减1之后的行数*8ADD DL,CH ;确定显示码在discode表中的偏移量,即(行数-1)*8+列值MOV BH,0MOV CX,BX ;显示码在discode表中的偏移量送CXDISPLAY: ;显示输出MOV SI, OFFSET DISCODEADD SI,CX ;显示码偏移地址MOV DX,040AH ;C口地址MOV AL,0FHOUT DX,AL ;写入C口内容,使位控(LED1)有效MOV AL,CS:[SI] ; 取被按键的显示字形码送入al MOV DX,04A2H;B口地址OUT DX,AL ; 将显示字形码送B口输出显示NOPNOPCMP AL,3fhJNZ L1MOV AH,0JMP NEXT1L1: ;定义键码子程序L1CMP AL,06hJNZ L2MOV AH,1JMP NEXT1L2: ;定义键码子程序L2CMP AL,5bhJNZ L3MOV AH,2JMP NEXT1L3: ;定义键码子程序L3CMP AL,4fhJNZ L4MOV AH,3JMP NEXT1L4: ;定义键码子程序L4CMP AL,66hJNZ L5MOV AH,4JMP NEXT1L5: ;定义键码子程序L5CMP AL,6dhJNZ L6MOV AH,5JMP NEXT1L6: ;定义键码子程序L6CMP AL,7dhJNZ L7MOV AH,6JMP NEXT1L7:CMP AL,07hJNZ L8MOV AH,7JMP NEXT1L8: ;定义键码子程序L8 CMP AL,7fhJNZ L9JMP NEXT1L9:CMP AL,6fh ;AL与6FH比较JNZ L10 ;若ZF=0则存入L10中MOV AH,9JMP NEXT1L10:CMP AL,77hJNZ L11MOV AH,10JMP NEXT1L11:CMP AL,7chJNZ L12MOV AH,11JMP NEXT1L12:CMP AL,39hJNZ L13MOV AH,12JMP NEXT1L13:CMP AL,5ehJNZ L14MOV AH,13JMP NEXT1L14:CMP AL,79hJNZ L15JMP NEXT1L15:CMP AL,71hJMP AAANEXT1:MOV DS:[DI],AHINC DICMP DI,2004HCALL DELAY1JE ACLTJMP CHECK0ACLT:MOV AX,0MOV DX,0MOV DI,2000H ;将2000H送入DIMOV AL,DS:[DI] ;将DS:[DI]的地址送入AL MOV DL,DS:[DI+2]MOV BL,DS:[DI+1]CMP BL,10JNZ K1ADD AL,DLPUSH AX ;将AX压栈JMP LOOP1 ;转移到LOOP1地址K1:CMP BL,11JNZ K2SUB AL,DLPUSH AXJMP LOOP1K2:CMP BL,12JNZ K3MUL DLPUSH AXJMP LOOP1K3:CMP BL,13JNZ LOOP1DIV DLPUSH AXJMP LOOP1PPP:LOOP1:CALL DELAY1CALL SENDJMP KKKDELAY1: ;延时子程序MOV CX,0FFFFHLLL:LOOP LLLRETSEND:PUSH AXMOV DX,48AHSEND1:IN AX,DXJNZ SEND2JMP SEND1SEND2:POP AXMOV DX,480HOUT DX,ALRETKKK:JMP CHECK0DISCODE DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h;(0-7);定义各键码DB 7fh,6fh,77h,7ch,39h,5eh,79h,71h ;(8-F)DB 01h,02h,04h,08h,10h,20h,40h,80h;(abcdefgh);显示字形码表CODE ENDS ;代码段结束END START ;程序段结束五.实验结果简单计算器1位十进制实验结果截图。
北理工微机原理与接口技术之8255,8253实验报告
北理工微机原理与接口技术之8255,8253实验报告微机原理与接口技术实验报告———8253可编程定时器8255并行接口实验实验一8255并行接口实验一,实验内容8255的A口作为输入口,与逻辑电平开关相连。
8255的B口作为输出口,与发光二极管相连。
编写程序,使得逻辑电平开关的变化在发光二极管上显示出来。
二,实验目的(1)掌握8255的工作原理。
(2)掌握编写8255并行接口初始化及编程实现的方法。
三,实验仪器微机实验教学系统实验箱、8086CPU模块四,实验步骤(1)连线8255的PA0—PA7分别与逻辑电平开关的K1—K8相连?PB0—PB7分别与发光二极管电路的LED1—LED8相连?CS0与8255的片选CS8255相连其它线路均已连好具体如图所示:(2)编辑程序,编译链接后,单步运行,调试程序。
(3)调试通过后,全速运行,观察实验结果。
(4)撰写实验报告。
五,实验源程序如下CODE SEGMENT PUBLICASSUME CS:CODEORG 100HSTART:MOV DX,04A6HMOV AX,90H ;写8255的控制字,A组工作在方式0,A口输入,C口高4位输出,B组工作在方式0,B口及C口的低4位均工作在输出OUT DX,AXSTART1:MOV DX,04A0HIN AX,DX ;读取A口数据MOV DX,04A2HOUT DX,AX ;将从A口读取的数据从B口输出,控制LED灯JMP START1CODE ENDSEND START六,实验现象LED灯低电平有效。
当某一开关拨到低电平时,对应的LED灯点亮。
当某一开关拨到高电平时,对应的LED灯熄灭七,思考题1.将片选线接到CS1—CS7;重新编写程序。
CS0对应地址是04A0---O4AF, CS1对应地址是04B0---O4BF.现将片选线接到CS1,重新编程:CODE SEGMENT PUBLICASSUME CS:CODEORG 100HSTART:MOV DX,04B6H ;CS1对应的地址MOV AX,90HOUT DX,AXSTART1:MOV DX,04B0HIN AX,DXMOV DX,04B2HOUT DX,AXJMP START1CODE ENDSEND START实验现象:如同片选线接到CS02.交换A B接线,A口输出、B口输入;重新编写程序。
微机原理实验报告
微机原理实验报告1.实验的目的是学习8086/8088指令系统中一些基本指令的用法以及程序的基本方法。
2.熟悉在PC上建立,组装,连接,调试和运行8086.8088汇编语言程序的全过程。
2,在实验中,四个数字a,B,C和D分别以单字节压缩BCD代码的形式存储在num存储器的四个单元中。
然后,计算(a + b)-(c + D)并以Y1单位放置,结果显示在屏幕上。
在调试中,不断更改a,B,C,D的内容并查看结果。
本文提供了几组数据:1. A = 09,B = 06,C = 04,d = 07 2. A = 38,B = 41,C = 29,d = 343. A = 70,B = 23,C = 42,d = 414. A = 63,B = 73,C = 62,d = 50 3.实验调试的过程1.使用DOS工具掩码和链接生成EXE文件2.使用调试工具编译断点调试程序。
1.用-U命令反汇编程序②设置断点1以检查a + B的结果是否正确。
结果存储在A1中23h,结果正确。
③设置断点2以检查C + D的结果是否正确。
如果将结果存储在Al中30h,则结果正确。
④运行程序后,使用-D命令检查最终结果是否正确。
数据段的第五个地址是计算结果,该结果正确。
⑤使用-E特别是在(a + b)-(c + D)中,如果前者小于后者,则结果可能不正确。
这时,我们应该判断借位标志是否为负。
如果为负,请使用(c + D)-(a + b)并在结果中输出一个负号。
3.成功调试并检查结果直接在DOS命令add.exe 下运行或在调试中使用-G命令运行程序,并查看程序结果。
4.实验程序和DSEG程序框图。
定义数据段num DB 13h,27h,11h,12h;定义A,B,C,D Y1 DB?DSEG结束;数据段结束sseg段标准堆栈;定义堆栈DB 20 dup(?)sseg结束cseg段假定CS:cseg,ds:DSEG,SS:SSEG开始:MOV AX,DSEG MOV DS,AX MOV AX,SSEG MOV SS,AX MOV AL,[NUM];复制A至AL添加AL,[NUM + 1]; A + B DAA MOV CL,AL;保存AL MOV AL,[NUM + 2];复制C至AL 添加AL,[NUM + 3]; C + D DAA SUB CL,AL;(A + B)-(C + D)MOV AL,CL DAS MOV [NUM + 4],AL MOV BL,AL;保存AL和AL,0F0H; R SHIFT MOV CL,4 SHR AL,CL ADD AL,30H;获取ASCII MOV DL,AL MOV AH,02h int 21h mov Al,BL;恢复Al和Al,0Fh;取低4位,添加Al,30h mov DL,Al mov ah,02h int 21h mov ax,4c00h int 21h cseg结束起始端5。
北京理工大学微机原理实验报告一
本科实验报告实验名称:基于并行接口的键盘控制实验一基于并行接口的键盘控制一、实验目的1、掌握简单并行接口(8255)的工作原理及使用方法。
2、了解小键盘的工作原理,学会设计小键盘的接口技术。
3、利用8255并行接口芯片作为小键盘的接口电路,掌握它们之间的线路连接。
4、程序实现实验系统上的4×4键盘输入。
二、实验内容与步骤1、接线:PA0-PA3 /8255 接行0-行3 /4×4键盘PB0-PB3 /8255 接列0-列3 /4×4键盘CS /8255 接YI/IO地址2、编程:实现在按下小键盘上的任意键后,在微机屏幕上显示相应的字符。
输入输出关系如下:小键盘显示小键盘显示0 -- 0 8 -- 81 -- 1 9 -- 92 -- 2 A -- A3 -- 3 B -- B4 -- 4 C -- C5 -- 5 D -- D6 -- 6 E -- E7 -- 7 F -- F三、实验原理1、熟悉8255A-5芯片工作方式的设置(1)基本控制字基本控制字的格式如下:各位含义如下:D7:设定工作方式标识,1有效。
D6、D5:A组方式选择:00--方式0 01--方式1 1X—方式2D4:端口A功能(1=输入,0=输出)D3:端口C高四位功能(1=输入,0=输出)(2)端口C置位/复位控制字端口C置位/复位控制字如下:各位含义如下:D7:位置0位置1标识,0有效。
D6、D5、D4:不用,可人任意值。
D3、D2、D1:端口C的每位选择,由111—000分别表示第7位—第0位。
D0:位置1/置0,1=置1,0=置0.2、键盘阵列由8255芯片控制,并将行列连接到8255芯片的A口、B口,还需要连接8255芯片的片选到YI/IO地址(288H~28FH),以使键盘阵列由8255芯片控制。
其线路连接图如下:3、编程方法对于片选信号根据设置的YI/IO地址来具体连接相应的输出端口。
北理工微机原理实验3
北理工微机原理实验3实验三串行通信一、实验目的1、了解串行通信的基本原理。
2、掌握串行接口芯片8251 的工作原理和编程方法。
2、掌握串行接口芯片8250 的工作原理和编程方法。
3、掌握对串行接口芯片的初始化编程;学会串行通信半双工和全双工的编程技巧。
二、实验内容及步骤1、利用PC 机系统的串行通信接口实现与实验系统的双机通信,PC 机的串行通信接口的端口地址为3F8H,并画出三线连接,七线连线通信接口的连线图,接口为标准RS�D�D232(25 芯)插座。
图1 七线连线通信接口的连线图2、按图1连接好电路,其中8254计数器用于产生8251 的发送和接收时钟,TXD 和RXD 连在九针接口处。
3、接线。
CLK0 /8254 接 1M时钟CLK /8251 接 1M时钟(系统已连接,不用连接) GATE0/8254 接 +5V 0UT0 /8254 接 TX/RXCLK /8251 CS /8254 接 Y0 /IO 地址CS /8251 接 Y7 /IO 地址RXD /8251 接 TXD /九针接口TXD /8251 接 RXD /九针接口4、8254 计数器的计数初值=时钟频率/(波特率×波特率因子),这里的时钟频率接1MHz,波特率若选1200,波特率因子若选16,则计数器初值为52。
5、设串行通信的波特率为 1200、偶校验、数据位为7 位、一位停止位,利用查询方式实现单工通信。
要求发送方将任一文件传送到收方,收方收到后将源程序写入磁盘。
分别编写收方和发方的通信程序。
6、上述参数不变,用中断方式实现半双工通信,编写程序。
7、PC 机寄存器的端口地址如下表所示。
PC 机寄存器的端口地址 PC 机寄存器的端口地址 I/O 端口 IN/OUT 3F8* OUT 3F8* IN 3F8** OUT 3F9** OUT 3F9* OUT 3FB OUT 3FA IN 3FC OUT 3FD IN 3FE IN * 线路控制寄存器第七位 DLAB=0 ** 线路控制寄存器第七位 DLAB=1波特率和除数因子对照表因子值波特率波特率单位 HZ 单位 HZ MSB LSB 50 09 00 1800 75 06 00 2000 110 04 17 2400 134.5 03 59 3600 150 03 00 4800 600 00 C0 9600 1200 00 60 寄存器名称发送保持寄存器接收数据寄存器波特率因子(LSB)波特率因子 (MSB) 中断允许寄存器线路控制寄存器中断标志寄存器 MODEM 控制寄存器线路状态寄存器 MODEM 状态寄存器因子值 MSB 00 00 00 00 00 00 LSB 40 3A 30 20 18 0C 三、程序实现对于整个程序的实现,可以分为几个步骤。
北京理工大学-微机原理综合设计实验-数字电压表A
北京理工大学-微机原理综合设计实验-数字电压表A————————————————————————————————作者:————————————————————————————————日期:微机原理与接口技术实验报告实验内容:微机原理综合设计实验数字电压表A组别:31姓名:12届黄大师班级:xxxxxxxxx 学号:xxxxxxxxxx一、实验目的1、掌握8255的使用及编程原理。
2、掌握8253定时/计数器的编程原理。
3、掌握ADC0809的使用方法。
4、掌握共阴极七段数码管的工作原理。
5、加强多芯片的综合运用。
6、加强汇编语言程序设计。
二、实验内容利用ADC0809采集电位器的电压值,将采集的电压值通过8255显示在七段数码管上,显示数据保留小数点后2位,利用8253定时数据更新,每隔0.5秒数据更新一次。
扩展要求:具有设置报警阈值功能,当超过阈值时,点亮一个LED灯。
三、实验方法1、设计思路先利用ADC0809采集电位器的电压值,此时的电压值在AL中,但其真正的值应该为5/255*AL伏。
根据要求保留小数点后2位,利用程序先将AL乘以500/255,约为196,即将电压值扩大100倍,先除以100,得到最高位,再依次除以10,得到小数点后第一,二位,分别存在连续的三个存储单元中。
定义0-9共阴极七段数码管的显示码数据段,再通过8255 依次选通3个数码管,通过8255依次送入刚才所得的三个值的显示码。
利用8253工作在方式二,每隔0.5秒产生一低脉冲送到8255,利用程序检验,每隔0.5秒才调用电压采集程序。
对于扩展要求可利用74LS273实现。
实验简单主要原理图如下:将可变电位器AN0与ADC0809的ADIN0相连,将CS2与ADC0809的片选CS0809端相连,将ADC0809的EOC 与8255的PC0相连,CS0与8253的片选CS8253相连,CLK3(750KHz )与8253CLK0相连,8253的OUT0与8253CLK2相连,OUT2与8255的PA0相连,CS1与8255的片选CS8255相连,PC4-PC6与LED1-LED3依次相连,PB0-PB7依次与LED-A —LED-DP 相连。
微机实验报告范文
微机实验报告范文微机原理实验报告2022-11一、实验题目IDE86集成开发环境的学习和运用二、实验目的:学习并掌握IDE86集成开发环境的使用包括编辑、编译、链接、调试与运行等步骤编辑:源程序的输入、修改。
编译:常见编译出现的语法错误的修改。
连接:形成可执行文件运行:运行、断点设置、单步运行、单步跟踪;观察寄存器、标志寄存器值;观察数据存储器中的数据;三、实验内容1.参考书例4-8,P165(第3版161页)以单步形式观察程序的执行过程输入该程序,编译、连接、运行以单步形式观察程序的执行过程(1)执行每条指令后,寄存器A某、C某、SI及标志位CF的值。
(2)分别查看前5个数值和、前8个数之和。
(3)查看以TABLE开始的存储器单元中的内容。
基本思路:设计循环程序,通过指针不断指向下一个元素来实现10个数值的相加2.改该程序,求出10个数中的最大值和最小值。
以单步形式观察如何求出最大值、最小值。
3.求1到100的累加和,并用十进制形式将结果显示在屏幕上。
要求实现数据显示,并返回DOS状态。
基本思路:先循环求出累加之后的结果,然后将结果转换为10进制即任何一个用十六进制表示的二进制数,其除以10后的余数即是它对应十进制数的最低位,且一定在0—9之间;用得到的余数加上30H,就得到了最低位对应的ASCII码。
4.将存储器中的十个字节型十六进制有符号数按从小到大的顺序排序并按十六进制显示出来56H、0ffH、78H、82H、12H、0、95H、58H、0bcH、34H基本思路:首先这是一个多重循环程序,先使第一个数与下一个数比较,若小于则使其位置保持不变,大于则将小数放低地址,大数放高地址;完成一次排序工作后,在通过第二重的9次循环,即可实现对10个有符号数的大小排序,且有符号数的比较跳转用到JL和JG四、实验源程序(必要的文字注释)1.求十个数的和的程序:DATASEGMENT;定义数据段TABLEDB12H,23H,34H,45H,56H;10个加数DB67H,78H,89H,9AH,0FDHSUMDWDATAENDS;CODESEGMENT;定义代码段ASSUMECS:CODE,DS:DATA,ES:DATASTART:MOVA某,DATAMOVDS,A某;初始化DSMOVES,A某;初始化ESLEASI,TABLE;SI指向TABLEMOVC某,10;循环计数器某ORA某,A某;A某为中间结果NE某T: ADDAL,[SI];把第一个数加到AL中ADCAH,0;若有进位,则加到AH中INCSI;指向下一个数LOOPNE某T;若未加完,继续循环MOVSUM,A某;若结束,存结果于SUMMOVAH,4CH;结束,返回到DOSINT21HCODEENDS;代码段结束ENDSTART;汇编结束,起始运行地址为START主界面编译连接调试2.修改后的程序:求最大值和最小值源程序:DATASEGMENT;定义数据段TABLEDB12H,23H,34H,45H,56HDB67H,78H,89H,9AH,0FDHMA某DWMINDWDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATASTART:MOVA某,DATAMOVDS,A某MOVES,A某LEASI,TABLEMOVC某,10某ORA某,A某CLDLODSBMOVMA某,A某MOVMIN,A某DECC某NE某T:LODSBCMPA某,MA某JGLARGERCMPA某,MINJLSMALLJMPGOONLARGER:MOVMA某,A某JMPGOONSMALL:MOVMIN,A某GOON:LOOPNE某TMOVAH,4CHINT21HCODEENDSENDSTART编译;初始化DS;初始化ES;SI指向TABLE;循环计数器;使A某清零;清方向标志DF;取一个8位无符号数给AL;第一个数赋值给最大值;第一个数赋值给最小值;取下一个8位无符号数;与MA某单元内容进行比较;若大于则转LARGER;否则再与MIN单元内容进行比较;若小于MIN的内容则转SMALL;否则就转至GOON;A某赋值给MA某;A某赋值给MIN;C某-1,若C某!=0,则转NE某T;调用返回DOS功能;返回DOS五、实验运行结果1.十个数的累加和Sum=403H2.求最大最小值MA某=0FDHMIN=12H3.累加和SUM=50504.排序0H,12H,56H,58H,78H,82H,95H,0BCH,34H,0FFH六、流程图开始输入数据以及计数器C某,SUMC某+1SUM=SUM+INPUTYC某<10N结束开始定义C某,SUM,B某开始输入数据以及计数器CL,CH,A某YMA某[SI]NMIN=[SI]++C某YC某<10结束开始输入数据以及计数器内循环CL和外循环CHCL=1,CH=10CL++YNCL结束NCH--CH<0NY七、实验中遇到的问题及解决方法1.进行实验时,在输入数据的过程中,由于马虎大意导致一两个字母输入错误,结果程序反复调试依旧不对,解决方法是通过设置断点进行排查,最终找到实验的错误之处,并顺利改正。
北京理工大学微机原理实验报告四
本科实验报告实验名称:A/D和D/A转换课程名称:实验时间:任课教师:实验地点:实验教师:实验类型:□原理验证■综合设计□自主创新学生姓名:学号/班级:组号:学院:同组搭档:专业:成绩:实验四A/D和D/A转换一、实验目的1、了解A/D转换的基本原理,掌握ADC0809的使用方法。
2、了解D/A转换的基本原理,掌握DAC0832芯片的使用方法。
3、了解直流电机控制的基本方法。
二、实验内容与步骤(一)A/D转换部分1、接线:2、实验电路原理图下图通过实验台左下角电位器RW1输出0~5V直流电压送入ADC0809通道0(IN0),利用debug的输出命令启动A/D转换器,输入命令读取转换结果,验证输入电压与转换后数字的关系。
启动IN0开始转换:Out298H读取转换结果:In298H3、用万用表测量CLOCK、ADD-C、ADD-B、ADD-A在实验系统上如何联系的。
4、编程按中断方式采集IN0输入的电压,在屏幕上显示出转换后的数据(用16进制数)。
5、考虑如果采用IN7输入的电压,启动开始转换和读取转换结果的地址应该是多少。
6、按查询方式采集IN0输入的电压,软硬件如何实现。
编程方案1、ADC0809的IN0口地址为298H。
2、IN0单极性输入电压与转换后数字的关系为:其中Ui为输入电压,UREF为参考电压,这里的参考电压为+5V电源。
3、一次A/D转换的程序可以为MOV DX,PortOUT DX,AL;启动转换;延时IN AL,DX;读取转换结果放在AL中(二)D/A转换部分1、接线:CS/0832接Y2/IO地址用万用表测量WR2和XFER在实验系统上如何联系的。
2、实验电路原理如图2,DAC0832采用单缓冲方式,具有单双极性输出端(图中的Ua、Ub),利用debug输出命令(Out290数据)输出数据给DAC0832,用万用表测量单极性输出端Ua及双极性输出端Ub的电压,验证数字与电压之间的线性关系。
(完整word版)微机原理完整实验报告+程序
实验题目8253定时/计数器实验 一、 实验目的与要求: 1. 学会8253芯片和微机接口原理和方法。
2. 掌握8253定时器/计数器的工作方式和编程原理。
二、 实验内容: 1、实验原理 本实验原理图如图 1所示,8253A 的A0、A1接系统地址总线 A0、A1,故8253A 本实验通道2 有四个端口地址,如端口地址表 1所示。
8253A 的片选地址为 48H~ 4FH 。
因此, 仪中的8253A 四个端口地址为 48H 、49H 、4AH 、4BH ,分别对应通道 0、通道1、 和控制字。
采用8253A 通道0,工作在方式3(方波发生器方式),输入时钟CLK0为 输出OUTO 要求为1KHZ 的方波,并要求用接在 GATE0引脚上的导线是接地("0" 甩空("1"电平)来观察GATE 对计数器的控制作用,用示波器观察输出波形。
2、实验线路连接 (1) 8253A 芯片的CLK0引出插孔连分频输出插孔 (2) 8253A 的 GATE0 接+5V 。
实验步骤 (1) 按图1连好实验线路(2) 运行实验程序 1. 按“调试”按钮2. 选“窗口” “进入示波器窗口” ,然后最小化3. 按“运行按钮”4.将模拟示波器窗口打开,选择“串行口 2”,再按 Ctrl + F2按钮即可看到波形 显示“ 8253-1 ”用示波器测量8253A 的OUT2输出插孔,方波输出,幅值0〜4V 三、实验代码: 1MHZ ,电平)或 3、 CODE SEGMENT ASSUME CS:CODE TCONTRO EQU 004BH TCON2 EQU 004AH CONT PORT EQU 00DFH DATA PORT EQU 00DEH DATA1 EQU 0500H START: JMP TCONT TCONT: CALL FORMATCALL LEDDIS P MOV DX,TCONTRO1MHZ 。
北理(bit)微机原理上机软件实验报告
微机原理软件编程实验报告班级:学号:姓名:一、实验题目1、IDE86集成开发环境的学习和运用2、编写程序求出10个数中的最大值和最小值,并以单步形式观察如何求出最大值、最小值。
3、求1到100 的累加和,并用十进制形式将结果显示在屏幕上。
要求实现数据显示,并返回DOS状态。
4、将存储器中的十个字节型十六进制有符号数按从小到大的顺序排序并按十六进制显示出来。
(56H、0ffH、78H、82H、12H、0、95H、58H、0bcH、34H)二、实验目的1、学习并掌握IDE86集成开发环境的使用包括编辑、编译、链接、调试与运行等步骤编辑:源程序的输入、修改。
编译:常见编译出现的语法错误的修改。
连接:形成可执行文件。
运行:运行、断点设置、单步运行、单步跟踪;观察寄存器、标志寄存器值;观察数据存储器中的数据。
2、完成所有题目,提高编程能力,加深对理论课的理解。
三、实验内容1、文字叙述设计思路1.1编写程序求出10个数中的最大值和最小值由于一共有十个数,所以求其最大数或者最小数需要比较9次。
从数据段的段首开取数,先取两个数进行比较,比较完后取其中的最大数或者最小数放入数据段的第二位中。
再取第三位数与第二位数比较,如此循环,比较9次后在数据段最末位的就是我们需要的数。
1.2求1到100 的累加和,并用十进制形式将结果显示在屏幕上求和部分:1~100一共有100个数,所以需要做100次加法。
做加法要有两个数,第一个数是第i位的数值,第二个数是i-1位以及之前所有数的和,所以这两个数必须分别存放在两个寄存器里,并且两个数相加之后的所得的值,必须放在存放“和”的寄存器中,另外一个寄存器每做完一次加法自加1。
显示部分:我们所求得的最终数值在内存中是以16进制数存放的,但是由于结果只是一个数,我们可以把它的每一位所对应的ASCII码按照一定的顺序存放到一个数据段中,再以字符串形式直接输出。
1.3将存储器中的十个字节型十六进制有符号数按从小到大的顺序排序并按十六进制显示出来比较部分:题目一共给了我们10个数,如果要进行排序的话可以先把十个数中最大的数选出来,放到数据段的最后一个位置,接着再选出次大的数放到数据段的倒数第二位,如此循环到最后便可成功将所给的十个数排序好。
北理工微机原理与接口技术之AD,8250实验报告
微机原理与接口技术实验报告———8250串行接口ADC0809A/D转换器实验四8250串行接口实验一,实验目的(1)熟悉串行通信的一般原理和8250的工作原理。
(2)了解RS—232串行接口标准及连接方法。
(3)掌握8250芯片的编程方法。
二,实验设备微机实验教学系统实验箱,8086CPU模块三、实验内容在实验箱与PC机(上位机)之间实现串行通信,主机每下传一个字符,若通讯正确,则下位机返回一个同样的字符;若不正确,则无返回值或者返回值不同。
四,实验步骤(1)无须接线,内部已经连好。
8250的端口地址为0480H起始的偶地址单元。
(2)编写下位机程序,编译链接后,全速运行。
(3)退出“8086实验系统”,运行“串口调试助手”上位机程序。
(4)将“串口调试助手”程序输入和输出都调整为16进制格式,发送一个16进制数,观察返回的是否是同样一个16进制数。
五,实验程序程序流程图:实验源程序:CODE SEGMENT PUBLICASSUME CS:CODEORG 100HSTART:MOV DX,486H ;写通信线路控制寄存器D7=1MOV AX,80HOUT DX,AXMOV DX,480H ;设置波特率低字节MOV AX,12OUT DX,AXMOV DX,482H ;设置波特率高字节MOV AX,0OUT DX,AXMOV DX,486HMOV AX,3OUT DX,AXMOV DX,482H ;中断允许寄存器MOV AX,0OUT DX,AXMOV DX,48AH ;清除原始错误状态IN AX,DXMOV DX,480H ;清除原始状态IN AX,DXLOOP1:CALL RECVCALL SENDJMP LOOP1 ;循环发送SEND: ; 发送子函数PUSH AXMOV DX,48AHIN AX,DXTEST AX,20HJNZ SEND2 ;发送数据寄存器空,则跳转至SEND2,发送字符POP AX ;发送数据寄存器不是空,不可发送JMP SENDSEND2:POP AXMOV DX,480H ;指向发送接收数据寄存器,发送字符OUT DX,AXRETRECV: ;接收子函数MOV DX,48AHIN AX,DXTEST AX,1JZ RECV ;未接到到一个字符,则跳转至RECV,若接收到字符,则顺序往下执行。
北理工微机原理硬件实验课件
实验程序
MOV DX,482H CODE SEGMENT PUBLIC MOV AX,0 ASSUME CS:CODE OUT DX,AX ORG 100H MOV DX,48AH START: IN AX,DX MOV DX,486H MOV DX,480H 线路状态寄存器 MOV AX,80H IN AX,DX OUT DX,AX LOOP1: MOV DX,480H CALL RECV 设置波特率为:9600 MOV AX,12 CALL SEND JMP LOOP1 OUT DX,AX 9600——12 SEND: MOV DX,482H 4800——24 PUSH AX MOV AX,0 2400——48 MOV DX,48AH 1200——96 OUT DX,AX IN AX,DX MOV DX,486H TEST AX,20H MOV AX,3 JNZ SEND2 OUT DX,AX POP AX JMP SEND SEND2: POP AX MOV DX,480H OUT DX,AX RET RECV: MOV DX,48AH IN AX,DX TEST AX,1 没有接收到 JZ RECV MOV DX,480H 接收到字符 IN AX,DX RET CODE ENDS 指向接收缓冲器 , END START 接收一个字符
8250串行接口实验
8250的内部结构
RBR RSR
THR TSR
实验目的
1.熟悉串行通信的一般原理和8250的工作原理。 2.了解RS—232串行接口标准及连接方法。 3.掌握8250芯片的编程方法。
实验设备
微机实验教学系统实验箱、8086CPU模块。
实验内容
在实验箱与PC机(上位机)之间 实现串行通信,主机每下传一个字符, 若通讯正确,则下位机返回一个同样 的字符;若不正确,则无返回值或者 返回值不同。
北京理工大学微机原理实验报告
微机原理与接口技术实验报告实验内容:汇编语言程序设计实验组别:12姓名:班级:学号:一、实验目的1、熟悉IDE86集成开发环境的使用。
2、通过编程、上机调试,进一步理解汇编语言的设计思路与执行过程。
3、熟悉DOS命令调用,以达到输入输出、返回DOS系统等目的。
4、掌握利用汇编实现求和与求最值的方法。
5、掌握利用汇编实现数制转换的方法。
6、巩固理论知识,锻炼动手编程,独立思考的能力。
二、实验内容(具体内容)1、求从TABLE开始的10个无符号字节数的和,并将结果放在SUM字单元中。
并查看前5个,前8个数之和以及各寄存器和内存的状态。
2、在1的基础上修改程序,求出10个数中的最大值和最小值,最后将最大最小值分别赋给MAX及MIN。
3、求1到 100 的累加和,并用十进制形式将结果显示在屏幕上。
要求实现数据显示,并返回DOS状态。
三、实验方法1、设计思路(1)实验1的设计思路:先将10个要相加的数存在以TABLE为首的10个连续的存储单元中,然后利用循环结构依次取出数值放在AL中并累加,若有进位则加到AH中直至循环10次累加结束,将累加的结果放在SUM中并返回DOS状态。
(2)实验2的设计思路:先将10个要比较的数放在以TABLE为首的10个连续的存储单元中。
将第一个数首先赋给AL和AH(分别存储相对最小和最大值)在利用LOOP循环结构,依次和下面的数进行比较,每次把相对的最大值与最小值存储到AH和AL中直至循环9次比较结束,将AH和AL里面的最大值与最小值赋给MAX和MIN,返回DOS状态(3)实验3的设计思路:先在内存中定义COUNT=100,表示1-100求和,若相求1-n的和并显示只需COUNT的值为n即可,同时定义一块以DNUM为首地址的数据区用于存储累加和的十进制数对应的ASCII码。
先利用AX和LOOP求出1-COUNT的累加和存在AX中;在进行数值转化,AX 依次除10取余数保存,将16进制数转化为10进制ASCII码值并存在DUNM中。
北京理工大学微机原理硬件三次实验综合报告
实验二 8255 并行接口实验
实验内容 8255 的 A 口作为输入口,与逻辑电平开关相连。8255 的 B 口作为输出口,与发 光二极管相连。编写程序,使得逻辑电平开关的变化在发光二极管上显示出来。 二,实验目的 (1)掌握 8255 的工作原理。 (2)掌握编写 8255 并行接口初始化及编程实现的方法。 三,实验仪器 微机实验教学系统实验箱、8086CPU 模块 四,实验步骤 连线 8255 的 PA0—PA7 分别与逻辑电平开关的 K1—K8 相连 PB0—PB7 分别与发光二极管电路的 LED1—LED8 相连 CS0 与 8255 的片选 CS8255 相连 其它线路均已连好 具体如图所示:
ENDSTART 实验现象:CS273 的 00 与 LED0 相连,01 与 LED1 相连,02 与 LED2 相连,依次 下去, 直至 07 与 LED7 相连。 每按单脉冲发生器一次产生一次中断申请, 由于 IR0 的优先级比 IR1 低,故先响应 IR1,后响应 IR0,观察到低 4 位的 LED 灯先点亮或 熄灭,高 4 位的 LED 灯后点亮或熄灭。 实验心得 实验让我对 8259A 的内部寄存器的功能有了更深的认识,掌握了 8259A 的初始 化步骤及其工作方式的选择, 以及中断服务程序的编写。 使用实验箱和编译软件, 使我们在编程和动手操作方面都有了很大的提高,软硬件的结合,使我们更加透 彻的理解了所学知识。
DDBUS
Vcc
DD0 DD1 DD2 DD3 DD4 DD5 DD6 DD7 A1 3 Vcc 7 4LS3 2 Vcc IOR D IOWR INT INTA
11 10 9 8 7 6 5 4 27 1 3 2 16 15 D6 D7 A0 CS RD WR SP/EN INT INTA 8 25 9
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微机原理与接口技术实验报告实验内容:汇编语言程序设计实验组别:12姓名:班级:学号:一、实验目的1、熟悉IDE86集成开发环境的使用。
2、通过编程、上机调试,进一步理解汇编语言的设计思路与执行过程。
3、熟悉DOS命令调用,以达到输入输出、返回DOS系统等目的。
4、掌握利用汇编实现求和与求最值的方法。
5、掌握利用汇编实现数制转换的方法。
6、巩固理论知识,锻炼动手编程,独立思考的能力。
二、实验内容(具体内容)1、求从TABLE开始的10个无符号字节数的和,并将结果放在SUM字单元中。
并查看前5个,前8个数之和以及各寄存器和内存的状态。
2、在1的基础上修改程序,求出10个数中的最大值和最小值,最后将最大最小值分别赋给MAX及MIN。
3、求1到 100 的累加和,并用十进制形式将结果显示在屏幕上。
要求实现数据显示,并返回DOS状态。
三、实验方法1、设计思路(1)实验1的设计思路:先将10个要相加的数存在以TABLE为首的10个连续的存储单元中,然后利用循环结构依次取出数值放在AL中并累加,若有进位则加到AH中直至循环10次累加结束,将累加的结果放在SUM中并返回DOS状态。
(2)实验2的设计思路:先将10个要比较的数放在以TABLE为首的10个连续的存储单元中。
将第一个数首先赋给AL和AH(分别存储相对最小和最大值)在利用LOOP循环结构,依次和下面的数进行比较,每次把相对的最大值与最小值存储到AH和AL中直至循环9次比较结束,将AH和AL里面的最大值与最小值赋给MAX和MIN,返回DOS状态(3)实验3的设计思路:先在内存中定义COUNT=100,表示1-100求和,若相求1-n的和并显示只需COUNT的值为n即可,同时定义一块以DNUM为首地址的数据区用于存储累加和的十进制数对应的ASCII码。
先利用AX和LOOP求出1-COUNT的累加和存在AX中;在进行数值转化,AX 依次除10取余数保存,将16进制数转化为10进制ASCII码值并存在DUNM中。
最后在屏幕上显示并返回DOS状态。
2程序流程图实验一、二和三的流程图分别如图1、图2和图3所示四、实验源程序(必要的文字注释)实验一:;求10个无符号字节数的和,结果存在SUM中DATA SEGMENT ;定义数据段TABLE DB 12H,23H,34H,45H,56H ;10个加数DB 67H,78H,89H,9AH,0FDHSUM DW ?DATA ENDS;CODE SEGMENT ;定义代码段ASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AX ;初始化DSLEA SI,TABLE ;SI指向TABLEMOV CX,10 ;循环次数为10XOR AX,AX ;AX清零NEXT: ADD AL,[SI] ;把一个数加到AX中去ADC AH,0 ;若有进位AH加1INC SI ;SI指向下一个数LOOP NEXT ;循环相加MOV SUM,AX ;循环结束将结果保存到SUM中MOV AH,4CH ;返回DOS状态INT 21HCODE ENDS ;代码段结束END START ;汇编结束,起始地址为START实验二:;求出10个数中的最大值和最小值。
DATA SEGMENTTABLE1 DB 12H,23H,34H,45H,56H ;十个数据DB 67H,78H,89H,9AH,0FDHMIN DB ? ;最小值MAX DB ? ;最大值DATA ENDS;CODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATASTART: MOV AX,DATAMOV DS,AX ;数据段段地址送入DSMOV ES,AX ;附加数据段段地址送入ESLEA SI,TABLE1MOV CX,9 ;比较次数,一共9次MOV AL,[SI] ;把第一个数送入AL,把最小数存在AL中 MOV AH,[SI] ;把第一个数送入AH,把最大数存在AH中NEXT: INC SICMP AL,[SI] ;比较AL中的数和下一个数的大小JC GOON ;如果AL中的数小转到GOON,继续执行MOV AL,[SI] ;如果AL中的数大,将小的数存入AL GOON: CMP AH,[SI] ;比较AH中的数和下一个数的大小JNC CONTU ;如果AH中的数大转到CONTU,去下一次循环MOV AH,[SI] ;如果AH中的数大,将大的数存入AH CONTU: LOOP NEXT ;继续循环直至全部比较完毕MOV MAX,AH ;将最大的数存入MAX中MOV MIN,AL ;将最小的数存入MIN中MOV AH,4CH ;返回DOS状态INT 21HCODE ENDS ;代码段结束END START ;汇编结束,起始地址为START实验三:;1-100求和并用十进制在品目上显示,程序结束返回DOS状态DATA SEGMENT ;数据段SUM DW 0 ;1-100的和DNUM DB '0000',0DH,0AH,'$' ;存储1-100和的十进制ASCII码字符串COUNT DW 100 ;求和的数目100个,当需要求1-n的数字和时只;需修改100为所需要的n即可DATA ENDS;SSEG SEGMENT ;堆栈段DW 32 DUP(?)SSEG ENDS;CODE SEGMENT ;代码段ASSUME CS:CODE,DS:DATA,ES:DATASTART:MOV AX,DATAMOV DS,AX ;数据段的段地址送入DSMOV AX,SSEGMOV SS,AX ;堆栈段的段地址送入SSCALL SUMM ;求1-100的数据和,结果存入AX中MOV SUM,AX ;和存入SUM中CALL DISP ;将十六进制数转化相应的十进制ASCII码值,;存在DNUM中LEA DX,DNUM ;使用DOS功能调用,在屏幕上显示MOV AH,9INT 21HMOV AH,4CH ;返回DOS状态INT 21HSUMM PROC ;求和子程序XOR AX,AX ;AX清零MOV CX,COUNT ;求和的数目,这里COUNT=100CALCU:ADD AX,CXLOOP CALCURET ;求和结束返回,求和值存在AX中SUMM ENDP;DISP PROC ;转化为十进制ACSII码值子程序MOV CX,4 ;要显示的数为四位十进制数MOV BX,10GOON: LEA SI,DNUM ;显示的ASCII码字符串的偏移地址给SI XOR DX,DX ;DX清零,DX、AX存放1-100的和,AX为低位 DIV BX ;每次除10,余数为显示数值,ADD SI,CX ;SI指向存入数据的下一位ADD [SI-1],DL ;要显示的十进制数转为相应的ASCII码 LOOP GOON ;循环4次将要显示的十进制数由低到高转化 RETDISP ENDP;CODE ENDSEND START五、实验结果1、实验一:10个无符号字节数加和(1)、TABLE中前5个数的和为0104H,结果如图4所示,存储在AX中。
图4 TABLE中前5个数字和(2)、TABLE中前8个数的和为026CH,结果如图5所示,存储在AX中。
图5 TABLE中前8个数字和(3)、程序运行完结果结果如图6所示,十个值的和为0403H,存储在AX中。
图6 TABLE中前10个数字和2、实验二:10个数求最大最小值为了保证程序的正确性,在这里我用三组输入测试,分别为:12H,23H,34H,45H,56H,67H,78H,89H,9AH,0FDH (最大右边,最小左边)12H,9H,34H,45H,56H,67H,0FFH,89H,9AH,0FDH (最大最小在中间)0FFH,9H,34H,45H,56H,67H,0FEH,89H,9AH,2H (最大左边,最小右边) 实验结果分别如图7,图8,图9所示。
图7 第一组输入运行结果图8 第二组输入运行结果图9 第三组输入运行结果3、实验三:1-100求和并显示实验三的结果分别如图10,图11,图12所示,其中图10为1-100的累加和保存在AX中,结果为13BAH,图11为转化为相应的十进制ASCII码保存在DS:0002-DS:0005,图12为窗口显示。
图10 1-100的累加和图11 1-100和的相应ASCII码图12 1-100和的屏幕显示六、实验中遇到的问题及解决方法1、在做实验一时由于对软件不是很熟悉,做起来不是很顺手,而且在编译时软件自身有一个控制参数/zi,当时在做实验时,由于不小心在后面多打上了一个字母,造成无法编译的情况,经过老师的指点才发现去除后能够正常编译了。
2、在做实验二时,刚开始我是用冒泡排序法先排序,这样第一个和最后一个就是最大最小值,但这样由于排序的过程中需要不断交换数字使得效率很低,后来改成了使用AL和AH存放最大最小值,不去排序大大减少了排序的次数。
3、在做实验二时,开始循环次数我设成了10,导致出来的结果总也不对,程序错误。
后来我使用单步调试和查看寄存器值相结合的方法发现多比较了一次,将CX的初值改成9结果正确。
4、在做实验三时,由于有了前两个实验的基础,在累加部分没有问题,结果为13BAH,但在16进制转化为10进制时,单步调试每到除10的地方总出现“divide by 0”的错误提示。
经一步一步仔细检查发现原来我设BL=10,这样做除法时用AX除BL结果保存在AL中,而1-100相加为5050,第一次除10后变成了505,超出了AL的范围造成错误。
使用DX,AX两个寄存器保存被除数,设BX为10,这样商保存在AX里,不会超出范围,结果正确。
七、心得体会与建议通过这次上机实验,我了解与熟悉了IDE86集成开发环境,以及调试和使用的方法。
与此同时,我对于汇编语言中的编写习惯、语法要求等有了更深的认识。
此外通过此次实验让我看到,知识温故性的重要,对于排序和比较大二时就学过了,当时也做了相应的练习但是从这次实验来看,还是没有做到尽善尽美,有很多的漏洞需要补。
实验三让我看到在编程的过程中不仅要注意语法语句问题,还要注意为数据分配的大小是否够用。
对于语法问题可以通过编译检查出来,而这种错误编译时检查不出来的,很难发现,只能一步一步的慢慢来看,很浪费时间,所以在编写程序的过程中一定要尽量注意一些。