• <自己动手写操作系统>2011040101


    【分析】

    部分代码:
    LABEL_SEARCH_IN_ROOT_DIR_BEGIN:

        cmp    word [wRootDirSizeForLoop], 0    ; ┓

        jz    LABEL_NO_LOADERBIN                  ; ┣ 判断根目录区是不是已经读完,如果读完表示没有找到 LOADER.BIN跳转到LABEL_NO_LOADERBIN

        dec    word [wRootDirSizeForLoop]        ; ┛

    学习指令:   
    CMP
    功能: 比较OP1与OP2的值
    语法: CMP r/m,r/m/data
    标志位: C,P,A,Z,O

    JMP
    功能: 跳往指定地址执行
    语法: JMP 地址

    JXX
    功能: 当特定条件成立则跳往指定地址执行
    语法: JXX 地址
    注:
      A: ABOVE,当C=0,Z=0时成立
      B: BELOW,当C=1时成立
      C: CARRY,当弁时成立 CXZ: CX寄存器的值为0(ZERO)时成立
      E: EQUAL,当Z=1时成立
      G: GREATER(大于),当Z=0且S=0时成立
      L: LESS(小于),当S不为零时成立
      N: NOT(相反条件),需和其它符号配合使用
      O: OVERFLOW,O=1时成立
      P: PARITY,P=1时成立
      PE: PARITY EVEN,P=1时成立
      PO: PARITY ODD,P=0时成立
      S: SIGN,S=1时成立
      Z: ZERO,Z=1时成立

    INC,DEC
    功能: 把OP的值加一或减一
    语法: INC OP DEC OP
    格式: INC r/m DEC r/m
    影响标志: P,A,Z,S,O  
     

    在此份代码中,采用nasm编译,在debug中,需要看到JZ对应Zero位{NZ表示Z=0,ZR标志Z=1}
    在本地测试情况,显示执行cmp    word [wRootDirSizeForLoop], 0后出现ZR标志,意味着没有找到Loader.bin文件,直接跳转LABEL_NO_LOADERBIN到显示信息的代码去了

    如果Z=0呢?
    执行dec    word [wRootDirSizeForLoop],表示此字数据减一操作,从而影响标志位Z。

    后面的代码模拟不好测试,现在只能自个阅读和分析下面的处理。
    今天的学习到此Over了
  • 相关阅读:
    Common Words
    The end of other
    避免ssh断开导致运行命令的终止:screen
    Check iO:初学Python
    linux环境c++开发:ubuntu12.04使用llvm3.4.2
    boost库使用:仿SGI-STL实现的一个树节点allocator
    boost库使用:vs2013下boost::container::vector编译出错解决
    读论文系列:Nearest Keyword Search in XML Documents中使用的数据结构(CT、ECT)
    房产律师咨询
    E文阅读
  • 原文地址:https://www.cnblogs.com/GoGoagg/p/2002074.html
Copyright © 2020-2023  润新知