《微机原理A》 第四讲:微处理器的编程结构(二) 主讲老师:王克义
《微机原理A》 第四讲:微处理器的编程结构(二) 主讲老师:王克义
公 本讲主要内容 段寄存器 实模式下的存储器寻址 堆栈
• 段寄存器 • 实模式下的存储器寻址 • 堆栈 本讲主要内容
公 4.1段寄存器 微处理器寄存器集合中的另一组寄存器为16位的 段寄存器,用于与微处理器中的其他寄存器联合 生成存储器地址 对于同一个微处理器而言,段寄存器的功能在实 模式下和保护模式下是不相同的
4. 1 段寄存器 • 微处理器寄存器集合中的另一组寄存器为16位的 段寄存器,用于与微处理器中的其他寄存器联合 生成存储器地址。 • 对于同一个微处理器而言,段寄存器的功能在实 模式下和保护模式下是不相同的
公 1.代码段寄存器 CS(Code Segment):代码段是 个存储区域,用以保存微处理器使用的代码(程序 或过程)。代码段寄存器定义代码段的起始地址 在实模式下工作时,它定义一个64K字节存储器 段的起点; 在保护模式下工作时,它选择一个描述代码段起 始地址、长度及其他一些必要的属性信息(如可读、 可写或可被执行等)的描述符
1. 代码段寄存器CS(Code Segment):代码段是一 个存储区域,用以保存微处理器使用的代码(程序 或过程)。代码段寄存器定义代码段的起始地址。 • 在实模式下工作时,它定义一个64K字节存储器 段的起点; • 在保护模式下工作时,它选择一个描述代码段起 始地址、长度及其他一些必要的属性信息(如可读、 可写或可被执行等)的描述符
公 2数据段寄存器DS( Data Segment) 数据段是包含程序所使用的大部分数据的存储区。 ·与代码段寄存器CS类似,数据段寄存器DS用以 定义数据段的起始地址。 与代码段一样,对于8086~80286,数据段的长 度限制为64KB; 对于工作在保护模式下的80386及更高型号的微 处理器,数据段长度限制为4GB
2. 数据段寄存器DS(Data Segment): 数据段是包含程序所使用的大部分数据的存储区。 • 与代码段寄存器CS类似,数据段寄存器DS用以 定义数据段的起始地址。 • 与代码段一样,对于8086~80286,数据段的长 度限制为64KB; • 对于工作在保护模式下的80386及更高型号的微 处理器,数据段长度限制为4GB
公 3.附加段寄存器ES( Extra Segment) 附加段是为某些串操作指令存放目的操作数而附 加的一个数据段。 附加段寄存器ES用以定义附加段的起始地址。附 加段的长度限制与上述代码段及数据段的情况相
3. 附加段寄存器ES(Extra Segment): 附加段是为某些串操作指令存放目的操作数而附 加的一个数据段。 • 附加段寄存器ES用以定义附加段的起始地址。附 加段的长度限制与上述代码段及数据段的情况相 同
公 4.堆栈段寄存器SS( Stack Segment): 堆栈是存储器中的一个特殊存储区,用以暂时存 放程序运行中的一些数据和地址信息 ·堆栈段寄存器SS定义堆栈段的首地址。由堆栈段 寄存器SS和堆栈指针寄存器( ESP/SP)确定堆栈段 内的存取地址 ·另外,EBP/BP寄存器也可以寻址堆栈段内的数据。 5.段寄存器FS和GS: 这两个段寄存器仅对80386及更高型号微处理器 有效,以便程序访问相应的两个附加的存储器段
4. 堆栈段寄存器SS(Stack Segment): 堆栈是存储器中的一个特殊存储区,用以暂时存 放程序运行中的一些数据和地址信息。 • 堆栈段寄存器SS定义堆栈段的首地址。由堆栈段 寄存器SS和堆栈指针寄存器(ESP/SP)确定堆栈段 内的存取地址。 • 另外,EBP/BP寄存器也可以寻址堆栈段内的数据。 5. 段寄存器FS和GS: 这两个段寄存器仅对80386及更高型号微处理器 有效,以便程序访问相应的两个附加的存储器段
公 4.2实模式下的存储器寻址 1.实模式下的存储器地址空间 在实模式下存储器的地址空间为1M字节单元,其 地址范围为00000H~ FFFFFH。 实模式下的存储器地址空间被分为通用和专用两 种存储区 从地址00000H~003FFH这第一个1024个字节单 元是专用的。这个存储区为中断向量表区,专门 用来存放256个中断服务程序的入口地址(也称中 断向量),每个入口地址占4个字节单元
4.2 实模式下的存储器寻址 1. 实模式下的存储器地址空间 在实模式下存储器的地址空间为1M字节单元,其 地址范围为00000H~FFFFFH。 • 实模式下的存储器地址空间被分为通用和专用两 种存储区。 • 从地址00000H~003FFH这第一个1024个字节单 元是专用的。这个存储区为中断向量表区,专门 用来存放256个中断服务程序的入口地址(也称中 断向量),每个入口地址占4个字节单元
公 从地址FFFF0H~ FFFFFH这16个字节单元保留给 系统的初始化代码 当处理器加电或复位( Reset)时,CPU执行的第 条指令就是起始于地址 FFFFOH的 通常是在 FFFFOH处存放一条无条件转移指令, 以转移到系统程序的入口处 ·通用区域用来存储一般的程序指令和数据。由图 4.1可见,它的地址范围为00400H~ FFFEFH
• 从地址FFFF0H~FFFFFH这16个字节单元保留给 系统的初始化代码。 • 当处理器加电或复位(Reset)时,CPU执行的第一 条指令就是起始于地址FFFF0H的。 • 通常是在FFFF0H处存放一条无条件转移指令, 以转移到系统程序的入口处。 • 通用区域用来存储一般的程序指令和数据。由图 4.1可见,它的地址范围为00400H~FFFEFH
公 FFFFFH 专用区 FFFFOH FFFEFH 通用区 00400H 003FFH 专用区 00000H 图41实模式下存储器地址空间
FFFFFH FFFF0H 通用区 专用区 FFFEFH 00400H 003FFH 00000H 专用区 图4.1 实模式下存储器地址空间