汇编中的端口

汇编语言端口 自我学习得出的汇编语言端口知识点 阅读详情

1.什么是端口?

   我们先了解下CPU和各种外设连接的情况: 各种存储器都和cpu的数据总线,地址总线,控制总线相连。但是除了存储器的芯片外,还有其他的接口芯片:

    1.各种接口卡的芯片,如网卡和显卡  2.主板上的接口芯片 3.其他芯片,用来存储相关系统 信息。

在这些芯片中,都有一组寄存器,可以供cpu读写操作。他们在物理上处于不同的外部设备中但是

   1.他们都和cpu的总线相连,通过他们的芯片进行联系

    2.cpu对他么进行读或者写的时候通过控制总线向他们所在的芯片发出命令。

这里可以看到,端口就是这些芯片中的寄存器的抽象概念,cpu对他们进行统一编址。从而建立起统一的端口地址空间,每一个端口在地址空间都有一个地址。相当于外设的单元号。CPU和端口所在的芯片通过地址总线相连,所以端口地址和内存地址一样,通过地址总线来传送。在PC系统中,CPU最多可以定位64KB个不同的端口。则端口的地址范围为0~65535.

2.怎么使用端口

8086系统汇编对端口的读写只能用in和out指令。

访问内存和访问端口的区别:

(1)访问内存:

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

执行步骤:

一.cpu通过地址线将地址信息8发出

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

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

(2)访问端口:

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

执行步骤:

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

二.CPU通过控制线发出端口命令,告诉芯片将要读取该端口的信息

三.端口所在芯片将60h端口的信息送到al中

3.摘录一些网上对汇编端口的总结:

    3.1  比如 IN AL, 60H ;从端口60H读入一个字节到AL中 这个60H相当于地址.至于你说的地址怎么换算就是计算机组成原理的内容了.关于外设有2种寻址方式,每个连接到I/O总线上的设备都有自己的I/O地址集,即所谓的I/O端口(I/O port)。在IBM PC体系结构中,I/O地址空间一共提供了65,536个8位的I/O端口。可以把两个连续的8位端口看成一个16位端口,但是这必须是从偶数地址开始。同理,也可以把两个连续的16位端口看成一个32位端口,但是这必须是从4的整数倍地址开始。有四条专用的汇编语言指令可以允许CPU对I/O端口进行读写:它们分别是in、ins、out和outs。在执行其中的一条指令时,CPU使用地址总线选择所请求的I/O端口,使用数据总线在CPU寄存器和端口之间传送数据。   I/O端口还可以被映射到物理地址空间:因此,处理器和I/O设备之间的通信就可以直接使用对内存进行操作的汇编语言指令(例如,mov、and、or等等)。现代的硬件设备更倾向于映射I/O,因为这样处理的速度较快,并可以和DMA结合起来使用。也就解释了为什么32位系统名义上支持4G内存,实际上你装上4G
内存条在机器上是不行了。因为访问不到4G,还需要为显卡,声卡等设备提供物理地址的映射。系统设计者的主要目的是提供对I/O编程的统一方法,但又不牺牲性能。为了达到这个目的,每个设备的I/O 端口都被组织成一组专用寄存器。CPU把要发给设备的命令写入控制寄存器(control register),并从状态寄存器(status register)中读出表示设备内部状态的值。CPU还可以通过读取输入寄存器(input register)的内容从设备取得数据,也可以通过向输出寄存器(output register)中写入字节而把数据输出到设备。

    系统设计者的主要目的是提供对I/O编程的统一方法,但又不牺牲性能。为了达到这个目的,每个设备的I/O 端口都被组织成一组专用寄存器。CPU把要发给设备的命令写入控制寄存器(control register),并从状态寄存器(status register)中读出表示设备内部状态的值。CPU还可以通过读取输入寄存器(input register)的内容从设备取得数据,也可以通过向输出寄存器(output register)中写入字节而把数据输出到设备。

