张晓茜 發表於 2021-1-14 01:16:00

汇编语言-端口(port)

<h1 class="md-end-block md-heading"><span class="md-plain md-expand">汇编语言-端口(port)</span></h1>
<p class="md-end-block md-p"><span class="md-tab"> <span class="md-plain">相当于计算机和硬件还有网络的传输交流的一个通道</span></span></p>
<p class="md-end-block md-p"><span class="md-tab"> <span class="md-plain">硬件端口</span></span></p>
<p class="md-end-block md-p"><span class="md-plain">CPU通过接口寄存器或特定电路与外设进行数据传送,这些寄存器或特定电路称之为端口。</span></p>
<p class="md-end-block md-p"><span class="md-plain">其中硬件领域的端口又称接口,如:并行端口、串行端口等。</span></p>
<p class="md-end-block md-p"><span class="md-plain">网络端口</span></p>
<p class="md-end-block md-p"><span class="md-tab"> <span class="md-plain">在网络奇数中,端口(Port)有好几种意思。集线器、交换机、路由器的端口指的是连接其他网络设备的接口,如Serial端口。我们 这里所指的端口不是指物理意义上的端口,而是特指TCP/IP中的端口,是逻辑意义上的端口。</span></span></p>
<p class="md-end-block md-p"><span class="md-plain">软件端口</span></p>
<p class="md-end-block md-p"><span class="md-tab"> <span class="md-plain">缓冲区</span></span></p>
<p class="md-end-block md-p"><span class="md-tab"> <span class="md-plain">CPU可以直接读写的三个数据:</span></span></p>
<p class="md-end-block md-p"><span class="md-tab"> <span class="md-plain">1.cpu内部的寄存器</span></span></p>
<p class="md-end-block md-p"><span class="md-tab"> <span class="md-plain">2.内存单元</span></span></p>
<p class="md-end-block md-p"><span class="md-tab"> <span class="md-plain">3.端口</span></span></p>
<h2 class="md-end-block md-heading"><span class="md-plain">端口的读写</span></h2>
<p class="md-end-block md-p"><span class="md-tab"> <span class="md-plain">在访问端口的时候,CPU通过端口地址来定位端口,因为端口所在的芯片和CPU通过总线相连。所以端口地址和内存地址一样,通过地址总线传送。</span></span></p>
<p class="md-end-block md-p"><span class="md-tab"> <span class="md-plain">在PC中CPU最多可以定位64KB个不同端口,0~65535</span></span></p>
<p class="md-end-block md-p"><span class="md-tab"> <span class="md-plain">对于端口的读写不能用mov、push、pop等内存读写指令,端口指令只有in和out,分别是用来读数据和写数据</span></span></p>
<h3 class="md-end-block md-heading"><span class="md-plain">访问内存</span></h3>
<p class="md-end-block md-p"><span class="md-tab"> <span class="md-plain">mov ax,ds:</span></span></p>
<p class="md-end-block md-p"><span class="md-tab"> <span class="md-plain">1<span class="md-tab"> <span class="md-plain">CPU通过地址线将地址信息8发出</span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-tab"> <span class="md-plain">2<span class="md-tab"> <span class="md-plain">CPU通过控制线发出内存读命令</span></span></span></span></p>
<p class="md-end-block md-p"><span class="md-tab"> <span class="md-plain">3<span class="md-tab"> <span class="md-plain">存储器将8号单元中的数据通过数据线送入CPU</span></span></span></span></p>
<h3 class="md-end-block md-heading"><span class="md-plain">访问端口</span></h3>
<p class="md-end-block md-p"><span class="md-tab"> <span class="md-plain">in al,60h</span></span></p>
<p class="md-end-block md-p"><span class="md-plain">从60号端口读入一个字节给al</span></p>
<p class="md-end-block md-p"><span class="md-plain">操作流程:</span></p>
<ol class="ol-list" start="">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">CPU通过地址线将地址信息60h发出</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">CPU通过控制线发出端口°命令,选择端口所在芯片,通知它要读数据</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">端口所在芯片将60h端口中的数据通过数据线送入CPU</span></p>
</li>
</ol>
<p class="md-end-block md-p"><span class="md-pair-s"><strong>在in和out指令中只能用al或ax这样的8位16位寄存器</strong></span></p>
<p><span class="md-pair-s"><strong>&nbsp;</strong></span></p><br><br>
来源:https://www.cnblogs.com/Sna1lGo/p/14275243.html
頁: [1]
查看完整版本: 汇编语言-端口(port)