端口

接口芯片中也有自己接口卡的寄存器。Cpu通过不同的端口号找到特定设备的寄存器。问题有两个:

1.     CPU怎么把端口号映射为物理地址,地址总线的电瓶信号怎么和端口绑定的。

a)      例如地址总线的第20位为1,其余位为0. Cpu 怎么知道这个地址信号就是外部接口的地址? 也就是说,外部接口怎么把自己的端口号和地址总线对应起来?然后cpu怎么知道这种对应关系?对应关系存在什么地方?


Cpu访问内存和访问端口,总线上的信息

 

访问内存:

mov ax, ds:[8]   ;(ds)=0

1) cpu通过地址线将地址8发出;

2) cpu控制器发出内存读命令,选中存储器芯片,并通知它,将要从中读取数据;

3) 存储器将8号单元的数据通过数据线送入cpu的寄存器中。

 

访问端口

in al, 60h ; 从60h号端口读入一个字节

1) cpu通过地址线将地址信息60h发出;

2) cpu通过控制线发出端口读命令,选中端口所在的芯片,并通知它,将要从中读取数据;

3) 端口所在的芯片将60h端口中的数据通过数据线送入CPU。


命令mov,告诉cpu从内存读取数据

命令in告诉cpu从端口读取数据。

 

Cmos中的70h存放要读取的单元号,8号单元存放着当前的月份信息,BCD码格式(4个2进制表示一个10进制)

71h是数据端口,70h是地址端口

;从cmos中读取当前的月份

;BCD码

assume cs: code

 

code segment

       start:

                            moval,0

                            moval,8h

                            out70h,al

                            moval,0              

                            ;in71h,al

                            inal,71h

                           

                            ;movax,0x4c00h

                            ;int21

                            movax,4c00h

                            int21h

code ends

end start


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值