3.2 什么是DMA

  DMA是指外部设备不通过CPU而直接与系统内存交换数据的接口技术。

  要把外设的数据读入内存或把内存的数据传送到外设,一般都要通过CPU控制完成,如CPU程序查询或中断方式。利用中断进行数据传送,可以大大提高CPU的利用率。

    但是采用中断传送有它的缺点,对于一个高速I/O设备,以及批量交换数据的情况,只能采用DMA方式,才能解决效率和速度问题。DMA在外设与内存间直接进行数据交换,而不通过CPU,这样数据传送的速度就取决于存储器和外设的工作速度。

  通常系统的总线是由CPU管理的。在DMA方式时,就希望CPU把这些总线让出来,即CPU连到这些总线上的线处于第三态--高阻状态,而由DMA控制器接管,控制传送的字节数,判断DMA是否结束,以及发出DMA结束信号。DMA控制器必须有以下功能:

  1. 能向CPU发出系统保持(HOLD)信号,提出总线接管请求;

  2. 当CPU发出允许接管信号后,负责对总线的控制,进入DMA方式;

  3. 能对存储器寻址及能修改地址指针,实现对内存的读写操作;

  4. 能决定本次DMA传送的字节数,判断DMA传送是否结束

  5. 发出DMA结束信号,使CPU恢复正常工作状态。

4.端口和外中断:

      我们知道8086cpu没有io映射和DMA技术的时候都是cpu和端口直接进行数据交换。那么问题来了。cpu如何及时的知道并处理外设的输入随时随地的到达的数据呢??

8086系统提供了中断机制,当外设的输入到达时候,将产生中断信息,引发中断程序。外中断根据中断源的不同分为可屏蔽中断和不可屏蔽中断。

 

汇编中的寄存器 1.通用寄存器:EAX,EBX,ECX,EDX,ESI,EDI,EBP,ESP(一般作为堆栈指针) 这些寄存器的默认功能: EAX 是"累加器"(accumulator), 它是很多加法乘法指令的缺省寄存器,函数的返回值经常被放在EAX中. EBX 是"基地址"(base)寄存器, 在内存寻址时存放基地址 ECX 是计数器(counter), 是重复(REP)前缀指令和LOOP指令的内 阅读详情

相关推荐

汇编语言制作霓虹灯程序教程分享

本文还有配套的精品资源,点击获取 简介:汇编语言编写的霓虹灯程序是教学示例之一,展示了计算机屏幕上的闪烁效果。本程序命名为"01_m.asm",展示了如何利用汇编语言实现基本的编程结构,包括指令集、寄存器、内存操作、I/O操作、循环与条件判断、伪指令与宏,以及调试与分析等关键概念。学习霓虹灯程序能够提升对计算机硬件和汇编语言的理解,为深入计算机底层工作原理打下坚实基础。 ...

weixin_29781865的博客 1302

汇编端口及其作用详细列表

原文见:http://blog.chinaunix.net/uid-7672958-id-2598950.html [This file was provided by Wim Osterholt (2:512/56 or wim@djo.wtm.tudelft.nl).] Last Change: 11/6/94   XT, AT and PS/2  I/O por

AC,∑ndless 5036

汇编端口作用详细列表

This file was provided by Wim Osterholt (2:512/56 or wim@djo.wtm.tudelft.nl).

汇编语言——端口(基于8086CPU)

小甲鱼汇编12

qq_42370809的博客 711

机器学习第四个算法ANN(人工神经网络)

我是在14年9月刚读研的时候听到一个说法叫“类人脑算法”很火热,之后搞了很长一段时间相关的蓄水池算法等,但大都没有摸到门路而中途放弃了。现今看来,还是缺少一些知识背景,也不善于在网络上学习,随时间推移,也逐渐明白这是机器学习的一小部分,并且逐渐发展的名称叫做人工神经网络的算法,如果网络层较多,又会有个别名,叫做深度学习。其中个用到的最著名的算法是背向传输算法(backpropagation),而这个

legalhighhigh的博客 1万+

光栅衍射有入射角时_衍射型多焦点人工晶体光学原理

多焦点人工晶体如何把光线分成多个焦点的?这个问题大部分专业书只是蜻蜓点水,并没有讲明白。希此文粗浅的解释,能帮您加深理解,请多指正。接下来,我将按照一下历史发展的顺序讲解一下:光的认识、菲涅尔灯塔(菲涅尔透镜)、菲涅尔波带盘(半波带盘)、多焦点人工晶体。一:首先复习一下光的认识历史。我们现在都知道光是一种电磁波,具有波粒二相性,但是认识光的本质也经历非常曲折漫长的过程。牛顿时代的几何光...

weixin_28963467的博客 2352

【汇编语言】14-端口

公粽号「专注Linux」,专注Linux内核开发 本系列将讲解《汇编语言》一书,本节讲解第14章——端口。 本节速览 1.前文回顾 2.端口定义 3.端口操作

961

考试遇到 Assistant API 考点时,该掌握哪些要点?

