微机原理实验---中断控制实验
- 格式:doc
- 大小:207.50 KB
- 文档页数:8
计算机接⼝与微机原理-第12周-中断控制器8259A-c可编程中断控制器8259Ap IBM PC/XT的中断指令p DOS系统功能调⽤p BIOS中断类型p8259A的中断级联p IBM PC/AT的中断级联p8259A的应⽤举例p8259A的编程⽅法中⼭⼤学信息科学与技术学院陈任IBM PC/XT中的中断指令(1) 8086/8088系统中与中断有关的专⽤指令。
1.INT n 软件中断指令(Interrupt)-软件中断指令,也称为软中断指令,其中n为中断类型号,其值必须在0~255的范围内。
-可在编程时安排在程序中的任何位置上,因此也被称为陷阱中断。
-CPU执⾏INT n指令时,先把标志寄存器的内容推⼊堆栈,再把当前断点的段基地址CS和偏移地址IP⼊栈保护,并清除中断标志IF和单步标志TF。
-然后将中断类型号n乘以4,找到中断服务程序的⼊⼝地址表的表头地址,从中断⽮量表中获得中断服务程序的⼊⼝地址,将其置⼊CS和IP寄存器,CPU就⾃动转到相应的中断服务程序去执⾏。
-原则上讲,利⽤INT n指令能以软件的⽅法调⽤所有256个中断的服务程序,尽管其中有些中断实际上是由硬件触发的。
因此可以利⽤这条指令来调试各种中断服务程序。
-例如,可⽤INT 0指令让CPU执⾏除法出错中断服务程序,可⽤INT 2指令执⾏NMI中断服务程序,⽽不必在NMI引脚上加外部信号。
IBM PC/XT中的中断指令(2)1. INT n 软件中断指令(Interrupt)2. INTO 溢出中断指令(Interrupt On Overflow)-当带符号数进⾏算术运算时,如果溢出标志OF置1,则可由溢出中断指令INTO产⽣类型为4的中断,若OF清零,则INTO指令不产⽣中断,CPU继续执⾏后续程序。
-在带符号数进⾏加减法运算之后,必须安排⼀条INTO指令,⼀旦溢出就能及时向CPU提出中断请求,CPU响应后可作出相应的处理,如显⽰出错信息,使运算结果⽆效等。
实验二8259A中断控制器应用实验分析报告一、填写补充实验1-2中以下两段代码,并简述其意义:第1段:IN AL,21H_ AND AL, 0F7H _____________OUT 21H,ALIN AL,0A1H__AND AL, 0FBH______________OUT 0A1H,AL第2段:MOV AL,20HOUT 0A0H,ALOUT 20H,AL二、简述实验1-2的实验现象,分析解释其原因;结合本实验,简述中断嵌套和中断优先级的意义以及正确形成中断嵌套的基本要求。
答:实验1现象:按下一次单脉冲,显示一次字符,十次中断后停机,不再显示字符串实验2现象:分别按下两个单脉冲显示一串3和一串10,在3未显示完全时按下显示10的脉冲键,可发生中断,相反则不能发生中断,需等待一串10显示完后再显示一行3。
原因:IRQ10的中断级别高于IRQ3,所以可以在3还没有执行完时中断IRQ3,中断原程序执行IRQ10 。
中断嵌套的意义:为了让CPU及时响应更高级别的中断请求。
中断优先级的意义: CPU只能响应一个中断请求,在中断源较多的情况下,当有多个中断源同时发起中断请求时,CPU需要对多个中断源的优先级进行判断,判断出优先级最高的中断请求进行响应。
中断嵌套要求是:被中断程序的优先级低于请求程序中断的优先级。
三、抄写实验1-2中要求填写的“显示‘10’和‘空格’”的代码段NEXT10_1:MOV AX,SEG MESS10MOV DS,AXMOV DX,OFFSET MESS10MOV AH,09INT 21H ;使用INT21 – 09H实现字符串的输出‘10’CALL DELAY1 ;调用延时子程序LOOP NEXT10_1MOV DX,0DH ;调用DOS的中断功能,回车MOV AH,02HINT 21HMOV DX,0AH ;调用DOS的中断功能,换行MOV AH,02HINT 21H四、用文字简述或流程图方式,说明实验1-3中“以查询方式检测处理多中断请求”的过程。
微机原理上机实验报告实验八:8086中断实验实验十二:步进电机实验微机原理上机实验(八)实验报告实验八:8086中断实验一、实验目的1、了解8086内部响应中断的机制;掌握中断向量的作用。
2、利用实验仪上单脉冲、74HC244电路,不使用8259,实现一个中断实例。
3、复习本节实验内容,可尝试自行编写程序,做好实验准备工作,填写实验报告。
二、实验内容1、编制程序:拨动单脉冲开关,“”送给8086的INTR,触发中断;8086通过INTA信号,读取中断向量;8086计数中断次数,显示于F5区的数码管上注意:给INTR高电平信号,8086就会相应中断,所以实验开始前,保证单脉冲开关给8086低电平;中断程序中,加一个较长的延时程序,在中断结束前,有时间拨动单脉冲开关,恢复给8086低电平。
三、实验原理图本实验,通过F4区的8个拨动开关,给74HC244设定中断向量;本实验的中断向量是08H,即IN7-IN0位数据是00001000。
同学可以自定义中断向量,实验程序中处理中断向量部分程序作相应调整四、实验步骤1、连线说明:B4区:CS244、BLE ——C1区:GNDB4区:RD(IO区)——A3区:INTAA3区:INTR ——B2区:单脉冲B4区:JP57(D0..D7) ——A3区:JP41B4区:JP52(IN0..7) ——F4区:JP27(1..8)D3区:CS、A0、A1 ——A3区:CS1、A0、A1D3区:PC0、PC1 ——F5区:KL1、KL2D3区:JP20、B、C ——F5区:A、B、C2、运行程序3、实验开始前,保证单脉冲开关给8086低电平;运行程序;向下拨动开关(触发中断),立即向上拨动开关,产生一个“”,观察结果,数码管上显示的次数与拨动开关次数是否对应。
五、实验代码EXTRN InitKeyDisplay:NEAR, Display8:NEAR_STACK SEGMENT STACKDW 100 DUP(?)_STACK ENDS_DATA SEGMENT WORD PUBLIC 'DATA'BUFFER DB 8 DUP(?)Counter DB ?ReDisplayFlag DB 0_DATA ENDSCODE SEGMENTSTART PROC NEARASSUME CS:CODE, DS:_DATA, SS:_STACKMOV AX,_DATAMOV DS,AXMOV ES,AXNOPCALL InitKeyDisplay ;对键盘、数码管控制器8255初始化CALL WriIntverMOV Counter,0 ;中断次数MOV ReDisplayFlag,1 ;需要显示STI ;开中断START1: LEA SI,BufferCALL Display8CMP ReDisplayFlag,0JZ START1CALL LedDisplayMOV ReDisplayFlag,0JMP START1WriIntver PROC NEARPUSH ESMOV AX,0MOV ES,AXMOV DI,20HLEA AX,INT_0STOSWMOV AX,CSSTOSWPOP ESRETWriIntver ENDPLedDisplay PROC NEARMOV AL,CounterMOV AH,ALAND AL,0FHMOV Buffer,ALAND AH,0F0HROR AH,4MOV Buffer + 1,AHMOV Buffer + 2,10H ;高六位不需要显示MOV Buffer + 3,10HMOV Buffer + 4,10HMOV Buffer + 5,10HMOV Buffer + 6,10HMOV Buffer + 7,10HRETLedDisplay ENDPINT_0: PUSH DXPUSH AXMOV AL,CounterADD AL,1DAAMOV Counter,ALMOV ReDisplayFlag,1CALL LedDisplayDELAY: PUSH BXPUSH CXPUSH DIPUSH SIMOV CX,20DELAY1: LEA SI,BufferCALL Display8loop DELAY1POP SIPOP DIPOP CXPOP BXPOP AX六、实验思考题1.绘制本实验的详细实验电路图?微机原理上机实验(十二)实验报告实验十二:步进电机实验一、实验目的1、了解步进电机的基本原理,掌握步进电机的转动编程方法2、了解影响电机转速的因素有那些二、实验内容编写程序:使用F5区的键盘控制步进电机的正反转、调节转速,连续转动或转动指定步数;将相应的数据显示在F5区的数码管上。
下面是赠送的几篇网络励志文章需要的便宜可以好好阅读下,不需要的朋友可以下载后编辑删除!!谢谢!!出路出路,走出去才有路“出路出路,走出去才有路。
”这是我妈常说的一句话,每当我面临困难及有畏难情绪的时候,我妈就用这句话来鼓励我。
一定有很多人想说:“这还在北京混个什么劲儿啊!”但他每天都乐呵呵的,就算把快递送错了也乐呵呵的。
某天,他突然递给我一堆其他公司的快递单跟我说:“我开了家快递公司,你看得上我就用我家的吧。
”我有点惊愕,有一种“哎呦喂,张老板好,今天还能三蹦子顺我吗”的感慨。
之后我却很少见他来,我以为是他孩子出生了休假去了。
再然后,我就只能见到单子见不到他了。
某天,我问起他们公司的快递员,小伙子说老板去上海了,在上海开了家新公司。
我很杞人忧天地问他:“那上海的市场不激烈吗?新快递怎么驻足啊!”小伙子嘿嘿一笑说:“我们老板肯定有办法呗!他都过去好几个月了,据说干得很不错呢!”“那老婆孩子呢?孩子不是刚生还很小吗?”“过去了,一起去上海了!”那个瞬间,我回头看了一眼办公室里坐着的各种愁眉苦脸的同事,并且举起手机黑屏幕照了一下我自己的脸,一股“人生已经如此的艰难,有些事情就不要拆穿”的气息冉冉升起。
并不是说都跳槽出去开公司才厉害,在公司瞪着眼睛看屏幕就是没发展,我是想说,只有勇气才能让自己作出改变。
《拒绝平庸》里有一句话:很多时候我们为什么嫉妒别人的成功?正是因为知道做成一件事不容易又不愿意去做,然后又对自己的懒惰和无能产生愤怒,只能靠嫉妒和诋毁来平衡。
其实走出去不一定非要走到什么地方去,而是更强调改变自己不满意的现状。
有人问我那你常说要坚持,天天跑出去怎么坚持?其实要坚持的是一种信仰,而不是一个地方,如果你觉得一个地方让你活得特别难受,工作得特别憋屈,除了吐槽和压抑没别的想法,那就要考虑走出去。
就像歌词里说的:“梦想失败了,那就换一个梦想。
”不能说外面都是大好前程,但肯定你会认识新的人,有新的机会,甚至改头换面重新做人。
微机原理实验实验⼀ MASM For Windows 的使⽤及顺序程序设计⼀、实验⽬的1、熟悉在PC机上建⽴、汇编、连接、调试和运⾏8086汇编语⾔程序的过程。
2、熟悉masm for windows调试环境及DEBUG常⽤命令的使⽤⼆、实验内容1.DEBUG常⽤命令(U、R、D、E、F、T、G、Q)的操作使⽤2.编程实现两个16位⽆符号数的加、减、乘、除运算。
有两个两字节⽆符号数分别放在存储单元A、B起始的缓冲器中,求其和,结果放在A起始的缓冲区并在屏幕上显⽰。
相加若有进位不存⼊存储单元。
三、实验设备PC机⼀台四、实验准备1) 分析题⽬,将程序中的原始数据和最终结果的存取⽅法确定好。
2) 画出流程图。
3) 写出源程序。
4) 对程序中的结果进⾏分析,并准备好上机调试与⽤汇编程序及汇编调试的过程。
五、实验步骤1) 输⼊源程序。
2) 汇编、连接程序,⽣成 .EXE⽂件,执⾏⽂件,检查结果。
六、学⽣实验报告的要求1) 列出源程序,说明程序的基本结构,包括程序中各部分的功能。
2) 说明程序中各部分所⽤的算法。
3) 说明主要符号和所⽤到寄存器的功能。
4) 上机调试过程中遇到的问题是如何解决的。
5) 对调试源程序的结果进⾏分析。
4) 说明标志位CF、SF和OF的意义。
DEBUG的常⽤命令1、R 显⽰或修改寄存器的内容命令格式:-R2、 D 显⽰存储单元的内容命令格式:-D[地址1, 地址2]3、E修改存储单元的内容命令格式:-E[地址1, 地址2]命令格式:-U[地址1, 地址2]5、T单步执⾏命令格式:-T6、G连续执⾏命令格式:-G[=起始地址, 结束地址]A⼩汇编命令格式:-A7、Q退出DEBUG,返回DOS实验⼀源程序 EXAM1-2 .ASMDATA SEGMENTA DB 34H,18H,2 DUP(0),’$’B DB 56H,83HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AXMOV AL,AMOV BL,BADD AL,BLMOV AH,A+1MOV BH, B+1ADC AH, BHMOV A, ALMOV A+1, AHMOV CX, 0004HMOV DI, OFFSET AMOV DX, [ DI]ADD DI,03NEXT: MOV AX, DXAND AX,000FHCMP AL,0AHJB QQQADD AL, 07HMOV [DI], ALDEC DIPUSH CXMOV CL, 04SHR DX, CLPOP CXLOOP NEXTMOV DX, OFFSET AMOV AH, 09HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START执⾏程序EXAM1-2·EXE,屏幕上显⽰结果:9B8A实验⼆分⽀、循环程序设计⼀、实验⽬的1) 掌握分⽀、循环程序的结构。
微机原理实验报告班级:XXXXX姓名:XXXX学号:20XXXXXXXXX大学信息科学与技术学院信息工程系实验四8259A中断控制器实验一、实验目的:1、利用试验箱掌握8259A中断控制器的使用方法。
2、掌握中断的相关知识。
二、实验内容:1、实验连线(微机原理试验箱)⑴连接138译码输入端A.B.C,其中A连A2,B连A3,C连A4,138使能控制输入端G 与总线单元上方的GS相连。
⑵将8259CS插孔与译码单元的Y0相连,中断源IR7与单脉冲单元的SP插孔相连。
⑶用8芯扁平电缆将8259中断控制单元的数据总线插座与数据总线单元任一插座相连。
2、 PC机连接好串口线电源线,打开电源,在电脑中打开intel8088微机实验系统选择串口一和 57600 波特率若出现仿真器没有连接的画面则串口线没有连接好如下图:3、LED环境⑴在“P.”状态下按“0→EV/UN”,装载实验所需的代码程序。
Ph88/he08.asm代码在软件中自带的,打开软件中的he08.asm 点编译(c)点击编译、连接、装载⑵在“P.”状态下在小键盘键入3400,然后按“EXEC”进入实验项目的运行。
这是输入起始地址,对应代码中的 ORG 3400H4、观察运行结果在连续运行方式下,按动 AN 按钮,LED 数码管从最高位开始依次显示“7”显示满后,最高位显示“P.”继续等待中断。
5、终止运行按“暂停图标”或实验箱上的“暂停按钮”,使系统无条件退出该程序的运行返回监控状态。
三、程序流程图和程序代码1、流程图2、代码与注释;-------------------硬件实验八 8259单级中断控制器实验------------------- CODE SEGMENTASSUME CS:CODE,DS:CODE,ES:CODEORG 3400HH8: JMP P8259ZXK EQU 0FFDCHZWK EQU 0FFDDHLED DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90HDB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0DEH,0F3HBUF DB ?,?,?,?,?,?Port0 EQU 0FFE0HPort1 EQU 0FFE1HP8259: CLICALL WP ;初始化显示“P.”MOV AX,OFFSET INT8259MOV BX,003CHMOV [BX],AXMOV BX,003EHMOV AX,0000HMOV [BX],AXCALL FOR8259mov si,0000hSTICON8: CALL DISJMP CON8;------------------------------------ INT8259:cliMOV BX,OFFSET BUFMOV BYTE PTR [BX+SI],07HINC SICMP SI,0007HJZ X59XX59: MOV AL,20HMOV DX,Port0OUT DX,ALmov cx,0050hxxx59: push cxcall dispop cxloop xxx59pop cxmov cx,3438hpush cxSTIIRETX59: MOV SI,0000HCALL WPJMP XX59;==============================FOR8259:MOV AL,13HMOV DX,Port0OUT DX,ALMOV AL,08HMOV DX,Port1OUT DX,ALMOV AL,09HOUT DX,ALMOV AL,7FH ;IRQ7OUT DX,ALRET;---------------------------WP: MOV BUF,11H ;初始化显示“P.”MOV BUF+1,10HMOV BUF+2,10HMOV BUF+3,10HMOV BUF+4,10HMOV BUF+5,10HRET;--------------------------------DIS: MOV CL,20HMOV BX,OFFSET BUFDIS1: MOV AL,[BX]PUSH BXMOV BX,OFFSET LEDXLATPOP BXMOV DX,ZXKOUT DX,ALMOV AL,CLMOV DX,ZWKOUT DX,ALPUSH CXMOV CX,0100HDELAY: LOOP $POP CXCMP CL,01HJZ EXITINC BXSHR CL,1JMP DIS1EXIT: MOV AL,00HMOV DX,ZWKOUT DX,ALRET;--------------------------CODE ENDSEND H8四、调试过程及遇到的问题在“P.”状态下键入 3400,然后按“EXEC”进入实验项目的运行。
实验1 基本操作实验一、实验目的(1)掌握TD- PITC 80X86微机原理及接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。
(2)掌握使用运算指令类编程及调试方法。
(3)掌握运算类指令对各状态标志位的影响及其测试方法。
(4)学习使用软件监视变量的方法。
二、实验设备PC机一台,TD- PITC实验装置一套三、实验内容及步骤通过对样例程序的操作,学会使用在TD- PITC环境下,如何输入汇编语言程序,如何进行汇编语言源程序的汇编、连接、下载和运行;在调试程序的学习过程中,应学会:如何设置断点,如何单步运行程序,如何连续运行程序,怎样查看寄存器的内容,怎样修改寄存器的内容,怎样查看存储器的内容,怎样修改存储器的内容3.1 实验内容一——BCD码转换为二进制实验内容将四个二位十进制数的BCD码存放于3500H起始的内存单元中,将转换的二进制数存入3501H起始的内存单元中,自行绘制流程图并编写程序。
实验步骤:1)运行Wmd86软件,进入Wmd86集成开发环境。
2)根据程序设计使用语言的不同,通过在“设置”下拉列表来选择需要使用的语言。
语言选择后,下次再启动软件,语言环境保持这次的修改不变。
在这里我们选择汇编语言。
3)语言选择后,点击新建来新建一个文档。
默认文件名为Wmd861.4)编写实验程序。
并保存,此时系统会提示输入新的文件名,输完后点击保存。
实验程序清单如下:SSTACK SEGMENT STACKDW 64 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODESTART:XOR AX,AXMOV SI 3500HMOV DI 3510HA1:MOVE AL,[SI]ADD AL,ALMOV BL,ALADD AL,ALADD AL,ALADD AL,BLINC SIADD AL,[SI]MOV [DI],ALINC SIINC DILOOP A1A2:JMP A2CODE ENDSEND START5)点击编译文件,若程序无误,再点击进行连接。
实验报告课程名称微机原理及应用实验学生学院自动化学院专业班级 14级物联网4班学号3114001569学生姓名林思培指导教师王春茹2016年11月28日一.实验目的1)掌握8259中断控制器的工作原理。
2)掌握8259可编程中断控制器的应用编程。
3)学习掌握8259级联方式的使用方法。
4)掌握在接口实验单元上构建连接实验电路的方法。
二.实验设备PC一台,TD-PITE微机/单片机教学实验装置一套三.实验内容与步骤1)实验内容修改图2-5-2接线,将KK2+接到MIR6。
编写程序,实现按一次KK2+时,显示字符“2013NKL”(用AH=09H,INT 21H显示),中断16次后程序退出。
2)分析参照实验书的实验1.8259A单中断实验,先对执行IRQ6中断时要产生的动作(显示字符串)这一功能进行编写,然后初始化主片8259A,开放IR6中断,初始化中断可运行的次数,用CX记录,然后执行一次中断就CX-1,当16次中断完成后,禁止IR6中断,程序结束。
3)代码DATAS SEGMENTDATA1 DB'2013NKL$'DATAS ENDSSTACKS SEGMENTDW 64 DUP(?)STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATAS ;现用的段地址送AXMOV DS,AX ;送DS段寄存器PUSH DS ;因为下面需要用到DS,先把其进栈MOV AX,0000HMOV DS,AXMOV AX,OFFSET IRQ6 ;取中断入口地址MOV SI,0038H ;IR6的中断向量表地址为38H~3BH MOV [SI],AX ;填IRQ6的偏移地址MOV AX,CSMOV SI,003AHMOV [SI],AX ;填IRQ6的段地址;初始化主片8259AMOV AL,11HOUT 20H,AL ;写入ICW1MOV AL,08HOUT 21H,AL ;写入ICW2MOV AL,04HOUT 21H,AL ;写入ICW3MOV AL,01HOUT 21H,AL ;写入ICW4IN AL,21HAND AL,0BFHOUT 21H,AL ;开放IR6中断POP DS ;将DS出栈STIMOV CX,0010H ;初始化循环次数CX为16 A1:CMP CX,0 ;当CX=0,禁止IR6中断JNZ A2IN AL,21HOR AL,40HOUT 21H,ALA2:NOPJMP A1IRQ6:MOV DX,OFFSET DATA1MOV AH,09H ;显示‘2013NKL’INT 21HDEC CXMOV AL,20HOUT 20H,ALIRETMOV AH,4CHINT 21HCODES ENDSENDSTART4)调试步骤(1)按照图2-5-2连接实验线路(2)输入程序并检查无误,经汇编、连接后装入系统。
微机原理实验心得体会篇一:微机原理实验总结微机原理实验总结不知不觉,微机原理与接口技术实验课程已经结束了。
回忆起来收获颇丰,主如果加深了对计算机的一些硬件情况和运行原理的理解和汇编语言的编写汇编语言,对于学习机电工程的自动控制和计算机都是很重要的,因为它是和机械语言最接近的了,若是用它来编程序的话,会比用其它高级语言要快得多。
本学期咱们在老师的率领下,进行了微机原理实验六到十这五组实验。
它们别离是:实验六8255 PA口控制PB口实验目的掌握单片机系统中扩展外围芯片的方式,了解8255 芯片的结构及编程方式。
实验内容用8255 PA 口作开关量输入口,PB 口作输出口。
实验步骤一、用8 芯线将8 255 PA口接至开关Kl~K8,PB口接至发光二极管L1~L8;二、运行程序,拨动开关K1~K8,观察L1~L8发光二极管是不是对应点亮。
实验七8255控制交通灯实验目的进一步了解8 255 芯片的结构及编程方式,学习模拟交通控制的实现方式。
实验内容用8255 做输出口,控制六个发光二极管燃灭,模拟交通灯管理。
实验步骤一、用双头线将8 255 PA0~PA2 口接至发光二极管L3~L1,PA3~PA5口接至发光二极管L7~L5;二、执行程序,初始态为四个路口的红灯全亮,以后,东西路口的绿灯亮,南北路口的红灯亮,东西路口方向通车,延时一段时间后东西路口的绿灯熄灭,黄灯开始闪烁,闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北路口方向开始通车,延时一段时间后,南北路口的绿灯熄灭,黄灯开始闪烁,闪烁若干次后,再切换到东西路口方向,以后重复以上进程。
实验八简单I /O口扩展实验目的学习单片机系统中扩展简单I/O 口的方式;学习数据输入输出程序的编制方式。
实验内容利用74LS244 作为输入口,读取开关状态,并将此状态,通过74LS273再驱动发光二极管显示出来。
五、实验步骤一、用8 芯线将Y0~Y7接至开关K1~K8,Q0~Q7 接至发光二极管L1~L8,用双头线将CS1 接至8 000 孔,CS2 接至9 000 孔,用8 芯线将J X0 接至JX7(D0~D7数据线);二、执行程序,按动开关K1~K8,观察发光二极管L1~L8是不是对应点亮。
微机原理及接口技术——实验报告学号: xxxxxx姓名: xxxxx专业: 网络工程实验一: 系统认知1.1实验目的掌握 TD 系列微机原理及接口技术教学实验系统的操作, 熟悉Wmd86 联机集成开发调试软件的操作环境。
通过顺序程序设计与分支程序设计来进行举例。
1.2实验设备PC 机一台, TD-PITE 实验装置一套。
1.3实验内容内存从BUFF开始的单元中存放着两个字数据X、Y, 完成X+Y, 并将相加的和(假设仍为一个字数据)存放于内存从RESULT开始的存储单元中。
DATA SEGMENTBUFF DW X,YRESULT DW ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AX,BUFFADD AX,BUFF+2MOV RESULT,AXMOV AH,4CHINT 21HCODE ENDSEND START加载程序后调试, R寄存器;U反汇编;D显示数据;E修改数据。
1.4实验截图实验二分支程序设计2.1实验目的1.掌握分支程序的结构.2.掌握分支程序的设计、调试方法.2.2实验设备PC 机一台, TD-PITE 实验装臵一套。
2.3实验内容1, X>0求函数Y= 0, X=0-1, X<0程序如下:DATA SEGMENTVAR1 DB XVAR2 DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA START:MOV AX,DATAMOV DS,AXMOV AL, VAR1CMP AL, 0JGE BIGMOV VAR2,0FFHJMP DONEBIG:JE EQULMOV VAR2,1JMP DONEEQUL:MOV VAR2, 0DONE:MOV AH, 4CHINT 21HCODE ENDSEND START实验三循环程序设计3.1实验目的1)加深对循环结构的理解。
微机原理十进制减法实验程序一、十进制数相减程序设计实验DATA SEGMENTDATA1 DB 33H,39H,31H,37H,38H ;第一个数据(作为被减数)DATA2 DB 36H,35H,30H,38H,32H ;第二个数据(作为减数)MES1 DB '-','$'MES2 DB '=','$'DATA ENDSSTACK SEGMENT ;堆栈段STA DB 20 DUP(?)TOP EQU LENGTH STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATASTART: MOV AX,DATAMOV DS,AXMOV ES,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXMOV SI,OFFSET DATA1MOV BX,05CALL DISPL ;显示被减数MOV AH,09HLEA DX,MES1INT 21HMOV SI,OFFSET DATA2MOV BX,05 ;显示减数CALL DISPLMOV AH,09HLEA DX,MES2INT 21HMOV SI,OFFSET DATA1MOV DI,OFFSET DATA2CALL SUBA ;减法运算MOV SI,OFFSET DATA1MOV BX,05 ;显示结果CALL DISPLMOV DL,0DHMOV AH,02HINT 21HMOV DL,0AHMOV AH,02HINT 21HINT 21HMOV AX,4C00HINT 21HDISPL PROC NEAR ;显示子功能DSI: MOV AH,02MOV DL,[SI+BX-1] ;显示字符串中一字符INT 21HDEC BX ;修改偏移量JNZ DSIRETDISPL ENDPSUBA PROC NEARMOV DX,SIMOV BP,DIMOV BX,05SU1: SUB BYTE PTR[SI+BX-1],30HSUB BYTE PTR[DI+BX-1],30HDEC BX ;将ASCII 码表示的数字串 JNZ SU1 ;转化为十六进制的数字串 MOV SI,DXMOV DI,BPMOV CX,05 ;包括进位,共5位CLC ;清进单位SU2: MOV AL,[SI]MOV BL,[DI]SBB AL,BL ;带进位相减AAS ;非组合BCD码的减法调整 MOV [SI],AL ;结果送被减数区INC SIINC DI ;指向下一位LOOP SU2 ;循环MOV SI,DXMOV DI,BPMOV BX,05SU3: ADD BYTE PTR [SI+BX-1],30HADD BYTE PTR [DI+BX-1],30HDEC BX ;十六进制的数字串转化ASCII码表示的数字串 JNZ SU3 RETSUBA ENDPCODE ENDSEND START二、十进制数排序程序设计实验;;;;;功能:冒泡排序服务程序;;;;;;DATA SEGMENTWORD DB 'Input numbers:',0DH,0AH,'$'BUF DB 100 DUP('$')DATA1 DB 0DH,0AH,'The result is:',0DH,0AH,'$' COUNT DB 0 DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:;;;;;;;;;;;;;;初始化;;;;;;;;;;;;;MOV AX,DATAMOV DS,AXLEA DX,WORDMOV AH,09HINT 21HLEA DX,BUFMOV AH,0AH ;输入字符到缓冲区INT 21H ;输入数据(0~99),每个数据空格隔开;;;;;;功能:计算键入数字个数;;;;;;;;;;;;;H1: MOV AL,DI[BUF+2]CMP AL,' ' ;是否为空格JNZ H2INC [COUNT] ;有数字,数量+1JMP H3H2: CMP AL,0DH ;是否为CRJZ H4H3: INC DIJMP H1H4: INC [COUNT];存放需要比较的个数;;;;;;;功能:冒泡排序服务程序;;;;;;;;;;;;; MOV CX,0MOV CL,BYTE PTR [COUNT];循环次数L1: PUSH CXMOV CL,BYTE PTR [COUNT]MOV DI,0;取首位数据L4: CALL COUNT1;调用判断数据位数子程序CMP BL,DL;比较位数的大小JA L5;前一个数比后一个数大的情况JNE L6CMP BL,1JNZ L7CALL XCH3;同为一位数的比较JMP L5L7: CALL XCH2;同为两位数的比较JMP L5L6: CALL XCH1;前一个数比后一个数位数少的情况L5: LOOP L4POP CXLOOP L1;;;;;;;;显示排序结果;;;;;;;;;;DISPLAY:LEA DX,[DATA1]MOV AH,09HINT 21H;显示提示信息LEA DX,[BUF+2]MOV AH,09HINT 21H;显示结果MOV AH,4CHINT 21H;返回结束;;;;;;;;判断数据位数;;;;;;;;;;COUNT1:MOV DX,0MOV BX,0J1: MOV AL,DI[BUF+2]CMP AL,' 'JZ J2CMP AL,0DHJZ J3INC BLINC DIJMP J1J2: MOV AL,DI[BUF+3]CMP AL,' 'JZ J3CMP AL,0DHJZ J3INC DLINC DIJMP J2J3: SUB DI,DXINC DIRET;;;前一个数比后一个数位数少的情况;;XCH1:MOV AL,DI[BUF] ;第一个数装入ALMOV BX,WORD PTR DI[BUF+2] ;第二个数装入BX MOV WORD PTR DI[BUF],BXMOV BL,20HMOV DI[BUF+2],BLMOV DI[BUF+3],ALINC DIRET;;;;;;;;;;同为两位数比较;;;;;;;;;XCH2:MOV BX,WORD PTR DI[BUF-1] ;第一个数装入BX MOVDX,WORD PTR DI[BUF+2] ;第二个数装入DX CMP BX,DX JAE L9 ;>=不交换MOV WORD PTR DI[BUF-1],DXMOV WORD PTR DI[BUF+2],BXL9: RET;;;;;;;;;;同为一位数的比较;;;;;;;;XCH3:MOV DL,DI[BUF] ;第一个数装入DLMOV DH,DI[BUF+2];第二个数装入DHCMP DL,DHJAE L10 ;>=不交换MOV DI[BUF],DHMOV DI[BUF+2],DLL10: RETCODE ENDSEND START三、8255输入输出实验;//***************************************************** ;文件名: 8255IO for 8088;功能: 8255输入、输出实验;接线: 用导线连接8255模块的CS_8255到CPU模块的200H;; 8255模块的JD3C到八位逻辑电平输出模块的JD1E。
+试验四一、实验目的掌握8253的基本工作原理和编程方法。
二、实验内容1.按图接线,将计数器0设置为方式0,计数器初值为N(N≤0FH,本例程中为0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用L0或逻辑笔观察OUT0电平变化,初始时OUT0为高电平,当输入N个脉冲时,OUT0变为低电平,当输入N+1个脉冲后OUT0变高电平)。
2按图连接电路,将计数器0、计数器1分别设置为方式3,计数初值设为1000,用电平指示灯L0或逻辑笔观察OUT1输出电平的变化,要求输出频率1HZ的分频信号。
;*************************;;* 8253方式0计数器实验 *;;*************************;ioport equ 0C400h-0280hio8253k equ ioport+283hio8253a equ ioport+280hcode segmentassume cs:codestart:mov al,14h ;设置8253通道0为工作方式2,二进制计数mov dx,io8253kout dx,almov dx,io8253a ;送计数初值为08Hmov al,08hout dx,allll: in al,dx ;读计数初值call disp ;调显示子程序push dxmov ah,06hmov dl,0ffhint 21hpop dxjz lllmov ah,4ch ;退出int 21hdisp proc near ;显示子程序push dxand al,0fh ;首先取低四位mov dl,alcmp dl,9 ;判断是否<=9jle num ;若是则为'0'-'9',ASCII码加30H add dl,7 ;否则为'A'-'F',ASCII码加37H num: add dl,30hmov ah,02h ;显示int 21hmov dl,0dh ;加回车符int 21hmov dl,0ah ;加换行符int 21hpop dxret;子程序返回disp endpcode endsend start;*******************;* 8253分频 *;*******************ioport equ 0C400h-0280hio8253a equ ioport+280hio8253b equ ioport+281hio8253k equ ioport+283hcode segmentassume cs:codestart:mov dx,io8253k ;向8253写控制字mov al,36h ;使0通道为工作方式3out dx,almov ax,1000 ;写入循环计数初值1000mov dx,io8253aout dx,al ;先写入低字节mov al,ahout dx,al ;后写入高字节mov dx,io8253kmov al,76h ;设8253通道1工作方式2out dx,almov ax,1000 ;写入循环计数初值1000mov dx,io8253bout dx,al ;先写低字节mov al,ahout dx,al ;后写高字节mov ah,4ch ;程序退出int 21hcode endsend start实验五一、实验目的掌握8255方式0的工作原理及使用方法。
2021微机原理实验指导书05032.1 系统认识实验【实验目的】掌握TD系列微机原理及接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的调试环境。
【实验设备】PC机一台,TD-PITE实验装置一套。
【实验内容】编写实验程序,将00H~0FH共16个数写入到内存3000H开始的连续16个存储单元中。
【实验步骤】1.运行Wmd86软件,进入Wmd86集成开发环境。
2.在设置菜单中选择“汇编语言”和“16位寄存器”。
3.单击文集菜单的新建命令,新建一个文档,默认文件名为Wmd861。
4.编写实验程序,并保存,此时系统会提示输入新的文件名,输完后点击保存。
5.单击编译文件,若程序编译无误,则科技继续单击进行链接,链接无误后方可以加载程序。
6.连接PC与实验系统的通讯电缆,打开实验系统电源。
7.编译、链接都正确并且上下机通讯成功后,就可以下载程序,联机调试了。
可以通过端口列表中的“端口测试”来检查通讯是否正常。
点击下载程序。
为编译、链接、下载组合按钮,通过该按钮可以将编译、链接、下载一次完成。
下载成功后,在输出区的结果窗中会显示“加载成功!”,表示程序已正确下载。
起始运行语句下会有一条绿色的背景。
8.将输出区切换到调试窗口,实验命令D0000:3000查看内存3000H起始地址的数据。
9.点击按钮运行程序,等待程序运行停止后,通过命令来观察程序结果。
10.也可以设置端点,要修改内存中的数据可以使用命令E,如E0000:3000可以修改地址0000:3000处的数据,修改完一个后,可按“空格”键继续输入下一个数。
输入完成后按“回车”键退出。
2.2 数制转换实验【实验目的】1掌握不同进制数及编码相互转换的程序设计方法,加深对数值转换的理解。
2.熟悉程序调试的方法。
【实验设备】PC机一台,TD-PITE实验装置一套。
【实验内容】编写程序,将ASCII码表示的十进制数转换为二进制数。
【实验步骤】1.根据程序流程图编写程序。
深圳大学实验报告
课程名称:微机计算机设计
实验项目名称:8259 中断控制实验
学院:信息工程学院
专业:电子信息工程
指导教师:
报告人:学号:**********班级:<1>班实验时间:2011. 05.19
实验报告提交时间:2011. 05. 26
教务处制
一、实验目的
1. 掌握8259 中断控制器的工作原理。
2. 学习8259 的应用编程方法。
3. 掌握8259 级联方式的使用方法。
二、实验要求
1、8259 单中断实验,由单次脉冲输出与主片8259 的IR7 相连可以实现每按动一次单次脉冲,产生一次外部中断,在显示屏上输出一个字符“7”。
2、8259 级联实验,由KK1+连接到主片8259 的IR7 上,KK2+连接到从片8259 的IR1 上,可实现当按一次KK1+时,显示屏上显示字符“M7”,按一次KK2+时,显示字符“S1”。
三、实验设备
PC 机一台,TD-PITE 实验装置或TD-PITC 实验装置一套。
四、实验原理
1、在Intel 386EX 芯片中集成有中断控制单元(ICU),该单元包含有两个级联中断控制器,一个为主控制器,一个为从控制器。
该中断控制单元就功能而言与工业上标准的82C59A 是一致的,操作方法也相同。
从片的INT 连接到主片的IR2 信号上构成两片8259 的级联。
在TD-PITE 实验系统中,将主控制器的IR6、IR7 以及从控制器的IR1 开放出来供实验使用,主片8259 的IR4 供系统串口使用。
8259 的内部连接及外部管脚引出如图:
2、在对8259 进行编程时,首先必须进行初始化。
一般先使用CLI 指令将所有的可屏蔽中断禁止,然后写入初始化命令字。
8259 有一个状态机控制对寄存器的访问,不正确的初始化顺序会造成异常初始化。
在初始化主片8259 时,写入初
始化命令字的顺序是:ICW1、ICW2、ICW3、然后是ICW4,初始化从片8259 的顺序与初始化主片8259 的顺序是相同的。
系统启动时,主片8259 已被初始化,且4 号中断源(IR4)提供给与PC 联机的串口通信使用,其它中断源被屏蔽。
五、实验过程
1、8259 单中断实验
(1)按图接线好电路。
(2)编写实验程序,经编译、链接无误后装入系统。
(代码如下):SSTACK SEGMENT STACK
DW 32 DUP(?)
SSTACK ENDS
CODE SEGMENT
ASSUME CS:CODE
START: PUSH DS
MOV AX, 0000H
MOV DS, AX
MOV AX, OFFSET MIR7 ;取中断入口地址
MOV SI, 003CH ;中断矢量地址
MOV [SI], AX ;填IRQ7 的偏移矢量
MOV AX, CS ;段地址
MOV SI, 003EH
MOV [SI], AX ;填IRQ7 的段地址矢量
CLI
POP DS
;初始化主片8259
MOV AL, 11H
OUT 20H, AL ;ICW1
MOV AL, 08H
OUT 21H, AL ;ICW2
MOV AL, 04H
OUT 21H, AL ;ICW3
MOV AL, 01H
OUT 21H, AL ;ICW4
MOV AL, 6FH ;OCW1
OUT 21H, AL
STI
AA1: NOP
JMP AA1
MIR7: STI
CALL DELAY
MOV AX, 0137H
INT 10H ;显示字符7
MOV AX, 0120H
INT 10H
OUT 20H, AL ;中断结束命令
IRET
DELAY: PUSH CX
MOV CX, 0F00H
AA0: PUSH AX
POP AX
LOOP AA0
POP CX
RET
CODE ENDS
END START
(3)运行程序,重复按单次脉冲开关KK1+,观看显示屏,结果如下:2、8259 级联实验
(1)连接好实验线路。
(2)输入程序,编译、链接无误后装入系统。
(部分代码如下):MOV AX, OFFSET MIR7 ;取中断入口地址
MOV SI, 003CH ;中断矢量地址
MOV [SI], AX ;填IRQ7 的偏移矢量
MOV AX, CS ;段地址
MOV [SI], AX ;填IRQ7 的段地址矢量
MOV AX, OFFSET SIR1
MOV SI, 00C4H
MOV [SI], AX
MOV AX, CS
MOV SI, 00C6H
MOV [SI], AX
CLI
POP DS
;初始化主片8259
MOV AL, 11H
OUT 20H, AL ;ICW1
MOV AL, 08H
OUT 21H, AL ;ICW2
MOV AL, 04H
OUT 21H, AL ;ICW3
MOV AL, 01H
OUT 21H, AL ;ICW4
;初始化从片8259
MOV AL, 11H
OUT 0A0H, AL ;ICW1
MOV AL, 30H
OUT 0A1H, AL ;ICW2
MOV AL, 02H
OUT 0A1H, AL ;ICW3
MOV AL, 01H
OUT 0A1H, AL ;ICW4
MOV AL, 0FDH
OUT 0A1H,AL ;OCW1 = 1111 1101
MOV AL, 6BH
OUT 21H, AL ;主8259 OCW1
STI
AA1: NOP
JMP AA1
MIR7: CALL DELAY
MOV AX, 014DH
INT 10H ;M
MOV AX, 0137H
INT 10H ;显示字符7
MOV AX, 0120H
INT 10H
MOV AL, 20H
OUT 20H, AL ;中断结束命令
IRET
SIR1: CALL DELAY
MOV AX, 0153H
INT 10H ;S
MOV AX, 0131H
INT 10H ;显示字符1
MOV AX, 0120H
INT 10H
MOV AL, 20H
OUT 0A0H, AL
OUT 20H, AL
IRET
DELAY: PUSH CX
MOV CX, 0F00H
AA0: PUSH AX
POP AX
LOOP AA0
POP CX
RET
CODE ENDS
END START
(3)运行程序,按动KK1+或KK2+,观察实验结果,验证实验程序的正确性。
实验结果如下:
(4)若同时按下KK1+和KK2+,观察实验结果,解释实验现象:
通过观察得到,若同时按下KK1+和KK2+,那么显示屏是显示S1在前M7在后。
说明了S1比M7的优先级高。
六、实验结论
本次实验实现了8259的单级和多级的中断实验,深刻体会到了中断优先级的概念。
关于优先级部分,当时不知如何才能让两个按键同时按下,后来通过连在一起而实现了其要求。
总之,这次的实验对中断有了进一步的了解。
注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。
2、教师批改学生实验报告时间应在学生提交实验报告时间后10日内。