8086存储器
8086对存储器和io端口的编址方式

8086是intel公司推出的一款16位微处理器,它采用了20位位置区域总线,能够寻址1MB的内存空间。
在8086中,存储器和I/O端口的编址方式对于系统的设计和应用具有重要意义。
本文将围绕8086对存储器和I/O端口的编址方式展开深入探讨。
一、存储器的编址方式1. 实位置区域模式8086微处理器最初工作在实位置区域模式下,通过物理位置区域直接对存储器进行寻址。
在实位置区域模式下,8086可以访问的存储器空间为1MB,位置区域空间范围为0xxxx~0xFFFFF。
2. 分段位置区域模式为了克服实位置区域模式下1MB内存的局限性,8086引入了分段位置区域模式。
在分段位置区域模式下,8086通过段基址寄存器和偏移位置区域的组合来访问存储器,可以实现对更大容量的存储器进行访问。
3. 段基址寄存器在分段位置区域模式下,8086中的段基址寄存器包括CS(代码段寄存器)、DS(数据段寄存器)、ES(额外段寄存器)和SS(堆栈段寄存器),它们分别用来存放代码段、数据段、额外段和堆栈段的基址。
4. 偏移位置区域8086微处理器中,偏移位置区域用来表示段内的相对位置区域,它的范围为0~xxx。
5. 分段位置区域的形式在8086中,物理位置区域的计算方式为:物理位置区域=段基址×16+偏移位置区域。
通过这样的方式,8086可以实现对1MB范围内的存储器进行寻址。
二、 I/O端口的编址方式1. 端口编址方式8086微处理器通过端口编址方式来对I/O设备进行访问,I/O端口的位置区域空间范围为0~xxx。
2. IN指令和OUT指令8086微处理器提供了IN指令和OUT指令用于进行I/O端口的读写操作。
IN指令用于从指定端口读取数据,OUT指令用于向指定端口写入数据。
3. I/O端口位置区域的分配在8086系统中,I/O端口位置区域的分配由外围设备的制造商进行规划,保证不同的外围设备具有不同的端口位置区域,从而避免了位置区域冲突。
8051与8086、8088的区别

8051与8086、8088的区别主要8051是8位,⽽8086和8088是16位,所以汇编时会在书写⽅⾯不⼀样,那就要注意算法了,但只要掌握好8051就很快可以过度到16位机以下是⼀些概括性的资料:(是复制粘贴的)8086是intel的CPU,地球上⽣产CPU的不只intel还有motorola.随着⼈类的进步cpu也不断发展。
8086发育得越来越丰满了,也就是以后的/80286/80386/80486/奔腾/p2/p3/p4.8051是单⽚机,是⼀种计算机了,实际上8051内除有CPU外,内部还包括RAM、ROM、定时器、等,只是她⽐PC机⼩得多,⽤处也不⼀样⽽已。
为什么说8051系列呢?8051是intel发明的技术,它有⾃⼰的这种技术的产品--MCS-51。
MCS-51系列单8086/8088微处理器8086是Inter系列的16位微处理器,芯⽚上有2.9万个晶体管,采⽤ HMOS⼯艺制造,⽤单⼀的+5V电源,为5MHz~10MHz。
8086有16根数据线和20根地址线,它既能处理16位数据,也能处理8位数据。
可寻址的内存空间为1MB.Inter公司在推出8086的同时,还推出了⼀种准16位微处理器8088,8088的内部寄存器,运算部件及内部数据总线都是按16位设计的,单外部数据总线只有8条。
推出8086的主要⽬的是为了与当时已有的⼀套Inter接⼝芯⽚直接兼容使⽤。
8086与8088在1.3.1 8086/8088的寄存器结构图1-3⽰出了8086/8088的寄存器结构1. 数据寄存器数据寄存器为图中最上边所⽰的4个寄存器AX,BX,CX,DX。
这些寄存器⽤以暂时保存计算过程中所得到的操作数及结果。
他能处理16位数,也能处理8位数,当处理8位数时,这4个16位寄存器作为8个8为寄存器AH,AL,BH,BL,CH,CL,DH,DL来使⽤。
这4个数据寄存器除了作为通⽤寄存器以外,还有各⾃的专门⽤途:AX(accumulator)做累加器⽤,是算术运算的主要寄存器。
8086对存储器和io端口的编址方式 -回复

