文档详情

linux ch02.ppt

发布:2015-09-15约6.64千字共48页下载文档
文本预览下载声明
奇偶标志PF(Parity Flag) 当运算结果最低字节中“1”的个数为零或偶数时,PF=1;否则PF=0 举例 8位二进制数相加: 01111100 “1”的个数为5个:PF=0 8位二进制数相加: 01111100=[1 “1”的个数为0个:PF=1 结果 进位 仅最低8位“1”的个数 辅助进位标志AF (Auxiliary Carry Flag) 加减运算低半字节有进位或借位时,AF=1;否则AF=0。 这个标志主要由微处理器内部使用,用于十进制算术运算指令中,用户一般不必关心 状态标志举例 例2-1 0x3A+0x7C=0xB6 CF=0 OF=1 ZF=0 SF=1 PF=0 例2-2 0xFF+0x01=0x00 CF=1 OF=0 ZF=1 SF=0 PF=1 例2-3 0x0034-0x9012=0x8022 CF=1 OF=0 ZF=0 SF=0 PF=1 2 控制标志 控制标志位可由程序根据需要用指令设置,用于控制处理器执行指令的方式 方向标志DF(Direction Flag) 仅用于串操作指令,控制地址的变化方向 设置DF=0,每次串操作后的存储器地址就自动增加,即从低地址向高地址处理数据串 设置DF=1,每次串操作后的存储器地址就自动减少,即从高地址向低地址处理数据串 执行CLD指令设置DF=0 执行STD指令设置DF=1 中断允许标志IF (Interrupt-enable Flag) 用于控制外部可屏蔽中断是否可以被处理器响应 设置IF=1,则允许中断 设置IF=0,则禁止中断 执行CLI指令设置IF=0 执行STI指令设置IF=1 陷阱标志TF(Trap Flag) 也常称为单步标志。用于控制处理器是否进入单步操作方式 设置TF=1,处理器单步执行指令:即处理器在每条指令执行结束时,便产生一个内部中断。这种内部中断称为单步中断 设置TF=0,处理器正常工作。 2.2.2 浮点及多媒体寄存器 浮点寄存器用于协助完成处理浮点数的指令操作 对程序员来说,组成浮点执行环境的寄存器主要是8个通用数据寄存器和几个专用寄存器,它们是状态寄存器、控制寄存器、标记寄存器 MMX寄存器实际上是借用8个浮点数据寄存器实现的,但却是随机存取的 示意图 浮点寄存器示意图 返回 2.3.1 数据的存储格式 物理存储器以字节为基本存储单位,一个存储单元只能存储一个字节的数据 每个存储单元被分配一个唯一的地址,称为物理地址 字或双字在存储器中占相邻的2个或4个存储单元,存放时,低字节存入低地址,高字节存入高地址 这种“低对低,高对高”的存储形式,被称为“小端方式” 数据存储格式举例 例2-4 在0x1000开始的存储单元依次存放的字节是0x12,0x34,0x56,0x78,如图2-7所示。分别以字节、字和双字访问存储单元,其结果如何? 2.3.2 存储器的分段管理 Intel公司从8086开始采用分段的方式管理存储器 其实,内存并没有分段,段的划分来自于CPU,它把内存和程序分成若干个段,是用分段的方式来管理内存 逻辑地址和物理地址 采用分段方法管理存储器,某个存储单元的位置就可以用“段基地址∶偏移地址”指明,这就是程序设计时采用的逻辑地址(Logical Address) 在微处理器地址总线上输出的地址称为物理地址(Physical Address) 一个存储单元可以有多个逻辑地址,但只有一个唯一的物理地址 逻辑地址与物理地址 108 208 308 106 206 306 107 207 307 109 209 309 110 105 104 103 102 101 210 205 204 203 202 201 310 305 304 303 302 301 08 18 28 06 16 26 07 17 27 09 19 29 10 05 04 03 02 01 20 15 14 13 12 11 30 25 24 23 22 21 逻辑地址=相对地址:205(2层05号房间) 物理地址=绝对地址:15(第15号房间) 基本段 编写应用程序时,涉及三类基本段: 代码段(Code Segment):存放指令代码 程序的指令代码必须安排在代码段 数据段(Data Segment):存放数据 程序的数据默认存放在数据段 数据也可放在其他段 堆栈段(Stack Segment):堆栈区域 程序使用的堆栈一定在堆栈段 基本段的逻辑地址 代码段(Code Segment) 段基地址:代码段寄存器CS指示 偏移地址:指令指针寄存器EIP保存 数据段(Data Segment) 段基地址:
显示全部
相似文档