当前位置:鱼C工作室 >汇编语言 > 查看文章

端口01 – 零基础入门学习汇编语言67

第十四章:端口01

 

让编程改变世界

Change the world by program


 

引言

CPU可以直接读写3 个地方的数据

(1)CPU 内部的寄存器;

(2)内存单元;

(3)端口。

这一章,我们讨论端口的读写。

 

端口的读写

 

对端口的读写不能用mov、push、pop等内存读写指令。

端口的读写指令只有两条:in 和 out分别用于从端口读取数据和往端口写入数据。

 

我们看一下CPU 执行内存访问指令和端口访问指令时候,总线上的信息:

(1)访问内存

(2)访问端口

 

访问内存

 

mov ax,ds:[8]     ;假设执行前 (ds)=0

执行时,与总线相关的操作:

CPU通过地址线将地址信息8发出;

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

存储器将 8号单元中的数据通过数据线送入CPU。

 

访问端口

 

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

执行时与总线相关的操作:

CPU通过地址线将地址信息60h发出;

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

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

 

端口的读写

 

动画片时间(具体内容请看视频中详解)

Get Adobe Flash player

注意:在in和out 指令中,只能使用 ax 或al 来存放从端口中读入的数据或要发送到端口中的数据。访问8 位端口时用 al ,访问16 位端口时用ax 。

 

对0~255以内的端口进行读写:

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

out 20h,al ;往20h端口写入一个字节

 

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

mov dx,3f8h ;将端口号3f8送入dx

in al,dx ;从3f8h端口读入一个字节

out dx,al ;向3f8h端口写入一个字节

 

分页阅读: 1 2 下一页
为您推荐

报歉!评论已关闭.