周鸣 上海师范大学信息与机电工程学院

Post on 13-Jan-2016

223 views 6 download

description

微机系统原理及应用. 周鸣 上海师范大学信息与机电工程学院. 第一章 概述. 从 8088 、 8086 到 80386 以上直至 奔腾 ,只有 16 位与 32 位的区分,没有本质区别。芯片的指令 80% 以上是完全相同的,芯片的实地址工作方式几乎完全一致,所以 8088 、 8086 是 Intel x 86 系列的基础,要学习 x86 系列的最好办法就是从 8088 、 8086 入手。 PC 机的存储器( M )容量很大,但基本存储单元的工作原理不变;存储器与 CPU 的接口原理、方法没有变。 本书从 8088 、 8086 入手学习 PC. 第一节 引言. - PowerPoint PPT Presentation

Transcript of 周鸣 上海师范大学信息与机电工程学院

周鸣上海师范大学信息与机电工程学院

第一章 概述

第一节 引言

从 8088 、 8086 到 80386 以上直至奔腾,只有 16位与 32 位的区分,没有本质区别。芯片的指令 80%以上是完全相同的,芯片的实地址工作方式几乎完全一致,所以 8088 、 8086 是 Intel x 86 系列的基础,要学习 x86 系列的最好办法就是从 8088 、 8086 入手。

PC 机的存储器( M )容量很大,但基本存储单元的工作原理不变;存储器与 CPU 的接口原理、方法没有变。

本书从 8088 、 8086 入手学习 PC

一、计算机中的数制 (一)二进制数的基本特点 1. 具有两个不同的数字符号,即 0 和 1 。 2. 逢二进位。 任意一个二进制数可以按“权”展开

i21n

mi iB

m2mB...121B

020

nB121

nB...1n21nB2

(B)

10(7.75)221121021221

2(111.11)

(二) 16 进制数 1. 0 至 9 和 A 至 F 。 2. 逢 16 进位。

① 16 进制数转化为 2 进制数。

② 2 进制数转换为 16 进制数。

1001

16 (50)162163(32)

i16 16D(D)

1n

mi i

16(3AB)

00113 10

1010A

11

1011B

