分享

Assembly Language(汇编语言)

 经纬之略 2014-04-18

Assembly Language(汇编语言)
专用寄存器(IP,SP,FLAGS)
   
 8086专用寄存器有三个:16位是:IP,SP,FLAGS ;32位是:EIP,ESP,EFAGS

1.指令指针寄存器IPinstruction pointer
   
作用:存放代码段中的偏移地址(IP+读取指令位移长度),然后指向 下一条指令的首地址。它与段寄存器CS联用,以确定下一条指令的物理地址(CS:IP)。这说明计算机IP寄存器控制指令序列的执行流程的。可见其重要性。

2.堆栈指针寄存器SPstack pointer
   
作用:存放栈顶的偏移地址(SP+读取指令位移长度),然后指向新的栈顶地址。它与堆栈寄存器SS联用,以确定堆栈段中某一存储单元的地址。

3.标志寄存器FLAGS
    标志寄存器,又称程序状态寄存器【PWS→program status word】,它是存放条件码标志,控制标志和系统标志的寄存器。
 32┊31┊┊23┊22┊21┊20┊19┊18┊17┊16┊15┊14┊13---┆12┊11┊10┊9┊8┊7┊6┊5┊4┊3┊2┊1┊0
                                    ID     VIP    VIF   AC  VM   RF  无   NT    IOPL    OF   DF  IF  TF SF ZF    AF   PF  CF
㈠条件码标志位:记录程序运行结果的状态信息。由CPU自动设置,作为条件转移指令的控制条件,故称条件码。有以下6位(红色标记):

进位标志CFcarry flag):FLAGS的第0位。记录无符号操作数运算时最高有效位(D7,D15)的进位值(或借位值),有进位或借位,则CF=1,用CY表示。无进位或借位,则CF=0,用NC表示。

奇偶标志PFparity flag):
FLAGS的第2位。记录操作数运算结果中1的个数为偶数时,则PF=1,用PE表示,运算结果中1的个数为奇数时,则PF=0,用PO表示。提示:只判断低8位AL中的结果。

辅助进位标志AFauxiliary carry flag):
FLAGS的第4位用于BCD码判断,记录第3位(半个字节)产生的进位值,有进位时,则AF=1,用AC表示,无进位时,则AF=0,用NA表示。

零标志ZFzero flag):FLAGS的第6位。记录操作数运算结果为0时,则ZF=1,用ZR表示,运算结果非0时,则ZF=0,用NZ表示。

符号标志SFsign flag):FLAGS的第7位。记录有符号操作数运算时结果为负时,则SF=1,用NG表示,结果为正时,则SF=0,用PL表示。

溢出标志OFoverflow flag):FLAGS的第11位记录有符号操作数运算结果时超出寄存器存储范围发生溢出时则OF=1,用OV表示,无溢出时,则OF=0,用NV表示。

㈡控制标志位DFdirection flag也就是方向标志,在串处理指令中,处理信息的方向用。当DF=1时,用DN表示,每次操作控制变址寄存器SI,DI递减,使串处理从高地址向低地址方向处理;当DF=0时,用UP表示,每次操作控制SI,DI递增,使串处理从低地址向高地址方向处理。

㈢系统标志可用于I/O,可屏蔽中断,程序调试,任务切换和系统工作方式等的控制。

陷阱标志TFtrap flag):
FLAGS的第8位。用于调试时的单步方式操作。当TF=1时,每条指令执行完后产生陷阱,由系统控制计算机;当TF=0时,CPU正常工作,不产生陷阱。

中断标示IF(interrupt flag):FLAGS的第9位当IF=1时,允许CPU响应可屏蔽中断请求,否则关闭中断。

I/O特权级IOPLI/O privilege level ):
FLAGS的第12,13位。在保护模式下,用于对控制对I/O地址空间的访问。提示:I/O指令中使用的寄存器必须是AL或AX。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多