2.2 存储器组织

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CS 4个通用寄存器: AX、BX、 DS CX、DX SS 输入/输出 4个专用寄存器: BP 、SP、 控制电路 ES SI、DI IP 外 1个标志寄存器 部 内部暂存器 算术逻辑单元:16 位加法器 总 线 执行部件控制系统: 接收从总线接口单元的指 令队列中取来的指令代码,译 1 2 3 4 8位 码和向 EU 内各有关部分发出 指令队列 时序命令信号,协调执行指令 规定的操作。
5CE5AH 5CE5BH 存储器 34H 12H
(5CE5AH)=1234H
14
练习
4. 一台微型计算机的字长为16位,地址 总线 16 位,如果采用字节编址,那么它 可以访问的最大存储空间是多少字节? 试用16进制数表示该机的地址范围。
解:216=64KB
0000H~0FFFFH
10000H
15
段首地址(20位) ××× ••• ××× 0000 60000H 60002H 00H 12H
段地址(16位) 物理地址=段地址×16+偏移地址 物理地址=段地址×10H+偏移地址
3
指令的地址固定由CS和IP决定:
例:开机或RESET后,( CS ) = FFFFH,( IP ) = 0。
故8088执行的第一条指令所在内存的物理地址为:
23
堆栈及堆栈操作
• 堆栈是用于暂时存放重要信息的特殊内存 区域。堆栈由SS指示堆栈段的开始,SP指 示偏移地址。 • 堆栈采用先进后出FILO(First In Last Out) 的操作原则。 • 对于8088,每当一个字数据压入堆栈,SP 减2,当从堆栈弹出一个字时SP加2。
24
变址寄存器(2个)
• SI(Source Index):源变址寄存器,存放源 操作数地址的偏移量; • DI(Destination Index ):目的变址寄存器,存 放目的操作数地址的偏移量; • 常用于指令的间接寻址或变址寻址。
SI、DI其段基址由段寄存器DS提供。
26
3.控制寄存器(2个)
• 系统中有两个16位控制寄存器:
20
数据寄存器(4个)
•它们又可分为8个8位寄存器,用来存放8位数据, 可以独立寻址,独立使用。即: –AX(Accumulator)累加器 AH,AL
• 8088含4个16位数据寄存器,AX、BX、CX、DX, 常用来存放16位的数据和地址。
–BX( Base)基数寄存器
–CX(Count)计数寄存器 –DX(Data)数据寄存器
BH,BL
CH,CL DH,DL
21
数据寄存器特有的习惯用法
• AX:累加器。多用于存放中间运算结果。使用频 度最高,用于算术、逻辑运算以及与外设传 送信息等;(Accumulator) • BX:基数寄存器。常用做存放存储器地址;( Base) • CX:计数寄存器。用于在循环或串操作指令中存 放循环次数或重复次数;(Count) • DX:数据寄存器。在32位乘除法运算时,存放高 16位数;在间接寻址的I/O指令中存放 I/O端 口地址。(Data)
12
练习
2. 给定一个存放数据的内存单元的偏移 地址是20C0H,(DS)=0C00EH,求出该 内存单元的物理地址。 物理地址=(DS)×10H + EA =0C00E0H+20C0H =0C21A0H
13
练习
3.某程序数据段中有两个字数据1234H和 5A6BH,若已知DS=5AA0H,它们的偏移地址 分别为245AH和3245H,试画出它们在存储器 中的存放情况。 物理地址: =(DS)×10H+EA =5AA00H+245AH =5CE5AH
•当往内存写一个字数据时,写入规则是:
低字节到低地址单元 ,高字节到高地址单元
例 : 将字数据2F1EH写入从01000H开始的内存单元
( 01000H ) = 2F1EH
同一地址既可看作字节单元地址, 又可看作字单元地址。
10
内存单元物理地址的几种表示方法:
PA = 21000H = 2000:1000 = DS:BX
由EU设置,反映ALU算术或逻辑运算结果的某些特征;
3个控制标志位(IF,TF,DF):用来控制微处理器
的某些操作,可以由指令设置。
15
12
11
10
9
8Biblioteka Baidu
7
6
5
4
3
2
1
0
OF DF IF TF SF ZF
AF
PF
CF
29
进位标志CF(Carry Flag)
• 当运算结果的最高有效位有进位(加 法)或借位(减法)时,进位标志置1, 即CF = 1;否则CF = 0。
PA = ( CS ) × 10H + ( IP )
= FFFF H × 10H + 0
= FFFF0H
4
[例]
• 已知CS=1055H,DS=250AH, ES=2EF0H,SS=8FF0H,DS 10550H 段有一操作数,其偏移地址为 0204H, 1)画出各段在内存中的分布; 250A0H 2EF00H 2)指出各段首地址; 3)该操作数的物理地址=?
段地址 偏移地址
8
逻辑地址——段地址:偏移地址
高地址
段尾
某逻辑段 64KB 某寻址单元 地址偏移量(xxxxH) 段首(xxxx0H)
低地址
9
2.3.3 内存单元内容的存放及表示
一个内存单元存放一个字节信息
( 01000H ) = 1EH
( 01001H ) = 2FH
内存 …... 01000H 1E 01001H 2F 01002H …...
16位
地址 加法 器
执行部件20位 (EU)
把EU的操作结果存储 标志寄存器 到指定的 M或I/O口。
执行部件(EU)
总线接口部件(BIU)
复习:8088的存储器组织
最大存储空间:00000H~FFFFFH (地址线20条) 分成若干个最大64KB的段(寄存器只有16位) 8088存储器组织:一个完整1MB存储体。
31
符号标志SF(Sign Flag)
• 运算结果最高位为1,SF = 1;否则SF = 0
3AH + 7CH=B6H,最高位D7=1:SF = 1 84H + 7CH=(1)00H,最高位D7=0:SF = 0
有符号数据用最高有效位表示数据的符号 所以,最高有效位就是符号标志的状态
32
奇偶标志PF(Parity Flag) • 当运算结果最低字节中“1”的个数为 零或偶数时,PF = 1;否则PF = 0
顺序执行程序时,CPU每取一个指令字节, IP自动加1,指向下一个要读取的字节,用户程 序不能使用该寄存器,它由BIU自动修改。
28
标志寄存器
• FLAGS (Flag Register) :标志寄存器
是一个16位寄存器,其中只有9位用作标志位。
6个状态标志位(CF,SF,AF,PF,OF,ZF):
3AH + 7CH=B6H,没有进位:CF = 0
AAH + 7CH=(1)26H,有进位:CF = 1
30
零标志ZF(Zero Flag) • 若运算结果为0,则ZF = 1; 否则ZF = 0
3AH + 7CH=B6H,结果不是零:ZF = 0 84H + 7CH=(1)00H,结果是零:ZF = 1
段寄存器
的 内 部 寄 存 器
控制寄存器
1. 4个16位段寄存器
用于存放逻辑段的段地址 CS:代码段寄存器
代码段用于存放指令代码
DS:数据段寄存器 ES:附加段寄存器
数据段和附加段用来存放操作数
SS:堆栈段寄存器
堆栈段用于存放返回地址, 保存寄存器内容,传递参数
19
2. 8个16位通用寄存器
数据寄存器(AX,BX,CX,DX) 指针寄存器(SP,BP) 变址寄存器(SI,DI)
解: 操作数的物理地址为: 250AH×10H + 0204H = 252A4H 地址252A4H = 0 0 1 0 0 1 0 1 0 0 1 0 1 0 1 0 0 1 0 0 B 8FF00H SS CS DS ES
20根地址线: A19 A17
A12
A0
5
各个逻辑段重叠的实例
6
各个逻辑段独立的实例
物理地址PA = 段起始地址 +
偏移地址
= ( 段寄存器 ) × 16 + 偏移地址
= ( 段寄存器 ) × 10H + 偏移地址
2
复习: 8088的存储器组织
• 段地址:只取段起始地址高16位值,存放于段寄存
器(CS、DS、ES、SS);
• 偏移地址:段内某内存单元物理地址相对段起始地址
的偏移值,通常来自于IP、SP、SI和DI中。
16
AH BH CH DH SI DI
AL BL CL DL
AX BX CX DX
累加器 Accumulator 基数寄存器 Base 计数寄存器 Count 数据寄存器 Data 变 址 寄存器
数 据 寄存器
BP SP DS ES SS CS IP PSW
源变址寄存器 Source Index 目的变址寄存器 Destination Index 基址指针寄存器 Base Point 堆栈指针寄存器 Stack Point
7
2.3.2 逻辑地址与物理地址
•逻辑地址的组成 •逻辑地址的来源
操作类型 默认段址 偏移地址 CS IP 取指令 SS SP 堆栈操作 SS BP间址 有效地址EA DS 存取变量 有效地址EA 物理地址计算 (CS)16d+(IP) (SS) 16d+(SP) (SS) 16d+EA (DS )16d+EA
练习:
5. 若某数据区的开始地址为A7F0H: 2B40H,则该数据区的首字单元和32个 字的末字单元的物理地址分别为多少?
[解答] : 数据区最后一个字的地址为:
首地址+(字数-1)×2
物理地址=(段地址×10H)+偏移地址 首地址=(0A7F0×10H)+2B40H = 0AAA40H 末地址= 0AAA40H +(20H-1)×2 =0AAA40H + 3EH = 0AAA7EH
通 用 寄 存 器
8088
指 针 寄存器
数据段寄存器 Data Segment 附加段寄存器 Extra Segment 堆栈段寄存器 Stack Segment 代码段寄存器 Code Segment 指令指针寄存器 Instruction Pointer 状态标志寄存器 Processor Status Word
3AH + 7CH=B6H=10110110B 结果中有5个1,是奇数:PF = 0 PF标志仅反映最低8位中“1”的个数是 偶或奇,即使是进行16位字操作
33
溢出标志OF(Overflow Flag) • 若算术运算的结果有溢出,OF=1; 否则 OF=0
3AH + 7CH=B6H,产生溢出:OF = 1 AAH + 7CH=(1)26H,没有溢出:OF = 0
复习:8088的内部结构
通用 从内存取指令送到指 寄存器 令队列; SP BP
SI CPU执行指令时,要 DI 配合执行部件从指定 16位 的内存单元或者端口 中取数据,将数据传 执行部分 控制电路 ALU 送给EU; CH DH CL DL
∑ BIU 功能:负责与 M、 功能:负责指令执行。 AH AL I/O 端口传送数据 。 BH BL 组成:
21000H 2000:1000H DS:BX 内存 …... 0Fh FFh 56h …...
用(
)表示内存单元的内容:
( 21000H ) = 0FH ( 2000:1001H ) = 0FFH ( DS:BX ) = 0FH
11
练习
1. 8088CPU中,若(DS)=6100H,则当 前数据段的起始地址是什么?末地址是什么? 段的起始地址: 61000H 段的末地址: 61000H + ( 10000H – 1 ) = 61000H + 0FFFFH = 70FFFH
指令指针寄存器(Instruction Point) 标志寄存器(Flag Register)或处理器状态 字(PSW)
27
指令指针IP(Instruction Point)
• IP:指令指针寄存器,其内容为下一条 要执行的指令的偏移地址 • 它与代码段寄存器CS联用,确定下一条 指令的物理地址 • 计算机通过CS : IP寄存器来控制指令序 列的执行流程
22
指针寄存器(2个)
• 指针寄存器用于寻址内存堆栈内的数据 • SP(Stack Point):堆栈指针寄存器,栈顶的偏移地址; • SP不能再用于其他目的,具有专用目的。
• BP(Base Point):基址指针寄存器。 • BP常用于访问内存时存放内存单元的偏移地址。 • SP和BP寄存器与SS段寄存器联合使用以确定堆栈段 中的存储单元地址
相关文档
最新文档