九月第二周总结

  1. 一般情况下,寄存器默认组合:
    ds:si es:di
    在没声明段寄存器的情况下,按照默认组合寻址,但是如果想要指定特定的段寄存器,需要使用 seg cs

  2. CLI禁止中断发生,STI允许中断发生
    这两个指令只能在内核模式下执行,不可以在用户模式下执行;而且在内核模式下执行时,应该尽可能快的恢复中断,因为CLI会禁用硬件中断,若长时间禁止中断会影响其他动作的执行(如移动鼠标等等),系统就会变得不稳定。在标志寄存器中中断标志清零的情况下,可以以“int  ××”的形式调用软中断。

  3. CLD与STD是用来操作方向标志位DF(Direction Flag)。CLD使DF复位,即DF=0,STD使DF置位,即DF=1.

  4. ROL和ROR指令
    循环左移/右移指令只是移位方向不同,它们移出的位不仅要进入CF,而且还要填补空出的位。
    例如:
             MOV AL,82H
             ROL AL,1

      首先把82H转换成二进制数10000010B
      循环左移1位后变成:00000101B,换算成十六进制数便是05H
      循环右移1位后变成:01000001B,换算成十六进制数便是41H

  1. Test命令将两个操作数进行逻辑与运算,并根据运算结果设置相关的标志位。

  2. 影响标志寄存器的指令大都是进行逻辑算数运算的指令,如add、sub、mul等
    有的指令对标志寄存器的执行没有影响,传送指令:如mov,push,pop等

  3. 汇编语言中用3个概念来表达数据的位置:
    立即数(idata)、寄存器、段地址(SA)和偏移地址(EA)

  4. 启动引导时内核在内存中的位置和移动后的位置情况

  5. 在保护模式下,jmpi 0,8不再像实模式下,直接将ip置为0,cs置为8,然后cs左移4位+ip,而是采用在gdt表中查询翻译加上ip
    比如:
jmpi 0,8

需要在gdt表中8的位置,找出地址翻译,然后加上偏移量0,最后得出真正的物理地址,这是保护模式与实模式不同的地方。

  1. 内嵌汇编的格式
    asm(
    汇编语言模板:
    输出部分:
    输入部分:
    破坏描述部分
    )
    汇编语言模板必不可少,其他三个可选.
  2. OF
    针对有符号数,当结果用原来的寄存器无法表示的时候,OF置为1

猜你喜欢

转载自www.cnblogs.com/zhaijiayu/p/11516834.html
今日推荐