ICS汇编学习笔记——8086中的寄存器

  1. 程序执行两大部件:总线接口单元(BIU) 执行单元(EU)
    指令和数据都在内存中
    BIU与EU是并行执行的
    BIU负责取指令和存取操作数
    EU负责译码和指令的执行

  2. 8086的8个16位通用寄存器
    AX, BX, CX, DX
    SI, DI, BP, SP

  3. 4个数据寄存器
    AX——累加器,使用频度最高,用于算术、逻辑运算以及与外设传送信息等;
    BX——基址寄存器,常用做存放存储器地址;数组首地址。
    CX——计数器,作为循环和串操作等指令中的隐含计数器;
    DX——数据寄存器,常用来存放双字长数据的高16位,或存放外设端口地址。

  4. 2个变址寄存器
    SI是源变址寄存器
    DI是目的变址寄存器
    串操作类指令中,SI和DI具有特别的功能

  5. 2个指针寄存器
    SP为堆栈指针寄存器,指示栈顶的偏移地址
    SP不能再用于其他目的,具有专用目的
    BP为基址指针寄存器,表示数据在堆栈段中的基地址
    SP和BP寄存器与SS段寄存器联合使用以确定堆栈段中的存储单元地址

  6. 指令指针IP
    指令指针寄存器IP,指示代码段中指令的偏移地址(相当于程序计数器PC)
    它与代码段寄存器CS联用,确定下一条指令的物理地址
    计算机通过CS : IP寄存器来控制指令序列的执行流程
    IP寄存器是一个专用寄存器(区别于通用寄存器)
    EIP始终存放下一条要被CPU执行的指令的地址。
    有些机器指令可以修改EIP,使程序分支转移到新的地址执行。例如:JMP, RET

  7. 标志寄存器
    进位标志CF(Carry Flag): 当运算结果的最高有效位有进位(加法)或借位(减法)时,进位标志置1,即CF = 1;否则CF = 0。
    零标志ZF(Zero Flag): 若运算结果为0,则ZF = 1;否则ZF = 0
    符号标志SF(Sign Flag):运算结果最高位为1,则SF = 1;否则SF = 0
    ICS汇编学习笔记——8086中的寄存器
    奇偶标志PF(Parity Flag):当运算结果最低字节中"1"的个数为零或偶数时,PF = 1;否则PF = 0
    溢出标志OF(Overflow Flag):若算术运算的结果有溢出,则OF=1;否则 OF=0
    注:"溢出标志"在有符号运算中有意义,"进位"在无符号运算中有意义
    辅助进位标志AF(Auxiliary Carry Flag):运算时D3位(低半字节)有进位或借位时,AF = 1;否则AF = 0。用户一般不必关心。
    方向标志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=0,处理器正常工作;设置TF=1,处理器单步执行指令。

  8. 4个段寄存器
    CS(代码段)指明代码段的起始地址
    SS(堆栈段)指明堆栈段的起始地址
    DS(数据段)指明数据段的起始地址
    ES(附加段)指明附加段的起始地址

上一篇:关于Hirschmann的Classic Platform Switches设备漏洞的情况通报


下一篇:varchar类型存储英文和汉字占用的字节和字符数