8086对存储器和io端口的编址方式-回复8086微处理器是Intel公司于1979年推出的一款16位微处理器,广泛应用于个人电脑和工业控制系统等领域。
在8086中,存储器和I/O端口被分别编址,下面将一步一步回答关于8086对存储器和I/O端口的编址方式的问题。
一、存储器的编址方式:8086微处理器使用20位地址总线,整个寻址空间范围为1MB(2^20)。
这种编址方式称为“段:偏移”地址形式。
1. 段选择器:在8086中,用于选择段的寄存器有CS(Code Segment, 代码段)、DS (Data Segment, 数据段)、SS(Stack Segment, 栈段)和ES(Extra Segment, 附加段)。
这些寄存器的值是16位的,用于存储存储器段的起始地址,偏移地址的计算需要与这些寄存器的值相结合。
2. 偏移地址:8086通过16位的偏移地址来表示存储器中的特定字节。
偏移地址可以是由程序员指定的常数,也可以是由程序中的地址计算得出的。
3. 存储器地址计算:8086微处理器将段选择器的值左移4位(乘以16),加上偏移地址的值。
例如,当使用DS和SI寄存器来指定一个存储器地址时,计算公式为:物理地址= DS * 16 + SI二、I/O端口的编址方式:8086微处理器使用16位地址总线寻址I/O端口。
I/O端口被视为存储器中的特殊地址,可以访问外部设备。
1. I/O端口地址空间:8086将I/O端口地址空间映射到存储器地址空间的一部分,称为I/O端口地址空间。
I/O端口地址空间的范围为0x0000到0xFFFF,共有65536个端口地址。
2. IN指令:IN指令用于从指定的I/O端口读取数据。
它需要提供一个8位或16位的端口地址。
IN指令执行时,8086将相应的端口地址发送给外部设备,然后接收来自该设备的数据。
例如,以下指令从I/O端口0x01 读取数据:IN AL, 0x013. OUT指令:OUT指令用于向指定的I/O端口写入数据。
寄存器结构、存储器管理

08
例: MOV AX, [BX+03H]
CX——Count可以作计数寄存器使用。 在循环LOOP指令和串处理指令中用作隐含计数器。 例: MOV CX , 200H AGAIN: …… …… LOOP AGAIN ;(CX)-1(CX),结果0转AGAIN DX——Data可以作为数据寄存器使用。 一般在双字长乘除法运算时, 把DX和AX组合在一起存放一个双字长(32位)数,DX用来存放高16位; 对某些I/O操作DX可用来存放I/O的端口地址(口地址 256)。 例: MUL BX ; (AX)(BX)(DX)(AX) 例: IN AL , DX
奇偶标志PF(Parity Flag)
若算术运算的结果有溢出,则OF=1;
否则 OF=0
3AH + 7CH=B6H,产生溢出:OF=1 AAH + 7CH=(1)26H,没有溢出:OF=0
溢出标志OF(Overflow Flag)
3AH+7CH=B6H,就是58+124=182,
什么是溢出
处理器内部以补码表示有符号数 8位表达的整数范围是:+127 ~ -128 16位表达的范围是:+32767 ~ -32768 如果运算结果超出这个范围,就产生了溢出 有溢出,说明有符号数的运算结果不正确
01
AX——(Accumulator)作为累加器。
02
它是算术运算的主要寄存器,
03
所有I/O指令都使用这一寄存器与外部设备交换数据。
04
例: IN AL , 20H
05
OUT 30H , AX
06
BX——Base用作基址寄存器使用。
07
在计算内存储器地址时,经常用来存放基址。
0
8086_8088 存储器分段概念

