汇编语言知识点复习
第一章
重点内容:1.3 内存及存储器访问
逆序存储:高位在前,低位在后。
存储器基本概念:
字节:存取信息的基本单位,4个比特位。
字:一个字16位,占用两个存储单元。
双字:一个双字32位,占用四个存储单元。
存储顺序:
- 大端存储:高字节存储在低地址,低字节存储在高地址。
- 小端存储:低字节存储在低地址,高字节存储在高地址。
逆序存放:低地址中存放低位字节数据,高地址中存放高位字节数据。
LSB:最低有效位;LSB=0,意味着最低有效位是0。
数据表示:不要写01 FD,否则会认为是一个变量,要写成0FD。
了解掌握内容:1.1 微处理器及其性能指标、芯片组、接口等
主频:主频也叫时钟频率,表示在CPU内数字脉冲信号振荡的速度。
外频:是CPU与主板之间同步运行的速度。
倍频:指CPU和系统总线之间工作频率相差的倍数。
计算公式:主频 = 外频 * 内频
习题:2条DDR 400内存条,工作在200MHz频率下,每个时钟可以传送2次64位数据,求单/双通道带宽。
- 答案:
- 单通道:
- 每个时钟周期传输128位数据;
- 数据传输速率:DDR 400意味着每秒可以进行400MT。
- 公式:$$\text{带宽} = \text{数据传输速率} \times \text{每个时钟周期传输的数据量}$$
- $\text{带宽} = 400 \times 10^6 \times 128 , \text{bit/s}$
- $\text{带宽} = 51.2 , \text{Gbps}$
- 双通道:
- $$\text{双通道带宽} = 2 \times \text{单通道带宽} = 2 \times 51.2 , \text{Gbps} = 102.4 , \text{Gbps}$$
习题: 1.7-10
第二章
重点内容:2.2 CPU工作模式
实模式:
- 兼容8086,寻址机制、中断处理机制均和8086相同。
- 只使用低20位地址线,寻址空间为220 = 1MB地址空间。
- 采用分段式内存管理,物理地址形成为16位“段首址:偏移”。段最大为216 = 64KB。
- 32位CPU加电或者复位后处于实模式。
- 不支持硬件上的多任务切换。
- 不支持特权级。
- 存储器保留两个专用区:
- 初始化程序区:FFFF0H~FFFFFH,存放进入ROM引导程序的一条跳转指令;
- 中断向量表区:00000H~003FFH,在这1K字节的存储空间中存放256个中断服务程序的入口地址,每个入口地址占4个字节,这与8086的情形相同。
保护模式:
- 支持多任务和特权级 。
- 支持内存分页机制,提供段式和页式内存管理功能。
- 物理寻址空间高达2^32 = 4GB(80386/80486)或2^36 = 64GB(Pentium及以上CPU)。
- 引入虚拟存储器的概念,以扩充编程者所使用的地址空间,段内偏移地址32位,每个段最大2^32B=4GB,每个程序最多可以使用16K个段,理论上的虚拟地址空间为4GB×16K=64TB。
- 提供了一系列的保护机制,如任务地址空间的隔离,设置特权级,设置特权指令,进行访问权限(如只读、只执行)及段限检查等。
虚拟8086模式: - 兼容8086程序,又称“V86模式”。
- V86模式以任务的形式在保护模式上执行。操作系统中有专门的V86管理程序。
- 采用模拟的方法实现特权指令。
通过修改控制寄存器CR0的控制位PE(位0)来实现从实模式切换到保护模式。
特权级:
- 特权级 0:最高特权级,内核模式。操作系统核心部分运行在这个模式。
- 特权级 1:较低的特权级,通常用于设备驱动程序等。
- 特权级 2:比 Ring 1 权限更低,可能用于一些系统服务。
- 特权级 3:最低特权级,用户模式。用户应用程序通常在此模式下运行。
重点内容:2.3 寄存器
通用寄存器
- AX:累加器,乘法、除法运算等指令的专用寄存器。
- BX:保存数据,可用作基址寄存器。
- CX:保存数据,计数值,80386以上CPU也可用于访问存储器的偏移地址。
- DX:保存数据,乘法、除法运算指令的专用寄存器,80386以上CPU也可用于访问存储器的偏移地址。
- BP:保存访问存储单元时的偏移地址。
标志寄存器有效位含义
- CF:进位标志;结果最高位产生进位或借位,CF=1,否则CF=0。
- ZF:零标志;当运算结果为零时,ZF=1,否则ZF=0。
- SF:符号标志;SF=0时结果为正数,SF=1时结果为负数。
- OF:溢出标志;当其运算结果超出表达范围,OF=1,否则OF=0。
- IF:中断允许标志;IF=1,允许CPU接收外部中断请求,否则屏蔽外部中断请求。
- DF:方向标志;字符串操作指令,DF=0,串操作为自动增址,DF=1,串操作为自动减址。
保护模式:
- 全局描述符表寄存器GDTR:
- 高32位基址指出GDT在物理存储器中存放的基地址;
- 低16位限长+1=全局描述符表的字节大小;
-每个GDT最多含有8192个描述符(8192×8=64KB)。GDT可以在内存的任意位置,用LGDT把描述符表的起始位置装入GDTR。
- 中断IDTR:
- 最低16位是限长,给出中断描述符表IDT的字节大小(即限长+1);
- 其高32位是基址,指出IDT在物理存储器中存放的基地址;
- IDT中保存的是中断门描述符,每个门描述符包含8字节,IDT最多包含256个门描述符,因为CPU最多支持256个中断;
- 局部LDTR:
- 16位选择符
- 任务TR:
- 16位选择符;
- 作用是选中TSS描述符。
- 初值由软件装入,当执行任务切换指令时TR的内容自动修改。
- 任务状态寄存器TSS:
- 每一个任务都有一个任务状态段TSS,由TSS描述符描述。从GDT中检索出TSS描述符后,微处理器自动将TSS描述符装入TSS Cache中。
- 段选择符:
- 段寄存器中的16位内容;
- 用于在段描述符表(GDT或LDT)中选择段描述符;
- TI:表指示符;为0时,从GDT中选择描述符;为1时,从LDT中选择描述符。
- RPL:请求特权级,2位二进制数字,范围为0~3。00代表特权级0,01代表特权级1,10代表特权级2,11代表特权级3。
重点内容:2.4 内存管理
实模式分段管理
- 对段基址的限定:只要工作在实模式,段基址必须定位在地址为16的整数倍上,这种段起始边界通常称做节或小段。
- 对段长的限定:在实模式下段长不能超过64K。
实模式存储器寻址
微处理器只可以寻址最低的1M字节。
实模式下20位物理地址的计算
- 采用分段管理后,其物理地址的计算方法为:10H×段基址+偏移量
- *简便的计算方法:因为段基址和偏移量一般用十六进制数表示,直接在段基址的最低位补以0H,再加上偏移量。
保护模式下的段描述符
- 段描述符用于描述代码段、数据段和堆栈段。
- 段描述符位于GDT或LDT中,占8字节,由以下几个部分组成:段基址(32位)、限长(20位)、访问权限(8位)和属性(4位)。
- DPL是描述符特权级,它表明了什么样的特权级程序可以使用这个段。
- 特权级检查:程序只能访问特权级相同或较低的数据。
- 页式存储:每页4K
虚拟地址到物理地址的转换
- 线性地址(32位)=段基址+偏移量(16bit段选择符+32位offset);
- 接着确认是否允许分页,分页情况下,物理地址=页基址+偏移量;不允许,物理地址=线性地址。
PDBR
- 页目录基址寄存器PDBR,它的高20位用于保存页目录表的起始物理地址的高20位。
- 分页机制:10bit页目录索引+10位页表索引+12bit页面索引
了解内容:2.5 任务
任务状态段TSS
- 在多任务环境下,每个任务都有属于自己的任务状态段TSS,TSS中包含启动任务所必需的信息,如用户可访问的寄存器等。
- 任务状态段TSS在存储器的基地址和限长由TSS描述符指出。
- TSS描述符必须放在全局描述符表GDT中,TR内容为选择符,它指出TSS描述符在GDT中的位置。TSS描述符说明各TSS的位置和限长。
门(系统描述符;调用门;任务门)
- 系统描述符:门描述符描述控制转移的入口点,属于系统描述符。
ì2.6 保护
n数据访问的保护;对程序的保护;对输入输出的保护
n数据访问:DPL ≥ MAX(CPL, RPL); CPL是当前正在运行的程序的
特权级(CS);DPL是描述符特权级;RPL是请求特权级。
n段间调用或跳转,需要检查限长,特权级CPL和DPL
•CPL=DPL,允许跳转和调用。CPL<DPL,禁止。CPL>DPL,此时要检查
段描述符的C位。如果C位为1,表示这是一致代码段,允许跳转和调用。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 SEER's Study!