【例1】什么是“程序可见”可见的寄存器?
解:程序可见寄存器指在用户程序中用到的寄存器,他们由指令来指定。
【例2】80x86微处理器的 基本结构寄存器组 包括哪些寄存器?各有何用途?
解:
1)通用寄存器
存放操作数或用作地址指针。32位处理器是EAX(加个E这样),16位处理器是AX,AX高8位和低8位可分为两个8位寄存器AH和AL。
(1)数据寄存器
EAX(算术运算的主要寄存器,操作数和结果数据的累加器)
EBX(常用作基址寄存器,作为DS段的数据指针)
ECX(串和循环操作的计数器)
EDX(I/O指针,也常用于数据寄存)
(2)指针及变址寄存器
ESI(DS段的数据指针,串操作的源指针)
EDI(ES段的数据指针,串操作的目标指针)
ESP(栈顶指针(SS段中),存放栈顶地址)
EBP(SS段数据指针(不一定指向栈顶))
2)段寄存器
6个16位段寄存器,段寄存器存放段基址或选择子(在实地址模式下存放段基址,保护模式下存放选择子)
CS(代码段寄存器)
DS(数据段寄存器)
SS(堆栈段寄存器)
ES(附加段寄存器)
FS和GS(80386以上才有)
3)控制寄存器
EIP(指令指针):存放将要执行的下一条指令的偏移地址。
FLAGS(标志寄存器):存放条件码标志、控制标志和系统标志。
【例3】80x86微处理器 标志寄存器 中的各标志位有什么意义?
解:
1)条件码标志
进位标志(CF):在进行算术运算时,如果最高位(对字操作是第15位,对字节操作是第7位)产生进位或借位,则CF置1,否则置0。在移位指令中,CF用来存放移出的代码(0或1)。这个标志常用于指示无符号数溢出和多字节数的加减运算。
奇偶标志(PF):当操作结果的最低位字节中1的个数为偶数时置1,奇数置0。用来为机器中传送信息时可能产生的代码出错情况提供检验条件。
辅助进位标志(AF):在进行算术运算时,如果低字节中的低4位(第3位向第4位)产生进位或借位,则AF置1,否则置0.AF主要用于BCD码十进制运算的矫正。
零标志(ZF):进行算数或逻辑运算时,如果结果为0,则ZF置1,否则ZF置0。
符号标志(SF):其值等于运算结果的最高位。如果把指令执行结果看作带符号数,那么结果为负,SF置1;结果为正,SF置0。
溢出标志(OF):进行符号数和算术运算时,如果运算结果超出补码表示数的范围N,即溢出时,则OF置1,否则OF置0。对无符号数操作时,则可以忽略此标志。
2)控制标志
方向标志(DF):用于串操作指令中控制处理信息的方向。即当DF为1,每次操作使变址寄存器SI和DI减小,使串操作从高地址向低地址方向处理;当DF为0,则使SI和DI增大,使串操作从低地址向高地址方向处理。
3)系统标志
(十位系统标志,在此不列举)
【例4】画出示意图,简述 实地址模式 下存储器寻址的过程。
【例5】画出示意图,简述 保护模式 下存储器寻址的过程。
【例6】比较 实地址模式 和 保护模式 下逻辑地址的异同。
相同点:逻辑地址均由存放于16位段寄存器的信息和偏低地址组成。
不同点:实地址模式下,段寄存器当中存放的是段基址,偏移地址为16位;保护模式下,段寄存器当中存放的是选择子,偏移地址为32位。