存储器分段的原因在此之前,我假设大家都理解存储地址以及大端小端的概念。
如上图所示为存储器的示意图。
那么为什么要引入分段的概念。
其实,8086/8088引入存储器的分段是有原因的。
我们都知道8086/8088 CPU有20根地址线,这样可以直接寻址的物理地址空间为1M字节(存储单元以字节为单位),范围是00000H至FFFFFH。
但是我在前一节介绍中说到8086/8088 CPU的寄存器都是16位,那么在传输地址时显然一次只能传输16位有效地址,也就是只足够访问64K字节地址空间。
为了实现寻址1M字节物理空间,8086/8088引入了分段的概念。
存储器分段的概念所谓分段,就是可以根据需要把1M字节地址空间划分为若干逻辑段。
每个逻辑段必须满足如下两个条件:1. 逻辑段的开始地址必须是16的倍数,因为段寄存器长为16位;2. 逻辑段的最大长度为64K,因为指针寄存器长为16位。
那么1M字节地址空间最多可划分成64K个逻辑段,最少也要划分成16个逻辑段。
逻辑段与逻辑段可以相连,也可以不相连,还可以部分重叠。
这种存储器分段的方法不仅有利于实现寻址1M字节空间,而且也十分有利于对1M字节存储空间的管理。
如下图所示为存储器逻辑段的一种划分。
存储地址形成要访问某个存储单元,根据我们划分的逻辑段,计算存储单元的地址与所在段的起始地址的差值,称段内偏移(简称偏移)。
在整个1M地址空间中,存储单元的物理地址等于段起始地址加上段内偏移。
物理地址计算公式如下所示:物理地址 = 段值 * 10H + 段内偏移举个例子:用16进制表示的逻辑地址1234:3456H所对应的存储单元的物理地址为12340H+3456H=15796H。
其中,段值由段寄存器给出,段内偏移可由指令指针IP、堆栈指针SP和其他可作为存储器指针使用的存储器(SI、DI、BX和BP)给出,段内偏移还可以直接用16位数给出。
段寄存器的使用当然,段寄存器的使用也是有规定的。
8086正常的存储器读写总线周期