【摘要】聚焦阿里云大模型 ACP 认证中智能体 Assistant API 考点,我结合自学认证成功经验,分享复习攻略。先解析 assistants、threads 等五个核心组件作用与关系,点明各组件支持及不支持的方法,最后给出计算 Python 代码调用大模型次数的思路,助力考生攻克考点、顺利拿证 。

davidkorhenn的博客 495

汇编:int指令、BIOS与DOS中断、端口

中断 / 功能号功能寄存器参数要求设置光标位置bh = 显示页,dh = 行号,dl = 列号输出字符串ds:dx 指向字符串首地址,字符串以 '$' 结尾程序退出al = 返回码(通常为 0)

u011911064的博客 1165

MATLAB 2026最新版免费下载安装教程:许可证激活与报错排查

科学计算与仿真在工程实践中扮演着核心角色,MATLAB 作为业界标准平台,凭借矩阵运算、数据可视化和 Simulink 仿真能力,成为高校课程设计与科研实验中的高频工具。理解其许可证机制是正确安装与持续使用的关键:官方提供试用版、学生版、家庭版及校园许可证等多种合法获取途径,安装包由引导器、工具箱文件与授权信息组成。掌握从下载到激活的完整流程,并根据操作系统进行环境配置与工具组件选装,不仅能规避安全风险,还能显著提升工程效率。针对安装过程中常见的许可证校验失败或工具箱不可用等问题,提供系统化排查思路与命令行

weixin_30702441的博客 2629

SAP 配额修改 + 修改记录写入实现

采购配额修改并写入修改记录 cdhdr 和 cdpos

GAVIN 1099

汇编中的int指令和端口

1.写在前面 前面我介绍了内中断的一些知识,通过修改中断程序和中断向量表,来达到修改0号中断程序,使得除法溢出的时候,屏幕上打印overflow!今天我们来讲下int指令和端口。 2.本篇博客的概述 3.int指令 3.1int指令 int指令的格式为:int n, n为中断类型码,它的功能就是引发中断过程。 CPU执行int n指令,相当于引发一个n号中断的中断过程,执行过程如下: 取中断类型码n 标志寄存器入栈,IF=0,TF=0; CS、IP入栈 (IP)=(n4),CS=(n4+2) 从此处转

了不起的盖茨比的博客 2491

人工智能数据治理——解读AI时代数据治理白皮书 2025【附全文阅读】

摘要:该白皮书面向企业数字化负责人及AI项目推进人员,探讨AI时代数据治理的战略升级。提出"好数据+好数据知识"双基石理念,强调数据需满足"三高"标准(高精度、一致性、时效性)并构建语义知识库。构建四层治理框架,包括数据采集处理、合规安全、知识库建设及质量改进,并介绍AI赋能治理的新范式,如智能ETL和治理Agent体系。同时分析"软件+AI+好数据"的应用模式,为企业实现智能数据治理提供实践指导。(149字)

cdfunlove的博客 633

汇编语言中的端口和网络端口区别

1:不是一个概念。你说的那个PC系统中,CPU最多可以定位64K端口中的“端口”是IO端口,这个是X86 CPU中的一个概念,是为了使CPU能够访问外部设备中的寄存器而存在的指令,是CPU指令集的一部分。而后面的ftp http中的端口,纯粹是TCP/IP协议的东西,是纯软件层的东西。2:不知道智能机如何看,如果root了,并且装了防火墙,防火墙里应该可以看到。如果能搞到机器的shell的话,应该也有命令可以看,比如netstat之类的,但我没有试过…… ...

坚持的力量 2691

Unity零基础到入门 ☀️| 小万字教程 对 Unity 中的 协程 ❤️全面解析+实战演练❤️

Unity,为了让Unity基础知识专栏更加完善,又肝了一篇协程来学习。 协程在Unity中还是很常用的,一起来看一下协程的基本概念和使用方法吧!

努力前行,总会成为自己心中的那道光 8万+

电路板保险丝如何选型

在电路板保险丝选型过程中,需要考虑多个因素以确保其适合特定的电路需求。最后,经过以上程序选定的样品需要在实际的电路中进行测试,以验证所选择的保险丝是否合适。

weixin_57010826的博客 1310

汇编中的寄存器说明

 汇编语言和CPU以及内存,端口等硬件知识是连在一起的. 这也是为什么汇编语言没有通用性的原因. 下面简单讲讲基本知识(针对INTEL x86及其兼容机) ============================ x86汇编语言的指令,其操作对象是CPU上的寄存器,系统内存,或者立即数. 有些指令表面上没有操作数, 或者看上去缺少操作数, 其实该指令有内定的操作对象, 比如push指令, 一定是对

Walter的专栏 935

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

