第一章|nte8086/8088的基本结构 8086是16位字长的微处理器,8088的内部结构为16 位,外部数据总线8位,是准16位字长的微处理器,二者 指令系统相同,均具有20位地址线,寻址能力达到1MB空 180868088的功能结构 8086/8088微处理器由总线接口单元和执行单元组成。 总线接口单元BIU( Bus Interface Unit) 执行单元EU( Execution Unit) 协同完成执行内存中存放的指令序列。Gρ BIU和EU相互独立,可并行操作,构成指令流水线结构。 TI T2 BU取指令取指令取指令 EU等待执行执行执行 next
第一章 Intel 8086/8088的基本结构 8086是16位字长的微处理器,8088的内部结构为16 位,外部数据总线8位,是准16位字长的微处理器,二者 指令系统相同,均具有20位地址线,寻址能力达到1MB空 间。1.1 8086/8088的功能结构 BIU 和 EU 相互独立,可并行操作,构成指令流水线结构。 T1 取指令 取指令 取指令 …… 等待 执行 执 行 执行 …… BIU EU T2 T3 next 总线接口单元 BIU( Bus Interface Unit ) 执行单元 EU( Execution Unit ) 协同完成执行内存中存放的指令序列。Go 8086/8088微处理器由总线接口单元 和执行单元组成
存储器接口 BIU 地址加法器 C-BUS B- BUS 又带令波列 B、、s、D 和IP寄存器组 上U腔辋系统 A-BUS AX、BX、CX、DX、SP、 ALU BP、S和D寄存器组 程序状态字 寄存器 eanenaeddass090031 图11 图1.18086/8088的功能结构
图 1.1
128086/8088的寄存器结构 AH AL 14个16位寄存器,分为4类。 BH BL BX 数据寄存器 1)数据寄存器 CH CL CX 4个AX、BX、CX、DX DH DL DX 计算过程中的常用寄存器G 代码段寄存器 (2)段寄存器: D 数据段寄存器 4个_CS、DS、SS、ES 堆栈段寄存器 存放段起始地址G 附加段寄存器 3)指针与变址寄存 SP 堆栈指针寄存器 4个_SP、BP、SI、DI BP 基址指针寄存器 提供操作数的偏移地址G 源变址寄存器 目的变址寄存器 (4)控制寄存器: P、FR P 指令指针寄存器 提供指令的偏移地址 FRH FRL标志寄存器 保存条件码标志和控制标志G
1.2 8086/8088的寄存器结构 14个16位寄存器,分为4类。 (1)数据寄存器: 4个—AX、 BX、 CX、 DX 计算过程中的常用寄存器 G (2) 段寄存器: 4个—CS、 DS、 SS、 ES 存放段起始地址 G (3) 指针与变址寄存器: 4个—SP、 BP、 SI、 DI 提供操作数的偏移地址 G (4) 控制寄存器: 2个—IP、 FR 提供指令的偏移地址; 保存条件码标志和控制标志 G AX BX CX DX 数据寄存器 FRH AH BH CH DH AL BL CL DL SP BP SI DI IP FRL CS DS SS ES 代码段寄存器 数据段寄存器 堆栈段寄存器 附加段寄存器 堆栈指针寄存器 基址指针寄存器 源变址寄存器 目的变址寄存器 指令指针寄存器 标志寄存器 next
AX(累加器 Accumulator): 主要的算术运算寄存器,专用于:乘、除法运算、十进 制调整及I/O操作等操作。 BX(基址寄存器Base): 常用于存放存储区的起始地址。 CX(计数寄存器 Count) 常用作循环操作和字串处理的计数控制。 DX(数据寄存器Data): 常与AX联用,做双字乘、除法时,DX存放高位字,AX 存放低位字。此外在IO操作时提供外部设备接口的端口地址。 1615 DXⅩ AX 返回
AX(累加器 Accumulator): 主要的算术运算寄存器,专用于:乘、除法运算、十进 制调整及I/O操作等操作。 BX(基址寄存器 Base): 常用于存放存储区的起始地址。 CX(计数寄存器 Count): 常用作循环操作和字串处理的计数控制。 DX(数据寄存器 Data): 常与AX联用,做双字乘、除法时,DX存放高位字,AX 存放低位字。此外在I/O操作时提供外部设备接口的端口地址。 返回 DX AX 31 16 15 0
CS(代码段地址寄存器 Code Segment) 存放代码段的起始地址。代码段存放当前正在运行的程序 DS(数据段地址寄存器 Data Segment) 存放数据段的起始地址。数据段存放当前正运行的程序所用 的数据。 S(堆栈段地址寄存器 Stack Segment) 存放堆栈段的起始地址。堆栈段是定义堆栈的存储区。 ES(附加段地址寄存器 Extra Segment) 存放附加段的起始地址。附加段是附加的数据段,作为辅 助数据区存放当前正运行程序所用的数据。 返回
CS(代码段地址寄存器 Code Segment): 存放代码段的起始地址。代码段存放当前正在运行的程序 DS(数据段地址寄存器 Data Segment): 存放数据段的起始地址。数据段存放当前正运行的程序所用 的数据。 SS(堆栈段地址寄存器 Stack Segment): 存放堆栈段的起始地址。堆栈段是定义堆栈的存储区。 ES(附加段地址寄存器 Extra Segment): 存放附加段的起始地址。附加段是附加的数据段,作为辅 助数据区存放当前正运行程序所用的数据。 返回
SP(栈顶指针寄存器 Stack Pointer) SsS堆栈段 提供堆栈栈顶单元的偏移地址。与SS段寄存访问 器联用,控制数据进栈和出栈。 栈顶 BP(基址指针寄存器 Base pointer) 常用于提供堆栈内某个单元的偏移地址。与 SBP堆栈段 SS段寄存器联用,访问堆栈中的任一个存储 访问 栈内 单元。 SⅠ(源变址寄存器 Source index): 与DS段寄存器联用,可以访问数据段中的任 DSSI数据段 个存储单元。 访问 数据 DI(目的变址寄存器 Destination Index) 与ES段寄存器联用,可访问附加段中的任一个 存储单元。 ESDI附加段 访问 SI、D也常用于在字串操作中提供偏移地址,数据 并具有地址自动增量或减量的功能。返回
SP(栈顶指针寄存器 Stack Pointer): 提供堆栈栈顶单元的偏移地址。与SS段寄存 器联用,控制数据进栈和出栈。 SS:SP 堆栈段 访问 栈顶 SS:BP 堆栈段 访问 栈内 DS:SI 数据段 访问 数据 ES:DI 附加段 访问 数据 BP(基址指针寄存器 Base Pointer): 常用于提供堆栈内某个单元的偏移地址。与 SS段寄存器联用,访问堆栈中的任一个存储 单元。 SI(源变址寄存器 Source Index): 与DS段寄存器联用,可以访问数据段中的任 一个存储单元。 DI(目的变址寄存器 Destination Index): 与ES段寄存器联用,可访问附加段中的任一个 存储单元。 SI、DI也常用于在字串操作中提供偏移地址, 并具有地址自动增量或减量的功能。 返回
IP(指令指针寄存器 Instruction pointer) CSIP代码段 存放代码段中指令的偏移地址。在程序 访问 执行过程中,始终自动给出下一条要取的指指令 令的偏移地址。 IP与CS段寄存器联用,可以确定下一条 要取的指令的物理地址,因此P是很重要的 控制寄存器,用于控制程序的执行流程。 FR(标志寄存器 Flags Register): 用于存放反映处理器和运行程序执行结果状态的控制标 志和条件码标志 FR中共有9个标志位:6个条件码标志位,3个控制标志位
IP(指令指针寄存器 Instruction Pointer): 存放代码段中指令的偏移地址。在程序 执行过程中,始终自动给出下一条要取的指 令的偏移地址。 IP与CS段寄存器联用,可以确定下一条 要取的指令的物理地址,因此IP是很重要的 控制寄存器,用于控制程序的执行流程。 CS:IP 代码段 访问 指令 FR(标志寄存器 Flags Register): 用于存放反映处理器和运行程序执行结果状态的控制标 志和条件码标志。 FR中共有9个标志位:6个条件码标志位,3个控制标志位
1514131211109876543210 OF DF IF TF SF ZF AF PF CF FR寄存器 6个条件码标志位: OF一溢出标志:计算结果溢出时,OF=1,否则OF=0 SF一符号标志:计算结果小于0时,SF=1,否则SF=0 ZF一零标志:计算结果等于0时,ZF=1,否则ZF=0 CF—进位借位标志:最高有效位有进位或借位时,CF=1,否则CF=0 AF一辅助进位/借位标志,半字节进位借位标志76543210 PF—奇偶标志 00000011PF=1 00001011PF=0 3个控制标志位: DF—方向标志,控制串操作中的地址增减。DF=0,地址增;DF=1,地址减。 IF—中断标志,IF=1,开中断:IF=0,关中断 ⅣF—陷阱标志,TF=1,CPU单步方式下执行程序,TF=0,CPU正常工作
CF 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OF DF IF TF SF ZF AF PF FR寄存器 OF — 溢出标志:计算结果溢出时,OF=1,否则 OF=0。 SF — 符号标志:计算结果小于0时,SF=1,否则 SF=0。 ZF — 零标志:计算结果等于0时,ZF=1,否则 ZF=0。 CF — 进位/借位标志:最高有效位有进位或借位时,CF=1,否则 CF=0。 AF —辅助进位/借位标志,半字节进位/借位标志 PF — 奇偶标志 DF — 方向标志,控制串操作中的地址增减。DF=0,地址增;DF=1,地址减。 IF — 中断标志,IF=1,开中断;IF=0,关中断。 TF — 陷阱标志,TF=1,CPU单步方式下执行程序,TF=0,CPU正常工作。 3个控制标志位: 6个条件码标志位: 0 0 0 0 0 0 1 1 PF=1 0 0 0 0 1 0 1 1 PF=0 7 6 5 4 3 2 1 0 next
方向标志DF的控制作用 正向传送 数据段 附加段 ES: DI 低地址 DF=0 SBUF SI→03 DI DBUF 08 08 - DI 高地址 反向传送 数据段 附加段 DS: SI ES: DI 低地址 DF=1 SBUF ∈ DI DBUF DI 08 08<D 高地址 返回
SI DI DF=0 DS:SI ES:DI 低地址 高地址 SI DI SI DI 数据段 附加段 ... ... ... ... SI DI DS: DF=1 SI ES:DI 低地址 高地址 SI DI SI DI 数据段 附加段 ... ... ... ... 正向传送 反向传送 SBUF DBUF DBUF SBUF 方向标志DF的控制作用 返回 0 3 0 7 0 8 0 3 0 7 0 8 0 3 0 7 0 8 0 3 0 7 0 8
1.3堆栈与存储器结构 堆栈段 低地址 (1)堆栈 堆栈的固定端称为栈底在存储 器的高地址端,活动端称为栈顶, 数据的存取以先讲后出原则在栈顶P2→ B新栈顶 进行。SP栈顶指针寄存器始终保存 BH 堆 栈 栈顶地址,指向栈顶。 sP→扩 堆栈数据的存取必须以字为单位 展 方 PUSH BX 向 随着进栈数据的增多,堆栈从高地 栈底高地址 址向低地址方向扩展。 (2)存储器结构 在存储器中,最小的存储单位是字节,每个字节单元用一个无符号 二讲制数编地址,从0开始编址。书写存储单元地址时用士六讲制形式
1.3 堆栈与存储器结构 (1) 堆栈 堆栈的固定端称为栈底, 在存储 器的高地址端,活动端称为栈顶, 数据的存取以先进后出原则在栈顶 进行。SP栈顶指针寄存器始终保存 栈顶地址,指向栈顶。 堆栈数据的存取必须以字为单位 随着进栈数据的增多,堆栈从高地 址向低地址方向扩展。 SP 低地址 高地址 堆 栈 扩 展 方 向 (SP)-2 新栈顶 PUSH BX (2) 存储器结构 在存储器中,最小的存储单位是字节,每个字节单元用一个无符号 二进制数编地址,从0开始编址。书写存储单元地址时用十六进制形式。 ... 栈顶 栈底 堆栈段 BH BL