精华内容
下载资源
问答
  • 并行从动端口
    千次阅读
    2021-08-06 02:13:34

    一、TCP连接与端口

    web服务器只开启了一个端口,他是如何为多用户服务的?

    问题描述

    不同主机之间通讯,必须依赖套接字,而端口号是套接字的标识(开始是这样认为的),那么假设web服务器进程,开启了80端口号(即监听80端口号),接着客户端浏览器,打开任意端口,发起TCP连接请求,服务器80端口监听到请求,建立TCP连接,最后通过客户端套接字和服务器套接字进行通信,那么其他用户怎么办? 80端口也被占用,改如何建立TCP连接?现实中大家发送http请求好像都可以使用一样的端口,如80。

    问题解决

    首先,明确几点:

    1、TCP套接字的唯一标识是一个四元组(源IP地址,源端口号,目的IP地址,目的端口号)

    2、TCP创建连接,会进行“三次握手”,

    我们这里暂且把TCP建立连接的报文段称为:称为TCP连接

    把TCP承载请求数据的报文段称为:TCP请求

    客户端浏览器和web服务器的通信过程是这样的:

    在建立连接阶段:

    浏览器进程打开任意端口,所有的浏览器都是将TCP连接报文,发送给服务器进程监听的端口(如:80),服务器接受到请求,为每个请求创建新的套接字(依据请求报文的源ip,源端口号和自己的ip、端口号)

    在发送http请求阶段:

    此时连接已经建立,承载了 Http请求信息的TCP请求报文会发送到对应的套接字

    因此: 多个不同的套接字可以拥有相同的目的端口号80,由于源ip或端口号不同,TCP套接字就可以唯一标识,通信就可以进行。

    同时,一个端口号只能被一个进程所监听

    举一反三:其实所有使用TCP的应用程序对的通信都是一样的,分为建立连接和发送数据阶段。

    在建立连接时,对于 客户端TCP套接字还没有形成,服务器端进程也是如此,它只是监听80端口而已,把所有目的端口号为80的TCP报文段统统接收,然后去处理,即建立套接字,为套接字分配处理进程。当连接建立时,对应着服务器、客户端套接字的形成,之后的通信,不会将TCP报文段在发送给监听80端口的服务器进程,而是发给与连接对应的套接字,它的目的端口号也是80,但他只是套接字的一部分。

    对于服务器进程也是不一样的:一个专门用于建立连接,它监听端口,创建用于连接的套接字

    一个专门用于处理请求,通过新建立的套接字发送和接收请求

    最好再次总结

    1.一个端口同一时间只能bind给一个SOCKET。就是同一时间一个端口只可能有一个监听线程

    2.为什么一个端口能建立多个TCP连接,同一个端口也就是说 server ip和server port 是不变的。那么只要[client ip 和 client port]不相同就可以了。能保证接唯一标识[server ip, server port, client ip, client port]的唯一性。

    端口号不是套接字的唯一标识。另外,UDP套接字是(目的ip地址,目的端口号),

    二、TCP端口(客户端-服务端)

    关于TCP服务器最大并发连接数有一种误解就是“因为端口号上限为65535,所以TCP服务器理论上的可承载的最大并发连接数也是65535”。

    先说结论:对于TCP服务端进程来说,他可以同时连接的客户端数量并不受限于可用端口号。并发连接数受限于linux可打开文件数,这个数是可以配置的,可以非常大,所以实际上受限于系统性能。

    从理论上说,端口号的作用是在网络连接中标识应用层的进程,服务端一般使用众所周知的端口号进行监听,客户端连接时系统自动分配端口号。一个服务端进程服务于n个客户远程进程,只需要能通过ip地址+端口号的组合把他们区分开即可,没有必要占用本机的其他端口号,客户端连接数增加并不会占用服务器端口号,因此端口号并不能限制并发连接数。当然一台机器上端口号数量的上限确实是65536个,因为tcp首部中使用16bit去存储端口号。所以如果说65536影响了连接数,只有一种可能,就是同一台客户端机子上开n个进程去连同一个服务端进程,因为客户端ip是同一个,为了区分出这些连接,只能使用客户端连接的端口号,那么服务端和一个客户端主机之间的tcp连接数理论上线确实是65536。但是,服务端可以连接n多客户端机子呢。

    实际上,确实有个限制端口号的配置,就是MaxUserPort,这实际上是一台主机向外连接使用端口数的限制,这个数也可以配置的,可能默认值才5000,实际上对于正常的服务器主机是够用的,因为你是等别人连接进来的,不是要去连接很多不同的其他主机的。当然你的服务器上可能跑了一些转发的服务,这样你就需要对外连接了,如果被限制在这个配置这儿了确实需要改。但是这个MaxUserPort确实和服务器可以承载的来自客户端的并发连接数没有关系。

    伴随这个误解的还有另外一个误解,就是accept之后产生的已连接套接字占用了新的端口。这个绝对是错误的,linux内核不会这么写的,因为完全没必要嘛。客户端连接上来之后产生的这个socket fd就是用来区分客户端的,里面会填上客户端的ip和端口作为发包用,来自客户端的包也会使用这个fd去读取。可以试试netstat -ano,然后起一个服务器看下,客户端连上来这后产生的套接字的服务端端口还是监听的端口。

    三、HTTP连接

    浏览器发送的请求是复用同一个连接吗?

    不一定。

    发的不同域名,肯定不复用。

    发的同域名。若第一个请求与第二个请求并行发送,不复用。

    发的同域名,并且是第一个请求完事了才发第二个请求。则看是否有 connection: keep-alive 请求头,没有则不复用。

    发的同域名,第一个请求完了后发第二个请求,有 connection: keep-alive 请求头。则复用同一个 TCP 连接。

    补充说明

    HTTP 1.1 里大概规范了几项提高性能的手段:

    持久连接 (keep-alive/persistent connection)

    并行连接

    Pipelining

    持久连接

    每一个请求都会重新建立一个 TCP 连接,一旦响应返回,就关闭连接。 而建立一个连接,则需要进行三次握手。HTTP 1.1 出了一个请求头 connection,默认 keep-alive,告诉服务器不关闭 TCP 连接。

    并行连接

    由于现代网页通常包含了复数个(>=10)资源,而按照默认设定,一个连接中的每一个请求必须等待收到响应后才能发送下一个请求,所以如果复数的资源请求全部在一个连接 one by one 发送给服务器显然会很慢,而为了弥补这一缺陷,浏览器通常会默认开启多个 TCP 连接,然后再根据每个连接的状态在其中依次发送数据请求,而且客户端有权任意关闭超发的连接。各个浏览器允许的并行连接数大致是这样的(From SO):

    Firefox 2: 2

    Firefox 3+: 6

    Opera 9.26: 4

    Opera 12: 6

    Safari 3: 4

    Safari 5: 6

    IE 7: 2

    IE 8: 6

    IE 10: 8

    Chrome: 6

    由于 TCP 协议本身有慢启动的特征,会随着时间调谐连接的最大速度,因此在现代浏览器中持久连接和并行连接通常是搭配在一起使用的—— 一方面由于持久连接的存在,每个 TCP 连接已经处于调谐后的状态,另一方面持久连接可以避免重新三次握手的开销。

    在 Chrome 中,页面初始并行加载一堆静态资源是会最大开 6 个 TCP 连接去并行运作,其后发 Ajax 请求则是复用之前的 TCP 连接。

    Pipelining

    按照 HTTP 1.1 的描述,还有种可以提升性能的方案是管道化,可以在一个 TCP 连接中并行执行多个请求并返回。

    因为这项技术比较复杂,如何能在一个 TCP 中有序的处理所接收到的包,并且不会乱序返回,这在早期没有规范,所以各大浏览器都没有支持此功能,形同鸡肋。

    关于 HTTP 2

    HTTP 2 为了性能做了不少努力,比如提供了规范以支持连接的多路复用。

    如前文所说,在同一个 TCP 连接里面同时发生两个请求响应就不是那么简单。而 HTTP 2 正是提供了这样的规范,可以给数据拆成包,并打上包的顺序标签以供 TCP 能正确认知接收的包的顺序。

    所以很多网络优化的知识已经过时

    因为“所有的 HTTP 2.0 的请求都在一个 TCP 链接上”,“资源合并减少请求”,比如 CSS Sprites ,多个 JS 文件、CSS 文件合并等手段没有效果,或者说没有必要。

    因为“多路复用”,采用“cdn1.cn,cdn2.cn,cdn3.cn,打开多个 TCP 会话,突破浏览器对同一域名的链接数的限制”的手段是没有必要的。因为因为资源都是并行交错发送,且没有限制,不需要额外的多域名并行下载。

    因为“服务器推送”,内嵌资源(如base64的图片)的优化手段也变得没有意义了。而且使用服务器推送的资源的方式更加高效,因为客户端还可以缓存起来,甚至可以由不同的页面共享(依旧遵循同源策略)

    更多相关内容
  • 端口RAM 内存直接映象 高速并行传输 DLL动态链接在集散型控制系统中,一般将计算机或工控机用于终端图文显示,数据采集处理以及机对话接口等方面。计算机或工控机与外部设备需要建立数据传输的通讯联系。但大量...
  • 4.7.2 全端口通信 4.8 小结 4.9 书目评注 习题 第5章 并行程序的解析建模 5.1 并行程序中的开销来源 5.2 并行系统的性能度量 5.2.1 执行时间 5.2.2 总并行开销 5.2.3 加速比 5.2.4 效率 5.2.5 成本 5.3 ...
  • 文章目录并行接口的特点并行接口电路结构形式可编程并行接口芯片82C55A82C55A外部特性内部结构82C55A的端口地址82C55A的编程命令82C55A的0方式及其应用例题: 并行打印机接口设计例题:步进电机控制接口设计实验:...

    并行接口的特点

    1. 在多根数据线上以字节、字、双字宽度在接口与I/O设备间传输数据,速率较快。
    2. 除数据线外,还可设置握手联络信号线,易于实现异步互锁协议,提高数据传输的可靠性。
    3. 一般不作差错检验和传输速率控制。
    4. 并行传送信息,不要求固定的格式,这与串行传送的数据格式的要求不同。

    并行接口电路结构形式

    1. 采用非可编程IC芯片
    2. 采用可编程并行接口芯片
    3. 采用PLD/FPGA器件

    可编程并行接口芯片82C55A

    通用型、功能强、成本低

    82C55A外部特性

    外部特性

    • 面向系统总线的信号线
    • 面向I/O设备的信号线
    1. 与面向系统总线信号线
    • 数据线D0~D7:三态双向,用于CPU向82C55A发送命令、数据和8255A向CPU回送状态、数据等。
    • 地址线A1、A0:芯片内部端口地址寻址。形成四个端口地址。
    • CS:片选信号,低电平有效
    • 控制线RD、WR:读、写信号,低电平有效
    • RESET:复位信号,高电平有效。它清除控制寄存器并将8255A的A,B,C三个端口均为0方式输入;状态寄存器被复位,并且屏蔽中断请求。
    1. 面向I/O设备的信号线
    • PA0~PA7:端口A的输入、输出线
    • PB0~PB7:端口B的输入、输出线
    • PC0~PC7:端口C的输入、输出线

    (1)A口和B口只作为输入/输出的数据口用
    (2)C口除了作数据口外,在1方式和2方式时,它的大部分引脚被分配用作专用联络信号;PC口可以进行按位控制;当读取82C55A状态时,PC口又作1、2方式的状态口用

    内部结构

    内部结构

    1. 数据总线缓冲器。是一个三态双向8位缓冲器,它是82C55A与CPU系统数据总线的接口。
    2. 读/写控制逻辑。读/写控制逻辑由读信号RD、写信号WR、选片信号CS以及端口选择信号A1,A0等组成。
    3. 输入/输出端口PA,PC和PC。82C55A包括3个8位输入/输出端口。每个端口都有一个数据输入寄存器和一个数据输出寄存器
    4. A组和B组控制电路。控制A,B和C三个端口的工作方式。两个控制电路分别控制:A组和C组的高4位;B组和C组的低4位。

    82C55A的端口地址

    1. 作为PC微机系统的系统资源:分配给82C55A的端口地址是PA是60H,PB是61H,PC是62H,命令和状态口是63H。
    2. 作为用户扩展的接口:根据用户的需要确定。

    82C55A的编程命令

    82C55A有两个编程命令:(1)工作方式命令。(2)对C端口的按位操作(置位/复位)命令。

    1. 方式命令
      作用:指定82C55A的工作方式及其方式下3个并行端口(PA,PB,PC)的输入/输出功能。
      格式:其中最高位是特征位,一定要写1,其余各位定义如下:
    D7=1D6D5D4D3D2D1D0
    特征位D6,D5
    A组方式选择
    00=0方式
    01=1方式
    10=2方式
    11=不用
    A端口
    1=入
    0=出
    C端口高4位
    (PC4-PC7)
    1=入
    0=出
    B组方式选择
    1=1方式
    0=0方式
    B端口
    1=入
    0=出
    C端口低4位
    (PC0-PC3)
    1=入
    0=出

    工作方式命令

    例1:要把A口指定为1方式,输入,C口上半部为输出;B口指定为0方式,输出,C口下半部定为输入,则工作方式命令代码是:
    10110001B 或 B1H
    初始化程序段:

    MOV DX,303H    ;8255A命令口地址(假设)
    MOV AL,0B1H    ;初始化命令
    OUT DX,AL      ;送到命令口
    
    1. 按位置位/复位命令

      作用:指定PC口的某一位(某一个引脚)输出高电平或低电平。

      格式:最高位是特征位,一定要写0,其余各位的定义如下:

      D6-D4无效,D3-D1选择引脚,D0选择置位还是复位

    复位命令

    例2:若要把C口的PC2引脚置成高电平输出,则命令字应该为00000101B或05H。

    程序段:

    MOV  DX,303H    ;8255A命令口地址(假设)
        MOV  AL,05H     ;使PC2=1的命令字
        OUT  DX,AL      ;送到命令口
    

    如果要使引脚PC2输出低电位,则程序段为:

        MOV  DX,303H    ;8255A命令口地址(假设)
        MOV  AL,04H     ;使PC2=0的命令字
        OUT  DX,AL      ;送到命令口
    

    例3:利用8255A的PC7产生负脉冲,作打印机接口电路的数据选通信号,其程序段为:

    MOV  DX,303H           ;8255A命令口
        MOV  AL,00001110B      ;置PC7=0
        OUT  DX,AL
        NOP                     ;维持低电平
        NOP    
        MOV  AL,00001111B      ;置PC7=1
        OUT  DX,AL
    
    

    关于两个命令的使用

    1. 方式命令是对8255A的3个端口的工作方式及功能进行指定(即初始化),初始化工作要在使用8255A之前进行。
    2. 按位置位/复位命令只是对PC口的输出进行控制,使用它不破坏已经建立的3种工作方式,而是对它们实现动态控制的一种支持,它可放在初始化程序以后的任何地方。
    3. 两个命令的最高位(D7)都分配作了特征位,之所以要设置特征位,是为了识别两个不同的命令(写到同一地址)。
    4. 按位置位/复位命令代码只能写入命令口,而不能写到数据口(因为是命令)。

    A口和B口另一个有趣的使用方法
    A口、B口也可以按位输出高低电平,但它与C口的按位置位/复位命令有本质的差别,并且实现的方法也不同。A口、B口按位输出是以送数据到A口、B口来实现的。


    具体做法是:若要使用某一位置高电平,则先对端口进行读操作,然后“或”上一个字节,此字节中的对应位为1,其它各位为0,最后再送到同一端口。

    例4:若要使PA7位输出高/低电平,而其它位不变,则用下列程序段:

    1. 使PA7输出高电平
    MOV  DX,300H   ;PA数据口地址
    IN  AL,DX      ;读入A口原输出内容
    OR  AL,80H     ;使PA7=1
    OUT  DX,AL     ;输出PA7
    
    1. 使PA7输出低电平
    MOV DX,300H   ;A口地址
    IN  AL,DX     ;读入A口原输出内容
    AND AL,7FH    ;使PA7=0
    OUT DX,AL     ;输出PA7
    

    高电平或,低电平与

    计算

    82C55A的0方式及其应用

    0方式的特点

    1. 是一种基本输入/输出方式。通常不用联络信号,或不适用固定的联络信号。0方式适用于:
    • 无条件输入输出方式。
    • 查询输入输出方式:把A、B口作为8位数据的输入或输出口,C口的高/低4位分别定义为A、B口的控制位和状态位
    1. 两个8位(A和B)和两个4位(C高4位和低4位)并行口,都能被指定为输入或输出口用,共有16种不同的使用状态。
    2. 不设置专用联络信号线,需要联络时,可由用户任意指定C口中的哪一根线完成某种联络功能,这与1方式、2方式下设置固定的专用联络信号线不同。
    3. 是单向I/O,一次初始化只能指定端口(PA,PB和PC高四位和低四位)作输入或输出,不能指定端口同时既作输入又作输出。

    例题: 并行打印机接口设计

    1. 要求:为某应用系统配置一个并行打印机接口,CPU采用查询方式把存放在BUF缓冲区的256个字符(ASCII码)送去打印。
    2. 分析:打印机接口应按Centronics标准定义信号线和工作时序。Centronics 打印机接口是一种使用三线信号交换的8位平行连接线。

    并行接口工作时序图
    时序图

    采用查询方式时,打印机与CPU之间传送数据的过程是:

    1. 首先查询BUSY。若BUSY=1,打印机忙,则等待;若BUSY=0,打印机不忙,则送数据。

    2. 通过并行接口把数据送到数据线DATA1~DATA8上,此时数据并未送入打印机。

    3. 再送出一个数据选通信号STROBE,把数据打入到打印机的内部缓冲器中。

    4. 打印机在收到数据后,发出“忙”(BUSY=1)信号,表明打印机正在处理输入的数据。

    5. 当打印机处理完该数据,会送出一个回答信号ACK给主机,表示上一个字符已经处理完毕,准备接收下个数据。

    6. 设计: 接口包括硬件接口电路和软件驱动程序。

    打印机硬件接口电路
    按照Centronics标准,打印机接口信号应包括8根数据线(DATA1~8),1根控制线(STB),1根状态线(BUSY)和1根地线。
    选用PA口作数据口输出8位打印数据(工作在0方式),PC7(C口的上半区)作控制线(STB),PC2(C口的下半区)作状态线(BUSY)。

    82C55A并行打印机接口电路框图
    电路框图

    ② 接口驱动程序
    程序流程:
    流程图

    ③接口驱动程序

    CODE SEGMENT
    ASSUME  CS:CODE,DS:CODE
        ORG 100H
    START: 
        MOV  AX,CODE
        MOV  CS,AX
        MOV  DS,AX
        MOV  DX,303H      	;8255A命令口
        MOV  AL,10000001B 	;工作方式字
        OUT  DX,AL        	;A口0方式,输出, 
                           	;C4~C7 输出,C0~C3输入
        MOV  AL,00001111B 	;PC7位置高,使STB=1
        OUT  DX,AL
        MOV  SI,OFFSET BUF 	;打印字符的内存首址
       MOV  CX,OFFH       	;打印字符个数
    L:MOV  DX,302H       	;PC口地址
       IN  AL,DX          	;查BUSY=0?(PC2=0)
       AND  AL,00000100B                      
       JNZ  L       		      ;忙,则等待;
                                  不忙,则向A口送数
       MOV  DX,300H       	;PA口地址
       MOV  AL,[SI]       	;从内存取数
       OUT  DX,AL         	;送数据到A口
       MOV  DX,303H       	;8255A命令口
       MOV  AL,00001110B  	;置STB信号为低(PC7=0)
       OUT  DX,AL
        NOP		     	     ;负脉冲宽度(延时)
        NOP
        MOV  AL,00001111B	;置STB为高(PC7=1)
        OUT  DX,AL
        INC  SI           	;内存地址加1
        DEC  CX            ;字符数减1
        JNZ  L             ;未完,继续
        MOV  AX,4C00H     ;已完,退出
        INT  21H  
        BUF  DB  256个ASCII字符代码
    CODE ENDS
        END  START
    

    例题:步进电机控制接口设计

    1.分析

    (1)步进电机控制原理

    • 步进电机是将电脉冲信号转换成角位移的一种机电式数模转换器。
    • 步进电机旋转的角位移与输入脉冲的个数成正比。
    • 步进电机的转速与输入脉冲的频率成正比。
    • 步进电机的转动方向与输入脉冲对绕组加电的顺序有关。
    • 因此,步进电机旋转的角位移、转速以及方向均受到输入脉冲的控制。

    步进电机
    (2)运行方式与方向的控制
    步进电机的运行方式是指各相绕组循环轮流通电的方式。如四相步进电机有:
    单四拍:A→B→C→D
    双四拍:AB→BC→CD→DA
    单双八拍:AB→B→BC→C→CD→D→DA→A
    双八拍:AB→ABC→BC→BCD→CD→CDA→DA→DAB
    等几种方式。

    循环查表法:是将各绕组加电顺序的控制代码制成一张表----步进电机相序表,存放在内存区,再设置一个地址指针。
    相序表的建立,要考虑两个因素:
    ① 应根据步进电机运行方式的要求
    ② 步进电机的各相绕组与数据线连接的对应关系

    在这里插入图片描述

    (3)步进电机运行速度的控制------控制步进电机速度有两个途径:
    ① 用硬件改变输入脉冲的频率,通过对定时器(如:8253)定时常数的设定,使其升频、降频或恒频。
    ② 用软件延时或调用延时子程序。

    (4)步进电机的硬件驱动
    步进电机在系统中是一种执行元件,都要带负载,因此需要功率驱动。在电子仪器和设备中,一般所需功率较小,常采用达林顿复合管作功率驱动。

    2.设计
    包括硬件电路与软件编程两部分。

    (1)硬件设计

    • A口:输出,向步进电机发送相序码。
    • C口高4位(PC4):输出,控制74LS373开关,起隔离作用。
    • C口低4位(PC0和PC1):输入,分别与SW2和SW1连接,控制步进电机的启动和停止。按下SW1,则停止;按下SW2,则运行。


    (2)软件设计

    DATA SEGMENT
           PSTA DB 05H,15H,14H,54H,50H,51H,41H,45H  ;相序表
           MESSAGE DB ’ HIT SW2 TO START, HIT SW1 TO QUIT.’
                   DB 0DH,0AH,’$’                 ;提示信息
           CODE SEGMENT
              ASSUME CS:CODE, DS:DATA
    START: MOV AX, DATA
           MOV DS, AX
           MOV AH, 09H                         ;显示提示信息
           MOV DX,OFFSET MESSAGE
           INT 21H
           MOV  DX,303H	                   ;初始化82C55A
    	 MOV	AL,81H
    	 OUT	DX,AL
    	 MOV	AL,09H	 ;关闭74LS373,保护步进电机(置PC4=1)
    	 OUT	DX,AL
    L:	  MOV	DX,302H	   ;检测开关SW2是否按下(PC0=0?)
    	  IN	AL,DX
    	  AND	AL,01H
    	  JNZ	L		      ;未按SW2,等待
    	  MOV	DX,303H          ;已按SW2,启动步进电机
    	  MOV   AL, 08H         ;打开74LS373(置PC4=0)
    	  OUT	DX,AL
    RELOAD: MOV	SI,OFFSET PSTA	;设置相序表指针
    	  MOV	CX,8			;设置循环次数
    LOP:	  MOV	DX,300H		;送相序代码
    	  MOV	AL,[SI]
    	  OUT	DX,AL
    	  MOV	BX,0FFFFH		;延时
    DELAY:  DEC	BX
    	  JNZ	DELAY
    	MOV	DX,302H		;监测SW1是否按下(PC1=0?)
    	IN	AL,DX
    	AND	AL,02H
    	JZ	OVER			;已按SW1,则停止步进电机
    	INC	SI			;未按SW1,继续运行
    	DEC	CX
    	JNZ	LOP			;未到8次,继续八拍循环
    	JMP	RELOAD		;已到8次,重新赋值
    OVER: MOV	DX,303H      ;关闭74LS373(置PC4=1),保护电机
    	MOV	AL,09H
    	OUT	DX,AL
    	MOV	AH,4CH
    	INT	21H
    CODE  ENDS
          END START
    
    

    实验:控制七段数码管

    静态显示

    按图连接好电路,将8255的A口PA0~PA7分别与七段数码管的段码驱动输入端A~DP相连,位码驱动输入端S0接GND(选中),编程从键盘输入一位十进制数字(0~9),在七段数码管上显示出来。


    接线:
    8255/JP6(PA0—PA7) 接 数码管/JP3(A—DP)
    8255/CS 接 I/O 译码/Y1(288H—28FH)
    数码管/S0 接 GND

    程序:

    DATA    SEGMENT
    IO8255_A EQU 288H
    IO8255_k EQU 28BH
    LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
    MESG1 DB 0DH,0AH,'INPUT A NUM (0--9),OTHER KEY IS EXIT:',0DH,0AH,'$'
    DATA    ENDS
    CODE    SEGMENT
        ASSUME CS:CODE,DS:DATA
    START:  MOV AX,DATA
            MOV DS,AX
            MOV DX,IO8255_K               ;使8255的A口为输出方式
            MOV AX,80H
            OUT DX,AL
    SSS:    MOV DX,OFFSET MESG1    ;显示提示信息
            MOV AH,09H
            INT 21H
            MOV AH,01              ;从键盘接收字符
            INT 21H
            CMP AL,'0'                ;是否小于0
            JL EXIT                    ;若是则退出
            CMP AL,'9'                ;是否大于9
            JG  EXIT                    ;若是则退出
            SUB AL,30H              ;将所得字符的ASCII码减30H
            MOV BX,OFFSET LED      ;BX为数码表的起始地址
            XLAT                                       ;求出相应的段码
            MOV DX,IO8255_A        ;8255的A口输出
            OUT DX,AL
            JMP SSS                            ;转SSS
    EXIT:   MOV AX,4C00H               ;返回
            INT 21H
    CODE   ENDS
        END START
    

    动态显示

    按图连接好电路,将8255A口的PA0~PA7分别接数码管的段码驱动输入端A~DP;位码驱动输入端S0和S0分别接8255C口的PC0和PC1; 编程在两个数码管上循环显示“00-99”

    接线:
    8255/JP6(PA0—PA7) 接 数码管/JP3(A—DP)
    8255/CS 接 I/O 译码/Y1(288H—28FH)
    8255/PC0,PC1 接 数码管/S0,S1

    参考程序

    DATA            SEGMENT
    IO8255_A        EQU      288H
    IO8255_C        EQU      28AH
    IO8255_K        EQU      28BH
    LED             DB       3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;段码
    BUFFER1    DB       0,0         ;存放要显示的十位和个位
    BZ                DW       ?           ;位码
    DATA            ENDS
    CODE            SEGMENT
                      ASSUME CS:CODE,DS:DATA
    START:     MOV      AX,DATA
                      MOV      DS,AX
                      MOV      DX,IO8255_K                    ;8255设为A口输出
                      MOV      AL,80H
                      OUT      DX,AL
                      MOV      DI,OFFSET BUFFER1      ;设DI为显示缓冲区
    LOOP1:     MOV      CX,030H                            ;循环次数
    LOOP2:     MOV      BH,02
    LLL:       MOV      BYTE PTR BZ,BH
                    PUSH     DI
                    DEC       DI
                    ADD      DI,BZ
                    MOV      BL,[DI]                         ;BL为要显示的数
                    POP        DI
                    MOV      BH,0
                    MOV      SI,OFFSET LED           ;置LED数码表偏移地址为SI
                    ADD      SI,BX                              ;求出对应的LED数码
                    MOV      AL,BYTE PTR [SI]
                    MOV      DX,IO8255_A                ;8255A的口输出
                    OUT       DX,AL
                    MOV      AL,BYTE PTR BZ         ;使相应的数码管亮
                    MOV      DX,IO8255_C
                    OUT       DX,AL
                    PUSH     CX
                    MOV      CX,100                 
    DELAY:   LOOP     DELAY                           ;延时
                    POP      CX
                    MOV      AL,00H
                    OUT      DX,AL 
                    MOV      BH,BYTE PTR BZ
                    SHR      BH,0EH
                    JNZ      LLL
                    LOOP     LOOP2                         ;循环延时
                    MOV      AX,WORD PTR [DI]
                    CMP      AH,09
                    JNZ      SET
                    CMP      AL,09
                    JNZ      SET
                    MOV      AX,0000
                    MOV      [DI],AL
                    MOV      [DI+1],AH
                    JMP      LOOP1
    SET:        MOV      AH,01
                    INT      16H
                    JNE      EXIT                          ;有键按下则转EXIT
                    MOV      AX,WORD PTR [DI]
                    INC      AL
                    AAA
                    MOV     [DI],AL                     ;AL为十位
                    MOV     [DI+1],AH                ;AH中为个位
                    JMP     LOOP1
    EXIT:      MOV     DX,IO8255_A
                    MOV     AL,0                          ;关掉数码管显示
                    OUT     DX,AL
                    MOV     AX,4C00H                ; 返回
                    INT     21H
    CODE     ENDS
                    END     START
    程序似乎有错误
    
    展开全文
  • 文章目录一、I/O接口1-1 I/O接口的功能1-2 I/O端口及其寻址方式1-3 CPU与外设间的数据传送方式1-4 PC机的I/O地址分配二、8255A的工作原理2-1 8255A的结构和功能2-2 8255A的控制字2-2-1 方式选择控制字2-2-2 置位/...

    一、I/O接口

    1-1 I/O接口的功能

    (1)计算机与外设之间的信息交换问题

    • 速度不匹配
      CPU的速度很高,而外设的速度要低得多,而且不同的外设速度差异甚大
    • 信号电平不匹配
      CPU所使用的信号都是TTL电平,而外设大多是复杂的机电设备,往往不能为TTL电平所驱动,必须有自己的电源系统和信号电平。
    • 信号格式不匹配
      CPU系统总线上传送通常是8位,16位或32位的并行数据,而各种外设所使用的信息格式各不相同。有些设备上用的是模拟量,而有些人数字量或开关量;有些设备上的信息是电流量,而有些却是电压量,有些设备采用串行方式传送数据,而有些则用并行方式。
    • 时序不匹配
      各种外设都有自己的定时和控制逻辑,与计算机的CPU时序不一致,因此输入输出设备不能直接与CPU的系统总线相连,必须在CPU与外设之间设置专门的接口电路来解决这些问题。

    (2)接口的功能

    I/O接口电路是外设和计算机之间传送信息的交接部件,它使两者之间能很好的协调工作。每一个外设都要通过接口电路才能和主机相连。随着大规模集成电路技术的发展,出现了许多通用的可编程接口芯片,可用它们来方便地构成集合电路。

    • 设置数据缓冲的解决两者速度差异所带来的不协调问题
      事先把要传送的数据准备在那里,在需要的时刻完成传送,经常使用锁存器和缓冲器,并配以适当的联络信号来实现这种功能。
    • 设置信号电平转换电路
      计算机和外设间的串行通信可采用Max232和Max233的芯片来实现电平转换
    • 设置信息转换逻辑应满足对各自格式的要求
      模拟量必须经模数转换(A/D)变换成数字量后才能送到计算机去处理,而计算机算出的数字信号也必须经数模转换(D/A)变成模拟信号后才能驱动某些外设工作。
    • 设置时序控制电路来同步CPU和外设的工作
      接口电路,接收CPU送来的命令和控制信号,定时信号,实施对外设的控制与管理,外设的工作状态和应答信号也通过接口及时返回给CPU,以握手联络信号来保证主机和外部I/O口操作同实现同步。
    • 提供地址译码电路
      CPU要与多个外设打交道,一个外设往往要与CPU交换几种信息,一个外设接口中通常包含若干个端口,而在同一时刻,CPU只能用同一个端口交换信息。
      在接口电路中还有输入输出控制,读写控制及中断控制等逻辑

    1-2 I/O端口及其寻址方式

    (1)I/O端口

    • 数据端口
      数据端口用来存放外设送往CPU的数据,以及CPU要输出到外设存的数据,这些数据是主机和外设之间交换的最基本的信息,长度为1~2字节。数据端口主要写数据缓冲的作用。
    • 状态端口
      主要用来指示外设的当前状态
      ▶ \blacktriangleright 准备就绪位
      如果是输入端口,该位为1,表明端口的数据寄存器已准备好数据,等待CPU来读取,当数据被取走后,该为清为零。
      ▶ \blacktriangleright 忙碌位
      用来表明输出设备是否能接受数据,若该位为1表示外设正在进行输出数据传送操作,暂时不允许CPU送新的数据过来。
      ▶ \blacktriangleright 错误位
      如奇偶校验错、溢出错等
    • 命令端口
      命令端口也称为控制端口,它用来存放CPU向接口发出的各种命令和控制字,常见的命令信息有启动位,停止位,允许中断位等。

    通常,CPU与外设交换的数据是以字节为单位进行的,因此一个外设的数据端口含有8位,而状态口和命令口可以只包含一位或几位信息,所以不同外设的状态口允许只用一个端口,命令口也可共用,D触发器和三态缓冲器常用来构成这两种端口。

    (2)I/O端口的寻址方法

    • 存储器映像寻址方式
      ▶ \blacktriangleright 若把系统中的每一个I/О端口都看作一个存储单元,并与存储单元一样统一编址,这样访问存储器的所有指令均可用来访问I/О端口,不用设置专门的I/O指令,这种寻址方式称为存储器映象的I/O寻址方式( Memory Mapped 1/O)。
      ▶ \blacktriangleright 其优点是微处理器的指令集中不必包含I/O操作指令,简化了指令系统的设计;能用类型多、功能强的访问存储器指令,对I/O设备进行方便、灵活的操作。缺点主要是I/O端口占用了存储单元的地址空间。
    • I/O单独编址方式
      ▶ \blacktriangleright 若对系统中的输入输出端口地址单独编址,构成-一个1/O空间,它们不占用存储空间。
      ▶ \blacktriangleright 这种寻址方式的优点是将输入输出指令和访问存储器的指令明显区分开,使程序清晰﹐可读性好;而且I/О指令长度短﹐执行的速度快。I/О端口不占用内存空间;1/О地址译码电路较简单。不足之处是CPU指令系统中必须有专门的IN和OUT指令,这些指令的功能没有访问存储器指令强;CPU还需提供能够区分访问内存和访问I/O的硬件引脚信号。
      ▶ \blacktriangleright 两种寻址方式各有利弊,一般要根据所用的CPU类型来确定I/O寻址方式。例如,对于Motorola公司的CPU,通常没有专门的IN和OUT指令,因此都采用存储器寻址方式编址,而对于8086/8088系统,习惯上都采用I/O寻址方式。

    1-3 CPU与外设间的数据传送方式

    (1)程序控制方式

    • 无条件传送方式
      ▶ \blacktriangleright 无条件传送方式也称为同步传送方式,主要用于对简单外设进行操作。
      ▶ \blacktriangleright 对于这类外设,在任何时刻均已准备好数据或处于接收数据状态,或者在某些固定时刻,它们处在数据就绪或准备接收状态,因此程序可以不必检查外设的状态,而在需要进行输人或输出操作时,直接执行输入输出指令。
      ▶ \blacktriangleright 所需要的硬件和软件都较少。

    • 条件传送
      ▶ \blacktriangleright 条件传送方式也称为查询式传送方式。一般情况下,当CPU用输人或输出指令与外设交换数据时,很难保证输入设备总是准备好了数据,或者输出设备已经处在可以接收数据的状态。为此,在开始传送前,必须先确认外设已处于准备传送数据的状态,才能进行传送,于是就提出了查询式传送方式。
      ▶ \blacktriangleright 接口电路包括状态口和输入数据口两部分。

    (2)中断方式

    • 用查询方式使CPU与外设交换数据时。CPU要不断读取状态位,CPU的利用率变得很低。
    • 采用中断方式后,CPU平时可以执行主程序,只有当输入设备将数据准备好了,或者输出端口的数据缓冲器已空时,才向CPU发中断请求。CPU响应中断后﹐暂停执行当前的程序,转去执行管理外设的中断服务程序。在中断服务程序中,用输入或输出指令在CPU和外设之间进行-次数据交换。等输人或输出操作完成之后,CPU又回去执行原来的程序。
      (3)DMA方式
    • 当CPU与高速I/O设备交换数据,或者与外设进行成组数据交换时,中断方式仍然显得太慢。
    • 为了解决这个问题,可采用一种称为DMA(Direct Memory Ac-cess)的传送方式,也就是直接存储器存取方式。
    • DMA方式也要利用系统的数据总线、地址总线和控制总线来传送数据。
    • CPU让出对于总线的控制权,用一种称为DMA 控制器的专用硬件接口电路来取代CPU,临时接管总线,控制外设和存储器之间直接进行高速的数据传送
    • 这种控制器能给出访问内存所需要的地址信息,并且能够自动修改地址指针,也能够设定和修改传送的字节数,还能够向存储器和外设发出相应的读/写控制信号。
    • 在 DMA传送结束后,它能释放总线,把对总线的控制权又交还给CPU。

    1-4 PC机的I/O地址分配

    • 在IBM PC/XT机中,中断控制、 DMA控制、动态RAM刷新、系统配置识别﹑键盘代码读取及扬声器发声等都是由可编程I/О接口芯片控制的。
    • 这些接口芯片包括:8259A中断控制器、8237A-5 DMA控制器、8255A-5并行接口芯片、8253-5计数器/定时器等。
    • 它们都安装在PC/XT机的系统板上,每块接口芯片都要使用I/О端口地址。
    • 在系统板上还有8个1/O扩展槽,也称为I/O通道。

    二、8255A的工作原理

    8255A是一种通用的可编程并行I/O接口芯片(Programmable Peripherial Interface,PPI),它是为Intel系列微处理器设计的配套电路,也可用于其它微处理器系统中。通过对它进行编程,芯片可工作于不同的工作方式。

    2-1 8255A的结构和功能


    (1)数据端口A、B和C

    • 8255A内部包含3个8位的输入输出端口A.B和C。
    • 各端口在结构和功能上有不同的特点:
      ▶ \blacktriangleright 端口A包含一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器,因此,A口作输入或输出时数据均能锁存。
      ▶ \blacktriangleright 端口B包含一个8位的数据输入/输出锁存器/缓冲器,一个8位的数据输入缓冲器。
      ▶ \blacktriangleright 端口C包含一个8位的数据输出锁存器/缓冲器,一个8位的数据输人缓冲器,无输入锁存功能,当它被分成两个4位端口时,每个端口有一个4位的输出锁存器。

    (2)A组和B组控制逻辑

    • 它们内部有控制寄存器,用来接收CPU送来的命令字,然后分别决定A组和B组的工作方式,或对端口C的每一位执行置位/复位等操作。
    • 8255A的端口A和端口C的上半部分( P C 7 ∼ P C 4 PC_7\sim PC_4 PC7PC4)由A组控制逻辑管理,端口B和端口C的下半部分( P C 3 PC_3 PC3~ P C 0 PC_0 PC0)由B组控制逻辑管理。

    (3)数据总线缓冲器

    • 这是一个双向三态的8位缓冲器,用作8255A和系统数据总线之间的接口。

    (4)读/写控制逻辑

    • 系统送到读/写控制逻辑的信号包括:
      ▶ \blacktriangleright RESET复位信号,高电平有效。该信号有效时,将8255A 控制寄存器内容都清0,并将所有的端口(A、B和C)都置成输入方式。
      ▶ \blacktriangleright C S ‾ \overline {CS} CS片选信号,低电平有效,由地址总线经I/О端口译码电路产生。只有当该信号有效时,CPU与8255A之间才能进行通信,也就是CPU可对8255A进行读/′写等操作。
      ▶ \blacktriangleright R D ‾ \overline {RD} RD读信号,低电平有效。当RD为低时,CPU可从8255A读取数据或状态信息。
      ▶ \blacktriangleright W R ‾ \overline {WR} WR写信号,低电平有效。当WR有效时,CPU可向8255A写入数据或控制字。
      ▶ \blacktriangleright A 1 A 0 A_1A_0 A1A0端口选择信号。在8255A 内部有3个数据端口(A、B、C)和一个控制字寄存器端口。当 A 1 A 0 A_1A_0 A1A0=00时,选中端口 A 1 A 0 A_1A_0 A1A0=01时,选中端口B; A 1 A 0 A_1A_0 A1A0=10时,选中端口C; A 1 A 0 A_1A_0 A1A0=11时,选中控制宇寄存器端口。
    • 如果8255A与8位数据总线的微机相连,只要将 A 1 A 0 A_1A_0 A1A0分别与地址总线的最低两位 A 1 A 0 A_1A_0 A1A0相连即可。
    • 如果系统采用的是8086 CPU,则数据总线为16位。CPU在传送数据时,总是将低8位数据送往偶地址端口,将高8位数据送到奇地址端口。
    • 芯片的数据线 D 1 ∼ D 0 D_1\sim D_0 D1D0接到系统数据总线的低8位,这样,CPU就要求芯片内部的各个端口都使用偶地址。
    • 地址总线中的 A 2 A 1 A_2A_1 A2A1实现端口选择,即将 A 2 A_2 A2连到8255A 的 A 1 A_1 A1引脚,而将 A 1 A_1 A1与8255A 的 A 0 A_0 A0引脚相连。

    2-2 8255A的控制字

    2-2-1 方式选择控制字

    • 方式0-基本输入输出方式;
      方式1-选通输入输出方式;
      方式2-双向总线I/O方式。

    2-2-2 置位/复位控制字

    2-3 8255A的工作方式和C口状态字

    2-3-1 方式0(必考)

    • 方式0称为基本输入输出(Basic Input/Output)方式,它适用于不需要用应答信号的简单输人输出场合。
    • 在这种方式下,A口和B口可作为8位的端口,C口的高4位和低4位可作为两个4位的端口。这4个端口中的任何一个既可作输人也可作输出,从而构成16种不同的输入输出组态。在实际应用时,C口的两半部分也可以合在一起,构成一个8位的端口。
    • 对于方式0,还规定输出信号可以被锁存,输入不能锁存。

    • D 6 D 5 D_6D_5 D6D5=00,选择A口工作于方式0; D 2 D_2 D2=0,选择B口工作于方式0; D 7 D_7 D7=1为标志位;余下的 D 4 D 3 D_4D_3 D4D3 D 1 D 0 D_1D_0 D1D0 这四位可以任意取0或取1,由此构成4个端口的16种不同组态。

    2-3-2 方式1

    (1)选通输入方式

    • S T B ‾ \overline{STB} STB 选通信号,低电平有效,由外部输入。
    • IBF 输入缓冲器满信号,高电平有效。
    • INTE 中断允许信号
    • INTR 中断请求信号
    • 工作过程:
      ①当外设把一个数据送到端口数据线 P A 7 ∼ P A 0 PA_7\sim PA_0 PA7PA0(对于A口)或 P B 7 ∼ P B 0 PB_7\sim PB_0 PB7PB0,(对于B口)后,就向8255A发出负脉冲选通信号STB,外设的输入数据锁存到8255A的输人锁存器中。
      ②选通信号发出后,经 t S B t_{SB} tSB时间, IBF有效,它作为对输入设备的回答信号,用于通知外设输人缓冲器已满,不要再送新的数据过来。
      ③选通信号结束后,经 t S I T t_{SIT} tSIT时间,若 S T B ‾ \overline{STB} STB、IBF和INTE三者同时为高电平,使 INTR有效。这个信号可向CPU发中断请求,CPU响应中断后,通过执行中断服务程序中的IN指令,使读信号 R D ‾ \overline{RD} RD有效(低电平)。
      ④读信号有效后,经 t R I T t_{RIT} tRIT时间后,使 INTR变低,清除中断。
      ⑤读信号结束后,数据已读人累加器,经 t R I B t_{RIB} tRIB时间,IBF变低,表示缓冲器已空,一次数据输入的过程结束,通知外设可以再送一个新的数据来。

    (2)选通输出方式

    2-3-3 方式2

    双向总线方式(Bidirectional Bus)。

    2-3-4 C口状态字

    当8255A工作于方式0时,C口各位作输入输出用。当它工作于方式1和方式2时,C口产生或接收与外设间的联络信号,这时,读取C口的内容可使编程人员测试或检查外设的状态,用输入指令对C口进行读操作就可读取C口的状态。

    展开全文
  • 可编程并行接口芯片8255

    千次阅读 2020-06-27 23:16:07
    并行接口 并行数据是指接口电路与外部设备之间的数据线宽度而言的,并行接口是一次CPU读写操作可传输多个二进制位的接口。 并行接口电路由并行接口芯片,逻辑控制和地址译码器等组成。 实现外设数据与CPU数据总线...

    并行接口

    • 并行数据是指接口电路与外部设备之间的数据线宽度而言的,并行接口是一次CPU读写操作可传输多个二进制位的接口。
    • 并行接口电路由并行接口芯片,逻辑控制和地址译码器等组成。
    • 实现外设数据与CPU数据总线数据的双向传送。

    并行接口特点

    • 相对于串行接口:速度快;信号线数目多, 成本高;传输距离短(因为线间相互干扰大)。
    • 并行接口需要设置握手信号线,以便进行数据传输控制。
    • 并行传送数据不要求固定的格式,这与串行传送的数据格式的要求不同。

    外部特性

    • 8255是通用的并行接口芯片,通过编程实现多种工作方式,满足不同应用需求
    • PA0~PA7:端口A的输入/输出线
    • PB0~PB7:端口B的输入/输出线
    • PC0~PC7:端口C的输入/输出线
    • 数据总线D0-D7,片选线CS#,读/写RD#、WR#,地址线A1、A0
    • RESET: 复位信号,高电平有效。它清除控制寄存器并将8255A的A、B、C三个端口均置为输入方式

    在这里插入图片描述

    内部结构

    通过图片说明可以很清晰地看见8255的内部结构。
    在这里插入图片描述

    寄存器结构

    8255A端口分配::8255A具有4个 端口地址,A、B口可以作为数据输入输出端口使用;C口除了做数据端口外,还可以用作状态口,用作按位控制;方式设置和C口用作按位控制。下表示8255的功能分配:

    基址+0端口A数据端口A数据
    基址+1端口B数据端口B数据
    基址+2端口C数据 / 状态字端口C数据
    基址+3控制字 / 置位复位命令字

    写入到[基地址+3]的控制寄存器——8255A控制字,按照最高位(D2)的不同有两种格式。
    (1)D7=1在这里插入图片描述
    例:将8255 PA口设定为0方式、输入口;PB口指定为0方式、输出口;PC口的高4位是输出口,PC口的低4位是输入口,则工作方式字是=91H,初始化的程序段为:

    MOV DX, 203H    ;8255A命令口地址
    MOV AL, 91H     ;1001 0001=91
    OUT DX, AL
    

    (2)D7=0(画×的地方默认为0)
    指定PC口的某一位(某一个引脚)输出高电平或低电平对应的是置位或复位。
    在这里插入图片描述

    工作方式

    方式0——简单I/O方式

    • 基本输入/输出工作方式。没有专用的联络信号,采用查询方式或无条件方式传送数据;需要CPU与外设联络时,可由用户指定C口中的某些线完成联络功能。
    • 三个8位并行端口PA、PB和PC (PC口可以作为两个4位并行口PC0 ~ 3和PC4 ~ 7),都能独立使用,指定作为输入或者输出口用。
    • 方式0是单向I/O数据传输方式,一次初始化只能指定端口(PA、PB和PC)作输入或输出,不能指定端口同时即作输入又作输出。

    方式1——选通方式

    • 1方式是一种选通输入/输出方式(应答方式)。有专用的联络信号线用于I/O设备和CPU进行联络,这种方式通常用于中断传送。
    • PA和PB为数据口,都可以工作在方式1,PC口配合工作
    • PC口的引脚分配作专用和固定的联络信号引脚,用户不能再指定其他用途
      在这里插入图片描述
      以A组为例进行图片讲解:
      在这里插入图片描述
      方式2——双向选通方式
    • 2方式是一种双向选通输入输出方式,将A口作为双向输入/输出口,C口的5根线(PC3-PC7)作为专用应答线。
    • A口为双向选通输入/输出或叫双向应答式输入/输出。初始化可指定PA口即作输入口又作输出口。
    • 设置专用的联络信号线和中断请求信号线,所以,在2方式下可采用中断方式和查询方式与CPU交换数据。
      在这里插入图片描述

    编程命令

    (1)D7=0为C端口置位/复位命令

    例:若要把C口的PC2引脚置成高电平输出,则命令字应该为00000101B或05H。将命令字写入命令寄存器。
    PC2引脚输出高电平,其程序段为:

    MOV DX,203H   ;8255A命令口地址
    MOV AL,05H    ;使PC2=1的命令字
    OUT DX,AL     ;送到命令口
    

    如果要使引脚PC2输出低电位,则程序段为:

    MOV DX,203H   ;8255A命令口地址
    MOV AL,04H    ;使PC2=0 的命令字
    OUT DX,AL    ;送到命令口
    

    (2)方式字和按位置位/复位编程命令

    • 方式字是对8255A的3个端口的工作方式及功能进行指定(即初始化),初始化工作要在使用8255A之前进行。
    • 按位置位/复位命令只是对PC口的输出进行控制,使用它不破坏已经建立的3种工作方式,而是对PC口实现动态控制的一种支持,它可放在初始化程序以后的任何地方。
    • 两个命令的最高位(D7)都分配作了特征位,之所以要设置特征位,是为了识别两个不同的命令(写到同一地址)。
    • 按位置位/复位的命令代码只能写入命令口(83H) , 而不能写到数据口,即对PC口的数据操作,需要对其数据寄存器地址(82H) 操作(基址为1000 0000=80)。
    展开全文
  • 端口扫描工具

    2014-12-23 22:06:44
    Nmap是一款针对大型网络的端口扫描工具,尽管它也适用于单机...Nmap同时支持性能和可靠性统计,例如:动态延时计算,数据包超时和转发,并行端口扫描,通过并行ping侦测下层主机。该版本需要Winpcap V2.1 以上支持。
  • 可编程并行通信接口8255A

    千次阅读 2020-11-21 11:47:52
    可编程并行通信接口8255A 8255A内部结构 1.数据端口A、B、C (1)端口A:一个8位输入锁存器,一个 8位输出锁存器/缓冲器;输入、输出时,数据均受到锁存。 (2)端口B:一个8位输入缓冲器,一个8位输出锁存器/缓冲...
  • 华为端口聚合和trunk区别?

    千次阅读 2020-12-30 01:22:32
    那里有图经常有网友问我端口聚合是指链路聚合还是VLAN trunking啊?为什么老师给他们讲的都是这个名称呢,是老师讲错了,还是书上有错。我学网络这么久了,也一直实际使用中在把这两个词混用,其实这完全不是一回事...
  • 硬件端口网络端口软件端口扩展资料公认端口(WellKnownPorts)注册端口(RegisteredPorts)动态和/或私有端口(Dynamicand/orPrivatePorts)代理服务器常用端口端口 遨游于网络世界,最常见的概念便是ip与端口 IP...
  • 服务器端口

    千次阅读 2020-04-10 11:41:00
    服务器端口
  • 【CTF】端口扫描教程

    千次阅读 2021-12-08 17:15:14
    熟练使用nmap常用参数对不同网络环境进行端口扫描,并通过扫描结果对目标进行分析。 预备知识 TCP与UDP TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层通信协议;UDP协议的全称是用户数据报协议,在...
  • 计算机“端口”是英文port的义译,可以认为是计算机与外界通讯交流的出口。其中硬件领域的端口又称接口,...按端口号可分为3大类第一类 公认端口(Well Known Ports):0到1023,它们紧密绑定(binding)于一些服务。...
  • 全文约1.5W字,大致阅读完约15分钟,包含主要知识点:Nmap命令详解、Masscan命令详解、python调用Nmap、python调用Masscan、端口运行服务识别、IPY库生成相关IP段,其中关键部位文字使用橙色重点标注。 Nmap功能 ...
  • TCP/UDP常见端口参考

    千次阅读 2020-12-25 17:07:59
    端口列表一览 端口号码 / 层 名称 注释 1 tcpmux TCP 端口服务多路复用 5 rje 远程作业入口 7 echo Echo 服务 9 discard 用于连接测试的空服务 11 systat 用于列举...
  • 并行计算、并行互连网络、访存模型、硬件架构
  • 端口

    千次阅读 2017-06-19 18:19:08
    端口可分为虚拟端口和物理端口,其中虚拟端口指计算机内部或交换机路由器内的端口,不可见。例如计算机中的80端口、21端口、23端口等。物理端口又称为接口,是可见端口,计算机背板的RJ45网口,交换机路由器集线器等...
  • 关于端口安全知识,我计划六部分说起:端口的基础知识、端口的使用查看、端口的打开关闭、端口的转发和映射、由端口分析恶意攻击以及常用的端口安全工具。有人问了,为什么要分为六部分?是向六学致敬也要开花吗?...
  • 并行计算机互连网络 系统互连和网络拓扑 看看一些网络架构和网络带宽的关系图,一般网络带宽越高,并行计算机的互连通信消耗的时间越少,当然还要综合考虑其他多方面因素! 一般系统互连可采用静态网络互连或动态...
  • 利用FPGA内部生成的双端口RAM作为DSP与上位机之间的缓冲区,同时采取串行转并行的策略,简化了系统的布线。在DSP上实现了直线与圆弧插补算法以及逆运动学的求解,并进行了仿真。仿真结果表明,系统能够按照预定轨迹...
  • 常见TCP/UDP端口号大全

    千次阅读 2020-09-10 20:42:28
    下面的表格中列举了包括在红帽企业 Linux 中的服务、守护进程、和程序所使用的最常见的通信端口。该列表还可以在 /etc/services 文件中找到。要查看由互联网号码分派局(IANA)制定的“著名的已注册动态端口”官方...
  • 端口汇总

    千次阅读 2017-07-11 12:02:32
    端口汇总欢迎指正!1 tcpmux TCP 端口服务多路复用 5 rje 远程作业入口 7 echo Echo 服务 9 discard 用于连接测试的空服务 11 systat 用于列举连接了的端口的系统状态 13 daytime 给请求主机发送日期和时间 17...
  • 【五】storm调优,调整并行

    千次阅读 2018-06-10 22:57:13
    一个supervisor启动几个worker的设置是修改storm.yaml配置文件,给supervisor.slots.ports添加几个端口。) 代码中配置: 修改之前的代码mian中的config部分 public static void main (String[] args){ try { ...
  • 完成端口模型的理解

    千次阅读 2019-03-21 16:01:03
    完成端口的优点 1. 我想只要是写过或者想要写C/S模式网络服务器端的朋友,都应该或多或少的听过完成端口的大名吧,完成端口会充分利用Windows内核来进行I/O的调度,是用于C/S通信模式中性能最好的网络通信模型,...
  • I/O接口和并行接口芯片8255A 本章主要内容: §6.1 I/O接口 6.1.1 I/O接口的功能 1. 采用I/O接口的必要性 计算机与外设之间交换数据、状态和控制命令的过程统称为通信(Communication)。 CPU与外设交换信息的过程,和...
  • 网络端口号汇总

    千次阅读 2018-06-02 20:47:36
    端口号的范围是1~65535。其中1~1024是被RFC 3232规定好了的,被称作“众所周知的端口”(Well Known Ports);1025~65535的端口被称为动态端口(Dynamic Ports),可用来建立与其它主机的会话,也可由用户...
  • 2.6 PSP并行从动端口 2.6.1 与PSP端口相关的寄存器 2.6.2 电路结构和工作原理 2.7 应用举例 思考题与练习题 第3章 定时器/计数器TMR1 3.1 定时器/计数器TMR1模块的特性 3.2 定时器/计数器TMR1模块相关的寄存器 3.3 ...
  • 计算机基础:各个端口的分类

    千次阅读 2020-02-26 15:45:03
    其中硬件端口又称为接口分为串行接口和并行接口两种。串行接口主要有USB、SATA和IDE等,平常使用的打印机接口就属于并行接口。软件端口一般指网络中面向连接服务和无连接服务的通信协议端口,是一种抽象的软件结构,...
  • Python 并行分布式框架 Celery

    千次阅读 2018-09-24 22:47:16
    对应关系如下图: 考察了一下,原来当初设计这个模式,主要就是用来处理并发问题的,而Celery就是一个用python写的并行分布式框架。 然后我接着去学习Celery Celery 是一个强大的 分布式任务队列 的 异步处理框架,...
  • 端口可分为虚拟端口和物理端口,其中虚拟端口指计算机内部或交换机路由器内的端口,不可见。例如计算机中的80端口、21端口、23端口等。物理端口又称为接口,是可见端口,计算机背板的RJ45网口,交换机路由器集线器等...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 43,075
精华内容 17,230
热门标签
关键字:

并行从动端口