2)110011101010( 16(3AB)

81000

70111

91001.

30011

E1110

B1011

10001

1BE3.978)(01111)0011.1001111011011(

16

2

二、二进制编码字符是用若干位二进制编码的组合表示字符、数,这称为二进制编码。

(一)二进制编码的十进制数( BCD ) 计算机的输入与输出是用十进制表示

(二)字母与字符的编码 ASCⅡ :实用标准信息交换码,用 7 位二 进制编码,可表示 128 个字符。 用一个字节来表示一个 ASCⅡ 字符 0 至 9 的 ASCⅡ 码为 30H 至 39H 大写字母 A 至 Z 的 ASCⅡ 码为 41H 至 5AH 小写字母 a 至 z 的 ASCⅡ 码为 61H 至 7AH

(三) 汉字的编码 这个字符集中的任何一个图形、符号及 汉字都是两个 7 位字节表示的 ( 每个字节的 最高位置为 0 )。

三、二进制的运算计算机可进行两种基本的算术运算:加法和减法。利用这两种方法就可以进行乘法、除法以及其它数值运算。

逻辑运算: 1. “ 与”运算 (AND) 3. “ 非”运算 (NOT)

2. “ 或”运算 (OR) 4. “ 异或”运算 (XNOT)

(一)二进制加法 它的运算规则如下: 0+0=0 例如: 0+1=1+0=1

1+1=0 进位 1

1+1+1=1 进位 1

(二)二进制减法 它的运算规则如下:

BABA

AA

BA

1100010111101

0-0=0 借位 1-1=0 例如: 1-0=1 0-1=1 借位

(三)二进制乘法 它的运算规则如下: 0*0=0 例如: 0*1=0

1*0=0

1*1=1

由于此乘法的重复性差 , 不便 于在机器中实现,现在下面 用另外两种方式将运算实现。

100111110010010111000100

110000111111

11111111

1101

1111

1. 被乘数左移法 乘数 被乘数 部分积 1101 1111

乘数最低位 11110 为 1, 把被乘数 加部分积 , 再 把被乘数左移 乘数为 0 ,不加, 111100 被乘数左移 同上 1111000 同上 n*n2n 位 2n 位加法器

111111110000

1100001111110001001011

1111001111

2. 部分积右移法 乘数 被乘数 部分积 1101 1111 乘数为 1, 加被乘 数部分积右移 0, 不加部分积 右移 1, 加被乘数部分 积右移 1, 加乘数右移

2 个 n*n乘积 2n 位 此种方法只需要 n 位加法器。

10111111111110000

00111100

011110001111

0111001

11100101111

110011

(四) 二进制的除法 例如:

四、带符号数的表示法 ( 一 ) 机器数与真值 数有正、有负 , 那么负数的符号是怎么表示的呢? 通常一个数的最高位为符号位 , 若字长为 8 位 , 则

000111

0

101

101

101

0111

101100011101

7D

为符号位。符号位用“ 0” 表示正,用“ 1” 表示负。 例如:

连用一个符号位在一起的一个数,称为机器数。 它的数值称为机器数的真值。在机器数中符号有三种 表示法:原码,反码和补码。 ( 二 ) 原码 正数的符号位用“ 0” 表示,负数的符号位用“ 1” 表示的 表示法称为原码。 例如: 符号值 数值 ( 三 ) 反码 正数的反码与其原码相同,负数的反码是它的正数按位

91210111101x

91210110101x

105x

105x

1x

0x

Y

Y

0011101

0011101

取反 ( 连同符号位 ) 而形成的。 例如:

注: 符号位 取反的部分

反码的特点: 1. “0” 有两种表示法 2. 8 位二进制反码所表示的数值范围为 +127-127 。 即 , 3. 当一个符号数由反码表示时,最高位为符号数。 当符号数为“ 0” 时,后面的七位为数值部分; 当符号数为“ 1” 时,后面的七位一定要把它们按位取反,

以 表示它的二进制值。

101111114

010000004

F

F

111111110

000000000

F

F

010000014Y

1)(2 1n 12 1n

( 四 ) 补码 : 正数的补码表示与原码相同; 负数的补码表示为它的反码,且在最后位(即最低位)加 1

所形成。 例如:

8 位带符号位的补码特点: 1. ;

2. 8 位二进制补码所表示值为 +127 -128 ; 3. 一个用补码表示的二进制数 当符号位为“ 0” 时,其余 7 位即为此数的真值;

当符号位为“ 1” 时,其真值为其余 7 位按位取反,且在最 低位处加 1 后最终所得的结果。 例如:

110011114

101111114

010000004

B

F

Y

000000000

111111110

000000000

B

F

Y

0000000000BB

N2N Yn

B

采用补码表示的目的在于可以把减法转换成加法。 补码的加法规则: ;

补码的减法规则: 。例如:

下面举一个钟表的例子:将钟从 10 点拨至 6 点有正拨、倒拨两种方式。既可倒拨 4 个小时,亦可顺拨 8 个小时。

10-4( 倒拨 )=10+8 (顺拨 ) 则 12 称为模。

BBBYXYX

BBBYXYX

011011111010100000100000010064

10[64][X]10][641064X

B

BBB

(10-4) 与 (10+8)对模 12 是同余的, -4 与 +8对模 12互补。将两者分别用二进制加、减法计算释例:

自然丢弃 一般说来,若 Z=nK+Y(n 为整数 ) ,则称 Z 与 Y对模 K互补,记为ZY 。

001101100000101001000000

0011011011111011001000000

第三节 计算机基础

第三节 计算机基础一、计算机的基本结构

二、名词术语 1. 位 (Bit)

位是计算机所能表示的最基本最小的数据单元,位就是一个 二进制位,有 0 、 1 两种状态。

2. 字 (Word) 和字长 字是计算机内部进行的数据处理的基本单位,每个字的位数

为字长。 3. 字节 (Byte)

1Byte=8Bit三、指令程序和指令系统 指令 : 计算机执行的各种操作的命令的形式写下来的方式。 一条指令对应着一种操作。它由两部分组成:操作码字段和 操作数字段。 操作码表示计算机所要执行的操作;操作数表示参加 操作的数的本身或操作数所在的地址。

指令的格式为

一地址 二地址

8088 指令的格式大多数为双操作指令。因为计算机只识别二进制数 , 所以计算机的指令系统中的所有指令都必须以二进制编码的形式来表示,这就是指令的机器码。例如 数据传送指令mov AL,7它的二进制机器码为 1011 0000 (mov AL,n) 0000 0111 ( n=7 )用助记符来表示操作码 , 用符号或符号地址来表示操作数地址的方式 称为汇编语言,它与机器指令是一一对应的。( 例如 Mov,Add,Jmp等指令 )当机器开始执行程序 ,给 PC 程序计数器赋以程序第一条指令所在的地址 ,然后每取出一个指令 ,PC 中的内容自动加 1 ,并指向下一条指令的地址 , 以保证指令顺序执行。值得注意的是只有在执行Jmp,Call,Interrupt 时 ,PC才转到所需要的地方。

操作码 操作数 ... 操作数 ...

四、模型机 ( 一 ) CPU 结构 (P18 如图 1-9 1-10) ( 二 ) 存储器

不同二进制数 地址 内容 00H

01H

DB FFHCPU控制 信号

注意:每一个存储单元的地址和这个地址中存放的内容是 完全不同等概念 ,千万不能混淆。

确定单元后就可以对这个单元的内容进行读或写的操作。 下面举例说明: 1. 读操作

地址译码器

00H 单元01H 单元

FFH 单元

控制器

.

.

将 04H 单元格中的内容读出送至 DR( 数据寄存器 ) 。 内容

AR 00H

04H

04H

FFH DB

地址译码器

00H 单元

1000 0100

FFH 单元

84H

控制器

2. 写操作 AR 内容 00H DR

10H FFH DB 写 ( 三 ) 执行过程 简单说来就是取指令加执行指令。当机器开始执行指令时 , 把第一条指令所在地址赋给 PC,然后就进入取指阶段 , 在取 指阶段从内存中读出的内容必为指令 , 由 DR 把它送至 IR,然 后由指令译码器译码。 开始执行将第一条指令的地址送 PC 取指读内存 ( 由 DR) IR ID 译码 PLA

地址译码器

00H

0010 0110

FFH26H

控制器

10H

取指的基本格式为

在一条指令执行完以后就可以立即执行下一条指令 , 减少了 CPU为等待的时间 ,提高了运行速度。8088CPU功能上分为 BIU 和 EU, 即分别是总线接口和执行单元。 它们可以重叠。举例:把两个十进制数 7 和 10 相加。 Mov AL, 7 Add AL,10 HLT 第一条指令 1001 0000(Mov AL, 7) 0000 0111 ( n=7 )

取指

取指取指

取指

取指

执行

执行

执行 执行

执行 …...

…...

…...

取指

等待

第二条指令 0000 0100 (ADD AL, n) 0000 1010 ( n=10 ) 第三条指令 1111 0100 ( HLT ) 三条指令 5 个字节。 将三条指令放入存储器,若是从 00H 开始的存储单元。 二进制 地址 ( 十进制数 ) 内容 0000 0000 00 mov AL,7 0000 0001 01 n=7 0000 0010 02 Add AL,7 0000 0011 03 n=10 0000 0100 04 HLT 取第一条指令 取立即数 取第二条指令 取第二条指令第二字节及执行指令的过程

五、软件

1011 0000

0000 0111

0000 10100000 0100

1111 0100

各种语言和它们汇编、编译、解释程序。 机器的监控管理程序 (Moniter),调试程序 系统软件 (Delug),故障检查 ,诊断程序。 程序库。 操作系统。 软件 应用软件 : 编制解决用户所碰到的各种实际问题的程序。

数据库及数据管理系统

由机器提供 , 为了使用和管理计算机

第四节 16 位 32 位微机的结构

二、 Intel 8088 的结构 CPU: 16 位微处理器

DB : 8条 AB : 20条 采用 40条引线封装 电源 +5V 1M 直接寻址

(一) 8088 的寄存器结构 寄存器:由多个触发器可以组成一个多位寄存器。 存储器:看作是一个寄存器堆,每个存储单元实际相当于一 个缓冲寄存器。(二) 8088 存储器 8088 有 20条地址总线 , 220=1M,( 210 =1K), 地址从 00000FFFFF 。 其寄存器为 16 位 ,8088对地址的运算只能是 16 位 ,寻址范围是 0000 FFFFH 。 1M 存储器以 64K 为范围分为若干段。 00000 , 00001 ,… . 0000E , 0000F ; 64K 个行 00010 , 00011 ,… . 0001E , 0001F ;

00020 , 00021 ,… . 0002E , 0002F ;

202

00000 , 00001 ,… . 0000E , 0000F ; 00010 , 00011 ,… . 0001E , 0001F ;

00020 , 00021 ,… . 0002E , 0002F ; 64K 个行 FFFF0, FFFF1, …. FFFFE, FFFFF

16 个列 00000H 由于它为小段的首地址 ,其低 4位一定为 0

00010H 段地址只取段起始地址高 16位。 64K 个 这样 ,每一个存储单元都有唯一的 20位地

段首地址 42230H 址 ,此地址称为该存储单元的物理地址。 42240H 0000 ( 左移 4 位 )

+

FFFE0H

FFFF0H

16 位段地址

16 位偏移地址

20 位物理地址计算方法

16 位段地址存放在段寄存器中,偏移量存放在 IP 、 SP 、 DI 、SI 、 BP( 基数 ) 中。当取指令时 CS 的地址 +IP 的 16 位偏移量 = 要取的指令的物理地址 当堆栈操作时 SS 的地址 +SP 的 16 位偏移量 =堆栈操作的 20 位物理地址 当涉及到操作数时 在不改变段寄存器在不改变段寄存器 DS 或 ES 地址 +16 位偏移量 的情况下的情况下 ,,寻址最寻址最大大 =操作数的 20 位物理地址 范围是范围是 64K64K 。。 64K 代码段 64K 堆栈段

64K 数据段 64K 附加数据段

CS

SS

DS

ES

三、 32 位微处理器内部结构

桶形移位器寄存器组ALU

32

运算部分

浮点运算单元( FPU)

浮点寄存器组

分段部件

分页部件线性地址

存储管理部分微指令

控制部分

控制与保护 部件

控制 ROM指令总线

指令译码

译码部分

代码流

24 位

指令预取部分

预取

2*16指令队列

32

物理地址高速缓冲存储

器20

高速缓存管理部件

8KBCache

128

线性地址总线32

数据总线64

32

总线接口部分

地址32

32 数据

32 数据

地址驱动器

写缓冲器 4*80

数据总线 收发器

控制总线

D0~D31 系统数据总线

系统控制总线

系统地址总线

A2~A31BE0~BE3

1. 总线接口单元: 产生三总线信号,进行存储器和 I/O 端口的

访问。

(一) 7 个功能块:

地址驱动器写缓冲器

数据总线收发器控制总线

系统地址总线A2~A31 、 BE0~BE3

D0~D31系统数据总线系统控制总线

地址 32 位数据 32 位数据 32 位

2. 高速缓冲存储器 (CPU 内部的Cache) : 存放从存储器中取出的最近要执行的指令和数据,这样 CPU 就只需从 Cache 中取指令,不必经常访问存储器了。地址

32 位高速缓存管理部件 8KBCache

数据

32 位

地址

32 位

128 预取指令

CPU

3. 指令预取部分: 32 字节的先进先出的队列,它从Cache 中取指令,供译码器译码。

预取 2*16指令队列

代码流24 位

指令译码

128Cache

4. 指令译码: 从指令预取队列中取指令机器码,翻译成微代码。

指令译码

指令总线

控制部分

指令预取队

列代码流24 位

微指令 运算部分

5. 控制器: 控制器采用微程序设计,根据指令译码器送来的信息产生微指令,对运算器、存储器管理部分……发出控制信号。

控制与保护 部件

控制 ROM

指令译码器

运算部分

存储管理部分

微指令

控制器

6. 运算器: 包括整数运算器和浮点运算器。

桶形移位器寄存器组

ALU

浮点运算单元( FPU)

浮点寄存器组

运算

7. 存储器管理部分: 包括分段管理和分页管理二部分。

分段部件

分页部件线性地址

存储器管理部分

(二)基本结构寄存器: 内部寄存器分为 4 类 :

基本结构寄存器浮点寄存器系统级寄存器调试测试寄存器

应用程序只能访问基本结构寄存器和浮点寄存器。 ( 我们只介绍基本结构寄存器 )

1. 通用寄存器 D31 D16 D15 D8 D7 D0 AH A X AL EAX BH B X BL EBX CH C X CL ECX DH D X DL EDX SI ESI DI EDI BP EBP 位序:左为高位,右为低位

AH 、 AL 是 AX 的高 / 低 8 位, AX 又是EAX 的低 16 位,设: EAX=12345678H

则: AX=5678H , AH=56H , AL=78H 反之,当 89HAH , 90HAL 后 则: AX=8990H , EAX=12348990H

汇编助记符 : 32 位寄存器的汇编助记符为 EAX ~ EDX 、 ESI 、 EDI 、 EBP

16 位寄存器的汇编助记符为 AX ~ DX 、 SI 、 DI 、 BP

8 位寄存器的汇编助记符为AH 、 AL 、 BH 、 BL 、 CH 、 CL 、 DH 、 DL

2. 段寄存器:

D15 D0

CS 代码段寄存器 SS 堆栈段寄存器 DS 数据段寄存器 ES 附加数据段 ( 附加段 ) 寄存器 FS 附加数据段 ( 附加段 ) 寄存器 GS 附加数据段 ( 附加段 ) 寄存器 

3. 指针寄存器 D31 D16 D15 D0

IP EIP SP ESP 

指令指针寄存器: 32 位称为 EIP ,低 16 位为 IP作用:存放指令单元的偏移地址

堆栈指针寄存器: 32 位称为 EIP ,低 16 位称为 SP作用:存放栈顶单元的偏移地址

4. 标志寄存器( F ): 为 32 位,存放两类标志 : 状态标志和控制标志。 D31 D16 D15 D0

( 详细内容在后继课程中介绍 ) 

四、 32 位微处理器的外部引脚

1. 数据线及控制信号 数据线: D63~D0 共 64 位 奇偶校验信号: DP7~DP0 , 每个字 节产生 1 个校验位 读校验错: PCHK

2. 地址线及控制信号A31~A3 :高 30 位地址线BE7~BE0 :字节允许信号(存储体选中信号)外围电路对 BE7~BE0 译码以产生 A2~A0 信号

3. 系统控制信号

时钟输入 CLK

可屏蔽中断请求 INTR

非屏蔽中断请求 NMI

系统复位信号 RESET

系统复位后,程序运行的地址为 : FFFFFFF0H

实模式 CS: F000H, IP: 0FFF0H

系统时钟

是微处理器内部与外部操作的同步时基信号,由时钟( CLK )输入信号来提供。

时钟周期:T 状态:就是指时钟周期

CLKT

M/IO : =1, 表明该总线周期 ,CPU 与存储器交换信息 =0, 表明该总线周期 ,CPU 与 I/O 接口交换信息W/R : =1, 表明该总线周期 ,CPU 进行写操作 =0, 表明该总线周期 ,CPU 进行读操作D/C : =1, 表明该总线周期 , 传输的是数据 =0, 表明该总线周期 , 传输的是指令代码 这三个信号的组合,决定了当前总线周期所要完成的操作。

4. 总线周期定义信号 ( 输出 )“ 周期”是一段时间CPU 通过总线与存储器、 I/O 交换一个数据所需要的时间称为总线周期。

5. 总线仲裁信号(1)HOLD :总线保持请求(输入)(2)HLDA :总线保持响应(输出)

AB

DB

CB

X86 DMAC 高速 I/O 接口HOLD

HLDA

系统中,除了 X86 之外,还有 DMAC ,通常情况下,由 X86 控制三总线,若系统与高速外设交换信息,则由 DMA 控制器来控制三总线。 首先,由 DMAC 发出“总线保持请求”, X86检测 HOLD 有效后,在当前总线周期结束后,与三总线脱离,处于“总线保持状态”,然后通过 HDLA向DMAC 发出总线保持响应信号,通知DMAC 接管三总线。①BREQ :总线请求 ( 输出 ) X86 控制三总线进行操作时 ,BREQ 一直有效。②BOFF :总线占用 ( 输入 ) 外电路使 BOFF 有效后, X86 在当前总线周期的当前时钟周期结束后,立即与三总线脱离。 这是外部电路强行占用总线的手段,它与 HOLD 的区别在于: BOFF无需得到 CPU 的响应。

五、 32 位微处理器的工作模式 (一)存储空间: 物理空间 (物理存储器地

址空间 ): 程序的运行空间 232=4G 物理 地址: 物 理 空 间

486 有 32条地址线,内存最大容量 4G 。这4G 字节称为物理存储器,每一单元的地址称为物理地址,其地址范围0000,0000H~FFFF,FFFFH 为物理存储空间。

虚拟空间 (虚拟存储器地址空间 ): 编程空间 虚拟存储器是一项硬件和软件结合的技术。 存储管理部件把主存 ( 物理存储器 ) 和辅存 (磁盘 )看作是一个整体,即虚拟存储器。 486 允许虚拟存储器容量最大为 246=64T ,即程序员可在此地址范围内编程,程序可大大超过物理空间。运行时,操作系统从虚拟空间取一部分程序载入物理存储器运行。当程序运行需要调用的程序和要访问的数据不在物理存储器时,操作系统再把那一部分调入物理存储器 .…… 数据的交换极快,程序察觉不到。

线性地址

实模式:存储空间仅分段,而不分页;保护模式:存储空间先分段,再分页。

线性空间:

当程序从虚拟空间调入物理空间时,要进行地址转换。分段部件首先把虚拟地址 ( 编程地址 )转换为线性地址 ,

☆ 如果不分页的话,线性地址就是物理地址;☆ 如果分页的话,则由分页部件把线性地址转换为物理地址。

虚拟地址不分页

物理地址分段部件 分页部件

I/O 地址空间与存储空间不重叠 CPU 有一条控制线 M/IO ,在硬件设计上

用 M/IO=1 ,参与存储器寻址,用 M/IO=0参与 I/O寻址。

从 PC/XT ~ Pentium ,基于 Intel 微处理器的系统机,实际上只使用低 10 位地址

线,寻址 210=1024 个 I/O 端口。

(二 ) I/O 空间 : 486 利用低 16位地址线访问 I/O端口,所以 I/O端口最多有 216=64K, I/O地址空间为 0000H~ FFFFH。注意: I/O地址空间不分段

一 . 实模式的特点:① 加电、复位之后, 486 自动工作在实模

式,系统在 DOS 管理下②在实模式下, 486 只能访问第一个 1M

内存 (00000H~FFFFFH)

486 有 2种工作模式 :实地址模式 ( 实模式 )保护虚拟地址模式 ( 保护模式 )

③ 存储管理部件对存储器只进行分段管理,没有分页功能,每一逻辑段的最大容量为 64K 。

④ 在实模式下,段寄存器中存放段基址。

二 . 保护模式的特点 : 486工作在保护模式下,才能真正发挥它的设计能力。①在保护模式下, 486支持多任务操作系统②在保护模式下, 486 可以访问 4G 物理存储空间③存储管理部件中,对存储器采用分段和分页管理

关于“虚拟存储”的概念: 存储管理部件把主存 ( 物理存储器 ) 和辅存

(磁盘 )看成一个整体。允许编程空间为246=64T ,即程序的体积可以大大超过物理存储空间。

操作系统基于存储管理部件,先把程序的一部分装入内存运行,当程序要访问的那一部分不在物理存储器的时候,再从磁盘调入,这种存储交换过程极快,用户是察觉不到的,于是用户可以放心的在 64T空间安排程序,仿佛计算机真有那么大的内存一样。

关于保护机制: 486 有一套复杂的保护机制,系统定义

了 4 个“特权级”。 操作系统的核心特权级最高,应用程序

的特权级最低。并规定,高级 别的程序可以访问同级或低级的数据段,反之则不行,应用程序只能访问自身的数据段。

保护模式下,段寄存器存放的不是段基址而是段选择符。

(三)虚拟 86模式 : 虚拟 86模式是保护模式下的一种特殊工作模式 ,可运行实模式程序。 在操作系统管理下 ,486可以分时地运行多个实模式程序 ( 因为 : 在虚拟 86模式下 ,486 认为段寄存器中存放的不是选择符而是段基址 !) 例如有 3 个任务 ,操作系统为每一个任务分配 1ms,每通过 1ms就发生一次任务切换 ,从 宏观上看系统是在执行多个任务 ,联机打印程序就使用“分时技术”。打印程序只能在 DOS环境下运行 , 占用系统 10%的时间。

(四)实模式下 ,物理地址的形成1.存储器的分段管理 : 486对存储器采用分段管理 ,一个单元的物理地址由两部分组成 ,写成 : 段基址∶偏移地址       

设某单元物理地址为12345H, 则 : 12345H= 1000H *24+ 2345H 段基址 偏移地址

逻辑地址 在一个逻辑段中 ,各单元的段基址是相同的。偏移地址是该单元相对于段首的地址偏移量

一个逻辑段 12345H

10000H

2.各逻辑段物理地址的形成 ( 以 16 位寻址为例 ):在实模式下 , 段寄存器存放相应逻辑段的段基址

代码段: CS*24+IP= 指令单元的物理地址一条指令的一个字节取出后, IP自动加 1 ,指向下一字节。堆栈段: SS*24+SP= 栈顶单元的物理地址数据段: DS*24+ 偏移地址 = 数据单元的物理地址

逻辑段 段基址存放在 偏移地址存放在 代码段 CS IP 堆栈段 SS SP 数据段 DS 根据不同的寻址方式 附加段 ES/FS/GS 选择 BX 、 SI 、 DI

3.段寄存器的初值CS 、 IP 的初值:由操作系统赋值

DS/ES/FS/GS 的初值:由程序员赋值。

SS 、 SP 的初值:①由程序员赋值 ②由操作系统自动赋值