汇编语言教程 -- out,in

汇编语言教程 – out, in 今天来讲讲out和in两个汇编指令 这两个指令一个是读(in)指令,一个是写(out)指令,主要是将数据写入地址 比如: ...

twxwjh的博客 1万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

汇编CMOS

汇编 端口 端口 前面讲过,各种存储器都和CPU的地址线、数据线、控制线相连。CPU在操控它们的时候,把它们都当作内存来对待,把它们总的看做一个由若干存储单元组成的逻辑存储器,这个逻辑器我们称其为内存地址空间。 在PC机系统中,和CPU通过总线相连的芯片除各种存储器外,还有以下3种芯片: 1)各种接口卡(比如:网卡、显卡)上的接口芯片,它们控制接口卡进行工作; 2)主...

kexinxin1的博客 665

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

内中断、int指令、端口 x86汇编

导读: 介绍,第一部分介绍内中断,单步中断、 第二部分,int指令的中断以及BIOS和DOS中断服务函数 第三部分,介绍了端口 中断 内中断的产生有如下情况的时候会产生中断: 1. 除法错误 2. 单步执行 3. 执行into指令 4. 执行int指令 8086CPU用中断类型号来表示中断来源,一共256种中断类型号。 中断向量表在8086机器上中断向量表存放在内存地

feather(猎羽) 2417

汇编指令英文全称

有时我们需要查看汇编代码去分析软件问题,汇编代码才能最直观地反映出软件的问题。为了方便大家理解并记忆汇编指令,此处列出常用汇编指令的英文全称,以供参考。

dvlinker的技术专栏 1万+

汇编学习--7.16--端口

1.我们前面讲过,cpu的地址线,数据线,控制线与存储器打交道时,都是将它们看成是若干连续的存储单元组成的逻辑存储器,俗称:内存地址空间。 Cpu除了与存储器打交道外,还与哪些芯片进行访问呢:         1.       接口卡上的芯片。(比如网卡,显卡)上的接口芯片。         2.       主板上的接口芯片。Cpu通过它们对部分外设进行访问。         3.

工作笔记 6090

汇编语言 第十四章-端口

CPU可以直接读写3个地方的数据1.CPU内部的寄存器2.内存单元3.端口14.1 端口的读写1.对端口的读写不能用mov、push、pop等内存读写指令端口的读写指令只有两条:【in】和【out】分别用于从端口读取数据和往端口写入数据2.CPU执行内存访问指令和端口访问指令时,总线上的信息:1.访问内存假设执行前(ds)=0执行时,与总线相关的操作:1.CPU通过地址线将地址信息8发出。

2302_80490510的博客 830

汇编入门学习笔记 (十二)—— int指令、端口

疯狂的暑假学习之 汇编入门学习笔记 (十二)—— int指令、端口 参考: 《汇编语言》 王爽 第13、14章 一、int指令 1. int指令引发的中断 int n指令,相当于引发一个n号中断。 执行过程相当于: (1)取中断类型吗n。 (2)标志寄存器入栈;设置IF=0,TF=0。 (3)CS,IP入栈 (4)(IP)=(n*4),(CS)=(n*4+2) 例子1:编写、安装中断7ch,实现求一个word型数据的平方,用ax存放这个数据。

billvsme的专栏 2323

第 14章 端口

《汇编语言第三版》王爽著 ------读书笔记 在 PC机系统中,除了 CPU通过总线相连的芯片除各种 存储器外, 还有以下三种芯片 1)各种接口卡(比如,网卡,显卡)上述的接口芯片,它们控制接口卡进行工作; 2)主板上的接口芯片,CPU通过它们对部分外设进行访问; 3)其它芯片,用来存储相关的系统信息,或进行相关的输入输出处理 在这些芯片中,都有一组可以由CPU读写的寄存器,物理上可能处于不同的芯片中 在两点上相同: 1)都和CPU的总线相连,这种连接通过它们所在的芯片进行的;...

Net Zoom的博客 449

反汇编学习

(转:http://www.kuqin.com/assemble/20071122/2492.html) 汇编语言和CPU以及内存,端口等硬件知识是连在一起的. 这也是为什么汇编语言没有通用性的原因. 下面简单讲讲基本知识(针对INTEL x86及其兼容机)  ============================  x86汇编语言的指令,其操作对象是CPU上的寄存器,系统内存,或者立即数. ...

weixin_30597269的博客 133
上一篇: 汇编指令
下一篇: 逻辑门电路 构造加法器
蓝猫_虹
博客等级 码龄12年 49粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值