目录
我们在之前所讲过,各种存储器都和CPU的地址线、数据线、控制线相连。CPU在操控它们的时候,把它们当做内存来看待,把它们总地看做一个由若干存储单元组成的逻辑存储器,这个逻辑存储器我们称为内存地址空间。
在PC机系统中,和CPU通过地址总线相连的芯片除各种存储器外,还有以下三中国芯片:
(1)各种接口卡上的接口芯片,它们控制接口卡进行工作。
(2)主板上的接口芯片,CPU通过它们对部分外设进行访问。
(3)其他芯片,用来存储相关的系统信息,或进行相关的输入输出处理。
在这些芯片中,都有一组可以由CPU读写的寄存器。这些寄存器,它们在物理上可能处于不同的芯片当中,但是它们在以下两点上相同:
(1)都和CPU的总线相连。
(2)CPU对它们进行读或写的时候都通过控制线向它们所在的芯片发出端口读写指令。
CPU可以直接读写以下三个地方的数据:
(1)CPU内部存储器。
(2)内存单元。
(3)端口。
一、端口的读写
1.在访问端口的时候,CPU通过端口地址来定位端口。因为端口所在的芯片和CPU通过总线相连,所以端口地址和内存地址一样。通过地址总线来传送。在PC系统中,CPU最多可以定位64KB个不同的端口。
2.端口的读写指令有两条:in和out。
3.访问端口:
in al,60h; 从20h端口读入一个字节。
执行时与总线相关的操作如下:
(1)CPU通过地址总线将地执信息60h发出。
(2)CPU通过控制线发出端口读命令,选中端口所在芯片,并通知它,将要从中读取数据。
(3)端口所在芯片将60h端口中数据通过数据线送入CPU。
二、shl和shr指令
1.shl和shr是逻辑移位指令。
2.shl是逻辑左移指令,它的功能为:
(1)将一个寄存器或内存单元中的数据向左移位。
(2)将最后移出的一位写入CF中。
(3)最低位用0补充。
3.指令:
mov al,01001000b
shl al,1;将al中的数据左移一位。
执行后(al)=1001000b,CF=0.
4.shr是逻辑右移指令,它和shl所进行的操作刚好相反。
(1)将一个寄存器或内存单元中的数据向右移位。
(2)将最后移出的一位写入CF中。
(3)最高位用0补充。
5.指令:
mov al,10000001b
shr al,l;将al中的数据右移一位。