8086正常的存储器读写总线周期Intel 8086存储器读写总线周期是Intel 8086微处理器中重要的总线周期,这是控制处理器与存储器之间通信的一种技术。
Intel 8086微处理器拥有一个称为总线的设备,它可以供处理器、存储器、输入/输出设备和其他设备之间进行通信。
Intel 8086存储器读写总线周期是指在Intel 8086微处理器中,处理器通过总线从存储器中读取或存储数据的一系列操作。
它通常由以下几个步骤组成:首先,处理器会向总线发出一个"地址"信号,这个信号指示处理器想要访问的存储器的地址。
当存储器接收到地址信号时,它会向处理器发出一个"应答"信号,表明它已经准备好接受处理器的命令。
其次,处理器会向总线发出一个"读取"或"写入"信号,这个信号表明处理器希望从存储器中读取数据还是向存储器写入数据。
紧接着,处理器会发出一个"数据"信号,表明它想要从存储器读取的数据或想要写入存储器的数据。
当存储器收到数据信号时,它会返回一个"应答"信号,表明它已经处理完毕。
最后,处理器会发出一个"结束"信号,表明它已经完成了读取数据或写入数据的操作。
当存储器收到结束信号时,它会返回一个"应答"信号,表明它已经完成了读取/写入操作。
Intel 8086存储器读写总线周期确保了处理器与存储器之间的高效通信。
它可以使得处理器能够更快地从存储器中读取或存储数据,从而提高系统的性能。
另外,它还可以有效地管理处理器和存储器之间的数据流,从而避免数据冲突。
总之,Intel 8086存储器读写总线周期是Intel 8086微处理器中重要的总线周期,它可以确保处理器与存储器之间的高效通信,从而有效提高系统的性能。
chap-(5)
思考题:
8086/8088CPU在响应外界中断请求后,需要 进入中断响应周期,分析该周期有什么特点?
8086的中断响应要用两个总线周期。如果在前一个总 线周期中,CPU接收到外界的中断请求信号,而中断允许标 志IF正好为1,并且正好一条指令执行完毕,那么,CPU会 在当前总线周期和下一个总线周期中,从 INTA引腿上往外 设接口各发一个负脉冲。这两个负脉冲都将从T2一直维持 到T4状态开始。外设接口收到第二个负脉冲以后,立即把 中断类型码送到数据总线的低8位D7~D0上,通过CPU的地址 /数据引腿AD7~AD0传输给CPU。这两个总线周期的其余时间 , AD7~AD0是浮空的。
D15~D0 D15~D8 D7~D0
A19~A1 A0 BHE
SEL A19~A1
高8位奇库
SEL A19~A1
低8位偶库
512K * 8 D15~D8
D15~D8 D7~D0
512K * 8 D7~D0
8086与存储器连接
2.2.3
8086CPU的存储器组织
二、8086存储器的奇偶库结构
• 分别从奇偶库中读取一个字节,该当如何?
2.2.3
8086CPU的存储器组织
一、存储器的标准结构——存储器单元结构
数据段
• 8086CPU 一次可访问16位
0200 0201 0202 0203
0204 0205 0206
0 1 4 9 16 25 36
数据,即两个存储单元;
• 通常,多个字节的数据存
放规则是:
高位在高端
低位在低端
2.2.3
2.3
8086CPU的总线操作时序
二、存储器的读周期时序
例:MOV AL,[1001H] ;M/IO=1
8086CPU结构介绍及基础知识
分段管理的特点: ①起始点可浮动; ②可分开或重叠; ③实际地址由段地址、段内偏移地址组成; ④段首地址必须能被16整除
• 2、物理地址的形成
逻辑地址:存储器的任一个逻辑地址由段基址和偏移地址组成,程序设计时采 用。
•
段基址:偏移地址
物理地址:存储器的绝对地址,从00000~FFFFFH,它是由逻辑地址变换而来。
二、8086CPU的内部结构 8086CPU内部按功能可分为两部分: 1、BIU(总线接口部件) 功能:地址形成、取指令、指令排队、
读/写操作数、总线控制 2、EU(执行部件) 功能:指令译码、指令执行
组成部件见下页图
8086CPU的内部组成
执行单元(EU)
总线接口单元(BIU)
1、BIU ①段寄存器
例2-2
• 将5394H与-777FH两数相加,并说明其标志位状态
•
0101 0011 1001 0100
•+
1000 1000 1000 0001
•
1101 1100 0001 0101
• 运算结果:-23EBH
• 标志位:CF=0,DF=0,AF=0
•
ZF=0,SF=1,OF=0
控制标志位的名称和定义如下:
三寄存器结构目的变址寄存器destinationindexsidibpspax累加器accumulatorbx基数寄存器basecx计数寄存器countdx数据寄存器dataahbhchdhalblcldlipflagsdsessscs数据段寄存器datasegment附加段寄存器extrasegment堆栈段寄存器stacksegment代码段寄存器codesegment标志寄存器flags指令指针寄存器instructionpointer变址寄存器段寄存器控制寄存器通用寄存器源变址寄存器sourceindex基址指针寄存器basepointer堆栈指针寄存器stackpointer指针寄存器数据寄存器8086cpu寄存器组1通用寄存器组?常用来存放参与运算的操作数或运算结果?特殊用途见p25表212指针和变址寄存器?可作通用寄存器存放一般操作数或运算结果?作指针和变址寄存器用于存放某段地址偏移量3段寄存器?用于存放逻辑段的段基地址4指令指针和标志位寄存器?ip存放下一条指令在现行代码段中的偏移地址由biu自动修改
8086cpu的组成
8086CPU的组成8086CPU是一种早期的微处理器,用于计算机的中央处理单元(CPU)。
它由多个组件组成,包括逻辑单元、寄存器、内存控制器、输入/输出单元等。
以下是对8086CPU组成的详细描述:1. 逻辑单元:8086CPU的逻辑单元包括各种控制单元和调度单元,用于处理指令、数据和内存访问请求。
这些逻辑单元负责协调各个组件之间的操作,确保CPU能够高效地执行任务。
2. 寄存器:8086CPU使用多个寄存器来存储数据和处理指令。
这些寄存器用于临时存储数据、操作数和结果,并支持CPU执行各种操作。
3. 内存控制器:8086CPU的内存控制器负责与主存储器(如RAM)进行通信,以快速访问数据和指令。
内存控制器通过内部总线与逻辑单元和其他组件进行交互,确保数据传输的效率和准确性。
4. 输入/输出单元:8086CPU的输入/输出单元负责与外部设备进行通信。
这些设备包括显示器、键盘、鼠标、硬盘驱动器等。
输入/输出单元通过接口与外部设备连接,并处理与它们的通信和数据传输。
5. 时钟和电源管理:8086CPU需要一个时钟信号来控制其操作速度。
时钟信号的频率决定了CPU的执行速度。
此外,8086CPU还具有电源管理功能,以确保各个组件在需要时获得适当的电源,并在不需要时关闭以节省能源。
总的来说,8086CPU由多个组件组成,这些组件协同工作以实现高效的计算任务。
它具有强大的逻辑单元、寄存器、内存控制器和输入/输出单元,以及时钟和电源管理功能,使其成为早期计算机系统的重要组成部分。
这些组件的组合和协同工作,使得8086CPU能够处理复杂的指令和数据,并支持计算机系统的正常运行。
8086微处理器存取原则
8086微处理器存取原则
8086微处理器是一种16位微处理器,其存取原则包括以下几个方面:
1. 存储器的字节寻址能力,8086微处理器具有16位的数据总线和20位的地址总线,因此可以寻址的内存空间为2的20次方,即1MB。
它可以直接访问1MB的内存空间,这为当时来说是非常大的一个数字。
2. 存储器的字节和字寻址,8086微处理器可以以字节(8位)或字(16位)为单位进行存取。
它可以以字节为单位或者以字为单位进行寻址,这种灵活的寻址方式为程序员编写程序提供了便利。
3. 存储器的奇偶地址存取,8086微处理器的存储器奇偶地址存取是指它可以以字为单位存取数据,但是在存取字时,它要求字的起始地址必须是偶数。
如果字的起始地址为奇数,8086会进行两次内存访问,将两个奇地址的字节合并成一个字。
这种存取方式称为奇偶地址存取。
4. 存储器的段地址和偏移地址,8086微处理器采用段地址和
偏移地址的方式来访问内存。
它通过将一个16位的段地址左移4位再加上一个16位的偏移地址来得到20位的物理地址。
这种寻址方式可以方便地访问1MB的内存空间。
总的来说,8086微处理器的存取原则包括了对存储器的大小、存取单位、奇偶地址存取和段地址偏移地址寻址方式的规定,这些原则为程序员编写程序提供了灵活和方便的条件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8086存储器的偶体存储器与奇体存储器在8088系统中,8088 C P U有8根数据线,存储器一个基本单元(字节)也是8根数据线,存储器8位数据线与8088C P U的8位数据线对应连接,见下图 2.18所示:
图 2.188088存储器系统
在8086系统中,8086C P U有16根数据线,而存储器
一个基本单元(字节)有8根数据线,因此,存储器数据线与8086C P U数据线连接的方法,就与8088系统不同。
通常采用将存储器系统分为偶体存储器和奇体存储器与8086C P U相连的方法。
按照8086C P U的规定,偶地址单元的数据在数据线低8位上传输,奇地址单元的数据在高8位数据线上传输。
我们可以把1M字节存储器空间分成两个512K字节的存储体:一个存储体包含全部偶数地址的单元,叫偶体存储器;另一个存储体包含全部奇数地址单元,叫奇体存储器。
偶
体存储器的8根数据线连接到系统数据总线低8位上,地
址线最低位用作偶体存储器的选择信号。
奇体存储器的
8根数据线连接到系统数据总线高8位上,8086引腿用来作为奇体存储器的选择信号。
如下图 2.19。
图 2.198086存储器系统
8086访问存储器的操作有以下4种情况:
1、8086C P U访问偶地址的字节单元时,C P U输出=0,选中偶体存储器,数据在数据总线的低8位上传输,需要一个总线周期完成。
2、8086C P U访问奇地址字节单元时,C P U输出=1、
=0,选中奇体存储器,数据在数据总线的高8位上传输,也只需要一个总线周期完成。
3、8086C P U访问偶地址开始的一个字单元时,该字单元由2个连续的字节单元组成。
其中地址较低的一个字节必定来自偶体存储器,另一个地址较高的字节必定来自奇
体存储器。
此时C P U输出=0、=0,偶体存储器和奇体存储器同时被选中,数据在数据总线的低8位和高8位上同时传输。
因此,对所有位于偶地址的字单元的访问,8086只需一个总线周期就能完成。
4、8086C P U访问奇地址开始的一个字单元的操作和上面3中的情况不同。
该字单元也是由2个连续的字节单元组成,其中地址较低的一个字节来自奇体存储器,另一个地址较高的字节来自偶体存储器。
此时8086需要花两个总
线周期才能完成访问操作。
第一个总线周期,C P U输出
=1、=0,奇体存储器被选中,奇体存储器中低字节数据在数据总线的高8位上传输。
第二个总线周期,C P U
输出=0、=1,偶体存储器被选中,偶体存储器中高字节数据在数据总线的低8位上传输。
上面4种操作中和的组合见表 2.4
表 2.4和的组合与8086操作的关系。