微机原理实验二之8259A中断控制器
来源:互联网 发布:c语言经典案例 编辑:程序博客网 时间:2024/05/16 19:28
本次实验的过程是实验一:在本次实验中,我们通过步骤一步一步的实现实验的要求,通过运行程序,上下拨动单脉冲开关,当拨动至凸电平时。我们可以清晰的发现试验箱中的显示器会+1,反复拨动,计数会不断的加一。
实验效果图
代码片段
.MODEL TINYEXTRN InitKeyDisplay:NEAR, Display8:NEARI08259_0 EQU 0250HI08259_1 EQU 0251H.STACK 100.DATABUFFER DB 8 DUP(?)Counter DB ?ReDisplayFlag DB 0.CODESTART: MOV AX,@DATA MOV DS,AX MOV ES,AX NOP CALL InitKeyDisplay CALL Init8259 CALL WriIntver MOV Counter,0 MOV ReDisplayFlag,1 STISTART1: LEA SI,Buffer CALL Display8 CMP ReDisplayFlag,0 JZ START1 CALL LedDisplay MOV ReDisplayFlag,0 JMP START1Init8259 PROC NEAR MOV DX,I08259_0 MOV AL,13H OUT DX,AL MOV DX,I08259_1 MOV AL,08H OUT DX,AL MOV AL,09H OUT DX,AL MOV AL,0FEH OUT DX,AL RETInit8259 ENDPWriIntver PROC NEAR PUSH ES MOV AX,0 MOV ES,AX MOV DI,20H LEA AX,INT_0 STOSW MOV AX,CS STOSW POP ES RETWriIntver ENDPLedDisplay PROC NEAR MOV AL,Counter MOV AH,AL AND AH,0F0H ROR AH,4 MOV Buffer+1,AH MOV Buffer+2,10H MOV Buffer+3,10H MOV Buffer+4,10H MOV Buffer+5,10H MOV Buffer+6,10H MOV Buffer+7,10H RETLedDisplay ENDPINT_0: PUSH DX PUSH AX MOV AL,Counter ADD AL,1 DAA MOV Counter,AL MOV ReDisplayFlag,1 MOV DX,I08259_0 MOV AL,20H OUT DX,AL POP AX POP DX IRET END START
实验二:
实验效果图
实验代码
.model tinyextrn InitKeyDisplay:NEAR,Display8:NEARIO8259_0 EQU 0250hIO8259_1 EQU 0251h.stack 100.databuffer db 8 dup(?)IRQ0_INT db 0IRQ7_INT db 0.codestart: mov ax,@DATAmov ds,axmov es,axnopcall InitKeyDisplaymov IRQ0_INT ,00hmov IRQ7_INT ,00hcall Init8259call WriIntvercall LedDisplaystistart1: lea si,buffercall Display8jmp start1LedDisplay proc NEARpush axmov al,IRQ0_INTor al,IRQ0_INTjz LedDisplay1add al,IRQ7_INTLedDisplay1: mov buffer,almov buffer+1,10hmov buffer+2,10hmov buffer+3,10hmov buffer+4,10hmov buffer+5,10hmov buffer+6,10hmov al,IRQ7_INTmov buffer+7,alpop axretLedDisplay endpInit8259 proc nearmov dx,IO8259_0mov al,13hout dx,almov dx,IO8259_1mov al,08hout dx,almov al,09hout dx,almov al,7ehout dx,alret Init8259 endpdelay proc nearpush sipush cxpush axmov cx,100a3:lea si,buffercall display8loop a3pop axpop cxpop siretdelay endpIRQ0: push dxpush axinc IRQ0_INTcall LedDisplaysticall delaydec IRQ0_INTcall LedDisplaymov al,20hout dx,alpop axpop dxiretIRQ7:push dxpush axinc IRQ7_INTcall LedDisplaysticall delaydec IRQ7_INTcall LedDisplaymov dx,IO8259_0mov al,20hout dx,alpop axpop dxiretWriIntver proc nearpush esmov ax,0mov es,axmov di,20hlea ax,IRQ0stoswmov ax,csstoswmov di,20h+7*4lea ax,IRQ7stoswmov ax,csstoswpop esret WriIntver endpend start
总结:本次实验最大的收获就是理解了8259a的初始化过程,其中的Init8259 PROC NEAR
MOV DX,I08259_0
MOV AL,13H
OUT DX,AL
MOV DX,I08259_1
MOV AL,08H
OUT DX,AL
MOV AL,09H
OUT DX,AL
MOV AL,0FEH
OUT DX,AL
RET
Init8259 ENDP
分别对应的是设置ICW1
高电平触发,单片,写ICW4
设置ICW2
中断类型码为08H
设置ICW4
一般完全嵌套,带缓冲,正常中断结束,86系统
设置OCW1
屏蔽除D0外所有硬件中断
阅读全文
0 0
- 微机原理实验二之8259A中断控制器
- 微机原理复习-中断-8259
- 8259A中断控制器
- 8259A中断控制器
- 8259a中断控制器
- 8259A中断控制器
- 微机原理实验 系列
- 微机原理实验 系列
- 北邮微机原理 实验二 分支,循环程序设计
- 微机原理的中断学习
- 8259A 可编程中断控制器
- PIC - 8259A中断控制器
- 8259A 可编程中断控制器
- 8259A--可编程中断控制器
- 可编程中断控制器8259A
- 微机原理[二]
- 微机原理实验一之存贮器内部数据传输
- 微机原理上机实验 - 汇编
- 常见的web攻击技术
- 民意调研工具的实现
- Html+Css学习第一天
- 前端HTML5几种存储方式的总结
- java String类的intern()方法
- 微机原理实验二之8259A中断控制器
- 2017年高考理数12题压轴选择题的暴力计算
- 排序算法之堆排序
- 2017年6月7日
- 多机多broker
- .html(),.text()和.val()的差异总结
- 指针作为函数参数(处理数组的四种方式)
- ssh框架xml配置文件集合
- 技术重要还是想法重要