汇编 端口


各种存储器都和CPU的地址线,数据线,控制线相连,CPU在操控它们的时候,把它们都当作内存来对待,把它们总地看做一个由若干存储单元组成的逻辑存储器,这个逻辑存储器我们称其为内存地址空间
在PC机系统中,和CPU通过总线相连的芯片除各种存储器外,还有以下3中芯片:

  • 各种接口卡(比如,网卡,显卡)上的接口芯片,它们控制接口卡进行工作
  • 主板上的接口芯片,CPU通过它们对部分外设进行访问
  • 其他芯片,用来存储相关的系统信息,或进行相关的输入输出处理

在这些芯片中,都有一组可以由CPU读写的寄存器,这些寄存器,它们在物理上可能处于不同的芯片中,但是它们在以下两点上相同

  • 都和CPU的总线,当然这种连接是通过它们所在的芯片进行的
  • CPU对它们进行读或写的时候都通过控制线向它们所在的芯片发出端口读写命令

可见,从CPU的角度,将这些寄存器都当作端口,对它们进行统一编址,从而建立一个统一的端口地址空间,每个端口在地址空间都有一个地址
CPU可以直接读写以下3个地方的数据

  • CPU内部的寄存器
  • 内存单元
  • 端口

端口的读写

在访问端口的时候,CPU通过端口地址来定位端口,因为端口所在的芯片和CPU通过总线相连,所以,端口地址和内存地址一样,通过地址总线来传送,在PC系统中,CPU最多可以定位64KB个不同的端口,则端口地址的范围为0-65535
对端口的读写不能用mov,push,pop等内存读写指令,端口的读写指令只有两条:in和out,分别用于从端口读取数据和往端口写入数据
我们看一下CPU执行内存访问指令和端口访问指令时,总线上的信息:

  • 访问内存
mov ax,ds:[8]//假设执行前(ds)=0

执行时与总线相关的操作如下所示:

  • CPU通过地址线将地址信息8发出
  • CPU通过控制线发出内存读命令,选出存储器芯片,并通知它,将要从中读取数据
  • 存储器将8号单元的数据通过数据线送入CPU
    执行时与总线相关的操作如下:
  • CPU通过地址线将地址信息60h发出
  • CPU通过控制线发出端口读命令,选中端口所在的芯片,并通知它,将要从中读取数据
  • 端口所在的芯片将60h端口中的数据通过数据线送入CPU

注意,在in和out指令中,只能使用ax或al来存放从端口中读入的数据或要发送到端口中的数据,访问8位端口时用al,访问16位端口时用ax
对0-255以内的端口进行读写时:

in al,20h//从20h端口读入一个字节
out 20h,al//往20h端口写入一个字节

对256-65535d1的端口进行读写时,端口号放在dx中:

mov dx,3f8h//将端口号3f8h送入dx
in al,dx//从3f8h端口读入一个字节
out dx,al//向3f8h端口写入一个字节
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值