VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1538|回复: 1

一道关于8259的问题

[复制链接]

2

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2021-3-10 12:30:02 | 显示全部楼层 |阅读模式
在8259初始化程序中,已知了8259的奇地址端口和偶地址端口,在定义icw1和icw2的时候,都是将控制字输入到端口上,但是为什么在定义icw3和icw4的时候没有输入到端口上而是直接输出到dx寄存器中呢?

mov al,11h   
MOV DX,0FFE8H; 这是偶地址端口
OUT DX,AL;  这是定义iCW1;

而定义icw3的时候,没有用到奇地址端口呢?
MOV AL,08H
OUT DX,AL  ;定义icw3,直接输出到了dx中。但是dx这是并没有奇地址端口。
回复

使用道具 举报

0

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2021-3-10 15:45:01 | 显示全部楼层
你这个初始化程序不完整,初始化总是从ICW1开始,后面紧跟着ICW2,然后才是最后一个命令字(如果需要的话)。
所以,在定义ICW2时已经往DX送过端口值了,而ICW2,ICW3和ICW4具有相同的端口地址,所以没有必要再往DX写值。具体ICW2后面跟的是ICW3还是ICW4或者两者具备,那要看你ICW1的情况了,拿你这个例子来看,ICW1为11H,说明ICW3和ICW4都需要,故需要连续三次往端口0FFE9H送值,8259会分别接收为ICW2,ICW3,ICW4
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表